mmc: block: Add new ioctl to send multi commands
authorJon Hunter <jonathanh@nvidia.com>
Tue, 22 Sep 2015 09:27:53 +0000 (10:27 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 26 Oct 2015 15:00:00 +0000 (16:00 +0100)
commita5f5774c55a2e3ed75f4d6c5556b7bfcb726e6f0
tree59d6825b63a06eb28f83cce482df405f5228e3ac
parentaaa58d0e932c518bdb1d9dc767876d7a8c68e17e
mmc: block: Add new ioctl to send multi commands

Certain eMMC devices allow vendor specific device information to be read
via a sequence of vendor commands. These vendor commands must be issued
in sequence and an atomic fashion. One way to support this would be to
add an ioctl function for sending a sequence of commands to the device
atomically as proposed here. These multi commands are simple array of
the existing mmc_ioc_cmd structure.

The structure passed via the ioctl uses a __u64 type to specify the number
of commands (so that the structure is aligned on a 64-bit boundary) and a
zero length array as a header for list of commands to be issued. The
maximum number of commands that can be sent is determined by
MMC_IOC_MAX_CMDS (which defaults to 255 and should be more than
sufficient).

This based upon work by Seshagiri Holi <sholi@nvidia.com>.

Signed-off-by: Seshagiri Holi <sholi@nvidia.com>
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/card/block.c
include/uapi/linux/mmc/ioctl.h