summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorZiyuan Xu <xzy.xu@rock-chips.com>2018-04-05 18:34:03 +0800
committerTao Huang <huangtao@rock-chips.com>2018-04-11 16:51:53 +0800
commit75e03927eee6cca1c0878e579b4876544e770179 (patch)
tree9d619d4665ded87a95700ecfb778f5322852453e /include
parent0f160e2bd22f77cb33020a72d016123c5faaee91 (diff)
mmc: dw_mmc: add xfer timer for avoid DTO without actual data payload
It has proved the controller has a potention broken state with a DTO interrupt comes while the data payload is missing, which was not covered by current software state machine. Add a xfer timer to work around this buggy behaviour introduced by broken design. Change-Id: I5019c5ba0cdeb59adcdd3a5231a2000b448762bc Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/mmc/dw_mmc.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h
index 1accb8ca4fde..0cf1b2a2161b 100644
--- a/include/linux/mmc/dw_mmc.h
+++ b/include/linux/mmc/dw_mmc.h
@@ -223,6 +223,7 @@ struct dw_mci {
struct timer_list cmd11_timer;
struct timer_list cto_timer;
struct timer_list dto_timer;
+ struct timer_list xfer_timer;
};
/* DMA ops for Internal/External DMAC interface */
@@ -247,6 +248,7 @@ struct dw_mci_dma_ops {
#define DW_MCI_QUIRK_BROKEN_CARD_DETECTION BIT(3)
/* Timer for broken data transfer over scheme */
#define DW_MCI_QUIRK_BROKEN_DTO BIT(4)
+#define DW_MCI_QUIRK_BROKEN_XFER BIT(5)
struct dma_pdata;