mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
mmc: dw_mmc: Regression fix for non-IDMAC DMA
3ec7699d3bb1b0ee7 ("mmc: dw_mmc: Add support for pre_req and post_req") broke non-IDMAC DMA, because dw_mci_pre_dma_transfer() is valid only if using internal DMA. In case of using other DMA it returns -ENOSYS. It prevents the DMA operations. This patch makes dw_mci_pre_dma_transfer() effective in all DMA cases again. Reported-by: James Hogan <james@albanarts.com> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com> Reviewed-by: Namjae Jeon <linkinjeon@gmail.com> Acked-by: James Hogan <james.hogan@imgtec.com> Signed-off-by: Chris Ball <cjb@laptop.org>
This commit is contained in:
parent
9beee912a3
commit
885c3e800c
@ -429,6 +429,15 @@ static int dw_mci_idmac_init(struct dw_mci *host)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct dw_mci_dma_ops dw_mci_idmac_ops = {
|
||||
.init = dw_mci_idmac_init,
|
||||
.start = dw_mci_idmac_start_dma,
|
||||
.stop = dw_mci_idmac_stop_dma,
|
||||
.complete = dw_mci_idmac_complete_dma,
|
||||
.cleanup = dw_mci_dma_cleanup,
|
||||
};
|
||||
#endif /* CONFIG_MMC_DW_IDMAC */
|
||||
|
||||
static int dw_mci_pre_dma_transfer(struct dw_mci *host,
|
||||
struct mmc_data *data,
|
||||
bool next)
|
||||
@ -468,22 +477,6 @@ static int dw_mci_pre_dma_transfer(struct dw_mci *host,
|
||||
return sg_len;
|
||||
}
|
||||
|
||||
static struct dw_mci_dma_ops dw_mci_idmac_ops = {
|
||||
.init = dw_mci_idmac_init,
|
||||
.start = dw_mci_idmac_start_dma,
|
||||
.stop = dw_mci_idmac_stop_dma,
|
||||
.complete = dw_mci_idmac_complete_dma,
|
||||
.cleanup = dw_mci_dma_cleanup,
|
||||
};
|
||||
#else
|
||||
static int dw_mci_pre_dma_transfer(struct dw_mci *host,
|
||||
struct mmc_data *data,
|
||||
bool next)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
#endif /* CONFIG_MMC_DW_IDMAC */
|
||||
|
||||
static void dw_mci_pre_req(struct mmc_host *mmc,
|
||||
struct mmc_request *mrq,
|
||||
bool is_first_req)
|
||||
|
Loading…
Reference in New Issue
Block a user