summaryrefslogtreecommitdiff
path: root/block/blk-settings.c
diff options
context:
space:
mode:
authorThomas Hebb <tommyhebb@gmail.com>2021-08-01 04:46:14 -0700
committerUlf Hansson <ulf.hansson@linaro.org>2021-08-24 10:15:33 +0200
commit3ac5e45291f3f0d699a721357380d4593bc2dcb3 (patch)
tree4b1c526be9d76aa945372c31329009430d9020a6 /block/blk-settings.c
parente285b3e064647c6b4b822ade9acb0f3ffd6b1317 (diff)
downloadlinux-3ac5e45291f3f0d699a721357380d4593bc2dcb3.tar.gz
linux-3ac5e45291f3f0d699a721357380d4593bc2dcb3.tar.bz2
linux-3ac5e45291f3f0d699a721357380d4593bc2dcb3.zip
mmc: rtsx_pci: Fix long reads when clock is prescaled
For unexplained reasons, the prescaler register for this device needs to be cleared (set to 1) while performing a data read or else the command will hang. This does not appear to affect the real clock rate sent out on the bus, so I assume it's purely to work around a hardware bug. During normal operation, the prescaler is already set to 1, so nothing needs to be done. However, in "initial mode" (which is used for sub-MHz clock speeds, like the core sets while enumerating cards), it's set to 128 and so we need to reset it during data reads. We currently fail to do this for long reads. This has no functional affect on the driver's operation currently written, as the MMC core always sets a clock above 1MHz before attempting any long reads. However, the core could conceivably set any clock speed at any time and the driver should still work, so I think this fix is worthwhile. I personally encountered this issue while performing data recovery on an external chip. My connections had poor signal integrity, so I modified the core code to reduce the clock speed. Without this change, I saw the card enumerate but was unable to actually read any data. Writes don't seem to work in the situation described above even with this change (and even if the workaround is extended to encompass data write commands). I was not able to find a way to get them working. Signed-off-by: Thomas Hebb <tommyhebb@gmail.com> Link: https://lore.kernel.org/r/2fef280d8409ab0100c26c6ac7050227defd098d.1627818365.git.tommyhebb@gmail.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'block/blk-settings.c')
0 files changed, 0 insertions, 0 deletions