diff options
author | Ziyuan Xu <xzy.xu@rock-chips.com> | 2018-04-05 18:34:03 +0800 |
---|---|---|
committer | Tao Huang <huangtao@rock-chips.com> | 2018-04-11 16:51:53 +0800 |
commit | 75e03927eee6cca1c0878e579b4876544e770179 (patch) | |
tree | 9d619d4665ded87a95700ecfb778f5322852453e /include | |
parent | 0f160e2bd22f77cb33020a72d016123c5faaee91 (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.h | 2 |
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; |