linux/include
Addy Ke 909a801f21 BACKPORT: FROMLIST: mmc: dw_mmc: introduce timer for broken command transfer over scheme
Per the databook of designware mmc controller 2.70a, table 3-2, cmd
done interrupt should be fired as soon as the the cmd is sent via
cmd line. And the response timeout interrupt should be generated
unconditioinally as well if the controller doesn't receive the resp.
However that doesn't seem to meet the fact of rockchip specified Soc
platforms using dwmmc. We have continuously found the the cmd done or
response timeout interrupt missed somehow which took us a long time to
understand what was happening. Finally we narrow down the root to
the reconstruction of sample circuit for dwmmc IP introduced by
rockchip and the buggy design sweeps over all the existing rockchip
Socs using dwmmc disastrously.

It seems no way to work around this bug without the proper break-out
mechanism so that we seek for a parallel pair the same as the handling
for missing data response timeout, namely dto timer. Adding this cto
timer seems easily to handle this bug but it's hard to restrict
the code under the rockchip specified context. So after merging this
patch, it sets up the cto timer for all the platforms using dwmmc IP
which isn't ideal but at least we don't advertise new quirk here.
Fortunately, no obvious performance regression was found by test and the
pre-existing similar catch-all timer for sdhci has proved it's an acceptant
way to make the code as robust as possible.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=196321
Signed-off-by: Addy Ke <addy.ke@rock-chips.com>
Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
[shawn.lin: rewrite the code and the commit msg throughout]
Change-Id: I47238c9758fe74b98a1dd3939f22e569261e696f
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
(cherry picked from https://patchwork.kernel.org/patch/9834331/)
2017-07-12 19:28:06 +08:00
..
acpi
asm-generic Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2017-05-06 14:23:00 +08:00
clocksource arm64: KVM: Implement timer save/restore 2016-11-09 22:15:41 +08:00
crypto Merge branch 'linux-linaro-lsk-v4.4' into linux-linaro-lsk-v4.4-android 2017-04-23 12:02:14 +08:00
drm drm: bridge: dw-hdmi: delete phy ops read/write 2017-07-12 19:20:06 +08:00
dt-bindings arm: dts: rk3288: add dfi and dmc device nodes 2017-06-29 09:49:17 +08:00
keys
kvm KVM: arm/arm64: vgic-v3: Make the LR indexing macro public 2016-11-09 22:15:40 +08:00
linux BACKPORT: FROMLIST: mmc: dw_mmc: introduce timer for broken command transfer over scheme 2017-07-12 19:28:06 +08:00
math-emu
media isp10: rockchip: v0.1.6 2016-11-29 21:11:43 +08:00
memory
misc misc: rockchip-scr: add rockchip SOC smart card reader controller driver. 2016-03-21 11:03:15 +08:00
net Merge branch 'linux-linaro-lsk-v4.4' into linux-linaro-lsk-v4.4-android 2017-05-25 10:05:41 +08:00
pcmcia
ras
rdma RDMA/core: Fix incorrect structure packing for booleans 2017-03-12 06:37:29 +01:00
rxrpc
scsi scsi: libiscsi: add lock around task lists to fix list corruption regression 2017-03-26 12:13:19 +02:00
soc soc: rockchip: introduce system status notifier 2017-06-26 17:56:39 +08:00
sound ASoC: codec: hdmi-codec: add support for audio mode config 2017-04-13 19:19:08 +08:00
target target: Convert ACL change queue_depth se_session reference usage 2017-05-20 14:26:58 +02:00
trace Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux-linaro-stable.git 2017-05-06 14:23:00 +08:00
uapi UPSTREAM: drm: introduce pipe color correction properties 2017-07-07 19:09:13 +08:00
video video: rockchip: screen: add refresh mode for cmd mode screen 2016-10-26 16:54:56 +08:00
xen xen: Fix page <-> pfn conversion on 32 bit systems 2016-05-11 11:21:14 +02:00
Kbuild