• Huijin Park's avatar
    mmc: core: adjust polling interval for CMD1 · 76bfc7cc
    Huijin Park authored
    In mmc_send_op_cond(), loops are continuously performed at the same
    interval of 10 ms.  However the behaviour is not good for some eMMC
    which can be out from a busy state earlier than 10 ms if normal.
    
    Rather than fixing about the interval time in mmc_send_op_cond(),
    let's instead convert into using the common __mmc_poll_for_busy().
    
    The reason for adjusting the interval time is that it is important
    to reduce the eMMC initialization time, especially in devices that
    use eMMC as rootfs.
    
    Test log(eMMC:KLM8G1GETF-B041):
    
    before: 12 ms (0.311016 - 0.298729)
    [    0.295823] mmc0: starting CMD0 arg 00000000 flags 000000c0
    [    0.298729] mmc0: starting CMD1 arg 40000080 flags 000000e1<-start
    [    0.311016] mmc0: starting CMD1 arg 40000080 flags 000000e1<-finish
    [    0.311336] mmc0: starting CMD2 arg 00000000 flags 00000007
    
    after: 2 ms (0.301270 - 0.298762)
    [    0.295862] mmc0: starting CMD0 arg 00000000 flags 000000c0
    [    0.298762] mmc0: starting CMD1 arg 40000080 flags 000000e1<-start
    [    0.299067] mmc0: starting CMD1 arg 40000080 flags 000000e1
    [    0.299441] mmc0: starting CMD1 arg 40000080 flags 000000e1
    [    0.299879] mmc0: starting CMD1 arg 40000080 flags 000000e1
    [    0.300446] mmc0: starting CMD1 arg 40000080 flags 000000e1
    [    0.301270] mmc0: starting CMD1 arg 40000080 flags 000000e1<-finish
    [    0.301572] mmc0: starting CMD2 arg 00000000 flags 00000007
    Signed-off-by: default avatarHuijin Park <huijin.park@samsung.com>
    Link: https://lore.kernel.org/r/20211104063231.2115-3-huijin.park@samsung.comSigned-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    76bfc7cc
mmc_ops.c 25.1 KB