@@ -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)
@@ -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;