UPSTREAM mmc_utils: add ffu support

Adding support for field firmware update over multiple command ioctl.
As multiple command ioctl is supported only from kernel 4.4, this patch
should be used against kernel 4.4 and above.

Known issues:
- There is no support for Multiple Block write commands (CMD25) in existing
  IOCTL implementation
- In case MODE_OPERATION_CODES field is not supported by the device
  manual reset of the device/platform is required.
  The reset issue discussed in another email thread - " [RFC 0/6] mmc:
  Field Firmware Update"

Conflicts:
  mmc.c : rename the old ffu command old_ffu.
  mmc.h
  mmc_cmds.c

BUG=b:110793849
CQ-DEPEND=CL:1114458
TEST=On 4.4 eve, check we can upgrade eMMC firmware.

Signed-off-by: Yaniv Agman <yaniv.agman@sandisk.com>
Signed-off-by: Avi Shchislowski <avi.shchislowski@sandisk.com>
Signed-off-by: Chris Ball <chris@printf.net>
(cherry picked from commit 89cd01ed865ac5a2ef3ee86070257d6722900a49)
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>

Change-Id: Ibd91d8a08b3104341e007f81fb27ca7d1783205a
Reviewed-on: https://chromium-review.googlesource.com/1114437
Commit-Ready: Gwendal Grignou <gwendal@chromium.org>
Tested-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
4 files changed