lkml.org 
[lkml]   [2017]   [Dec]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 021/178] mmc: core: apply NO_CMD23 quirk to some specific cards
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Christoph Fritz <chf.fritz@googlemail.com>

    commit 91516a2a4734614d62ee3ed921f8f88acc67c000 upstream.

    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: Christoph Fritz <chf.fritz@googlemail.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/mmc/core/card.h | 2 ++
    drivers/mmc/core/quirks.h | 8 ++++++++
    2 files changed, 10 insertions(+)

    --- a/drivers/mmc/core/card.h
    +++ b/drivers/mmc/core/card.h
    @@ -75,9 +75,11 @@ struct mmc_fixup {
    #define EXT_CSD_REV_ANY (-1u)

    #define CID_MANFID_SANDISK 0x2
    +#define CID_MANFID_ATP 0x9
    #define CID_MANFID_TOSHIBA 0x11
    #define CID_MANFID_MICRON 0x13
    #define CID_MANFID_SAMSUNG 0x15
    +#define CID_MANFID_APACER 0x27
    #define CID_MANFID_KINGSTON 0x70
    #define CID_MANFID_HYNIX 0x90

    --- a/drivers/mmc/core/quirks.h
    +++ b/drivers/mmc/core/quirks.h
    @@ -53,6 +53,14 @@ static const struct mmc_fixup mmc_blk_fi
    MMC_QUIRK_BLK_NO_CMD23),

    /*
    + * Some SD cards lockup while using CMD23 multiblock transfers.
    + */
    + MMC_FIXUP("AF SD", CID_MANFID_ATP, CID_OEMID_ANY, add_quirk_sd,
    + MMC_QUIRK_BLK_NO_CMD23),
    + MMC_FIXUP("APUSD", CID_MANFID_APACER, 0x5048, add_quirk_sd,
    + MMC_QUIRK_BLK_NO_CMD23),
    +
    + /*
    * Some MMC cards need longer data read timeout than indicated in CSD.
    */
    MMC_FIXUP(CID_NAME_ANY, CID_MANFID_MICRON, 0x200, add_quirk_mmc,

    \
     
     \ /
      Last update: 2017-12-18 17:58    [W:2.368 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site