If assume only using one slot, i think that dw_mci_queue_request() need not. Signed-off-by: Jaehoon Chung <jh80.chung@xxxxxxxxxxx> Signed-off-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx --- drivers/mmc/host/dw_mmc.c | 9 +++++++-- include/linux/mmc/dw_mmc.h | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index 882d004..e3f26ea 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -673,8 +673,13 @@ static void dw_mci_request(struct mmc_host *mmc, struct mmc_request *mrq) return; } - /* We don't support multiple blocks of weird lengths. */ - dw_mci_queue_request(host, slot, mrq); + if (host->quirks & DW_MCI_QUIRK_FORCE_ONE_SLOT) { + slot->mrq = mrq; + host->state = STATE_SENDING_CMD; + dw_mci_start_request(host, slot); + } else + /* We don't support multiple blocks of weird lengths. */ + dw_mci_queue_request(host, slot, mrq); } static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h index c0207a7..82f59c2 100644 --- a/include/linux/mmc/dw_mmc.h +++ b/include/linux/mmc/dw_mmc.h @@ -176,7 +176,8 @@ struct dw_mci_dma_ops { #define DW_MCI_QUIRK_HIGHSPEED BIT(2) /* Unreliable card detection */ #define DW_MCI_QUIRK_BROKEN_CARD_DETECTION BIT(3) - +/* Force using only one slot */ +#define DW_MCI_QUIRK_FORCE_ONE_SLOT BIT(4) struct dma_pdata; -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html