• Addy Ke's avatar
    mmc: dw_mmc: introduce timer for broken command transfer over scheme · 03de1921
    Addy Ke authored
    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=196321Signed-off-by: default avatarAddy Ke <addy.ke@rock-chips.com>
    Signed-off-by: default avatarZiyuan Xu <xzy.xu@rock-chips.com>
    [shawn.lin: rewrite the code and the commit msg throughout]
    Signed-off-by: default avatarShawn Lin <shawn.lin@rock-chips.com>
    Signed-off-by: default avatarJaehoon Chung <jh80.chung@samsung.com>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    03de1921
dw_mmc.c 85.6 KB