diff options
author | Rui Miguel Silva <rui.silva@linaro.org> | 2015-10-15 23:56:51 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@google.com> | 2015-10-19 12:06:44 -0700 |
commit | 10ed1938767ec90a264b73b337ec17a0a674847a (patch) | |
tree | 10d23f1940e29e37c67f77f28c65f99aad83d807 /drivers/staging/greybus/sdio.c | |
parent | 1ec5843ee9889914be80a6763e58a79064716023 (diff) | |
download | linux-10ed1938767ec90a264b73b337ec17a0a674847a.tar.bz2 |
greybus: sdio: send data block details at command request
If SDIO request include data to be transfer send details (data blocks
and block size) in command request, as it seems some controllers need
this info prior to set the registers correctly.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Diffstat (limited to 'drivers/staging/greybus/sdio.c')
-rw-r--r-- | drivers/staging/greybus/sdio.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/staging/greybus/sdio.c b/drivers/staging/greybus/sdio.c index b5e4af379e7b..201cfe534459 100644 --- a/drivers/staging/greybus/sdio.c +++ b/drivers/staging/greybus/sdio.c @@ -373,8 +373,9 @@ out: static int gb_sdio_command(struct gb_sdio_host *host, struct mmc_command *cmd) { - struct gb_sdio_command_request request; + struct gb_sdio_command_request request = {0}; struct gb_sdio_command_response response; + struct mmc_data *data = host->mrq->data; u8 cmd_flags; u8 cmd_type; int i; @@ -427,6 +428,11 @@ static int gb_sdio_command(struct gb_sdio_host *host, struct mmc_command *cmd) request.cmd_flags = cmd_flags; request.cmd_type = cmd_type; request.cmd_arg = cpu_to_le32(cmd->arg); + /* some controllers need to know at command time data details */ + if (data) { + request.data_blocks = cpu_to_le16(data->blocks); + request.data_blksz = cpu_to_le16(data->blksz); + } ret = gb_operation_sync(host->connection, GB_SDIO_TYPE_COMMAND, &request, sizeof(request), &response, |