• Christoph Fritz's avatar
    mmc: core: apply NO_CMD23 quirk to some specific cards · 91516a2a
    Christoph Fritz authored
    To get an usdhc Apacer and some ATP SD cards work reliable, CMD23 needs
    to be disabled.  This has been tested on i.MX6 (sdhci-esdhc) and rk3288
    (dw_mmc-rockchip).
    
    Without this patch on i.MX6 (sdhci-esdhc):
    
     $ dd if=/dev/urandom of=/mnt/test bs=1M count=10 conv=fsync
    
        | <mmc0: starting CMD23 arg 00000400 flags 00000015>
        | mmc0: starting CMD25 arg 00a71f00 flags 000000b5
        | mmc0:     blksz 512 blocks 1024 flags 00000100 tsac 3000 ms nsac 0
        | mmc0:     CMD12 arg 00000000 flags 0000049d
        | sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
        | mmc0: Timeout waiting for hardware interrupt.
    
    Without this patch on rk3288 (dw_mmc-rockchip):
    
        | mmc1: Card stuck in programming state! mmcblk1 card_busy_detect
        | dwmmc_rockchip ff0c0000.dwmmc: Busy; trying anyway
        | mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz,
        | actual 400000HZ div = 0)
        | mmc1: card never left busy state
        | mmc1: tried to reset card, got error -110
        | blk_update_request: I/O error, dev mmcblk1, sector 139778
        | Buffer I/O error on dev mmcblk1p1, logical block 131586, lost async
        | page write
    Signed-off-by: default avatarChristoph Fritz <chf.fritz@googlemail.com>
    Cc: <stable@vger.kernel.org> # v4.14+
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    91516a2a
card.h 6.2 KB