diff options
| -rw-r--r-- | drivers/mmc/host/sdhci.c | 10 | 
1 files changed, 8 insertions, 2 deletions
| diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 62041c7e9246..fc96f8cb9c0b 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -773,8 +773,14 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_data *data)  	}  	if (!(host->flags & SDHCI_REQ_USE_DMA)) { -		sg_miter_start(&host->sg_miter, -			data->sg, data->sg_len, SG_MITER_ATOMIC); +		int flags; + +		flags = SG_MITER_ATOMIC; +		if (host->data->flags & MMC_DATA_READ) +			flags |= SG_MITER_TO_SG; +		else +			flags |= SG_MITER_FROM_SG; +		sg_miter_start(&host->sg_miter, data->sg, data->sg_len, flags);  		host->blocks = data->blocks;  	} |