• Adrian Hunter's avatar
    mmc: sdhci: Fix regression setting power on Trats2 board · 1dceb041
    Adrian Hunter authored
    Several commits relating to setting power have been introducing
    problems by putting driver-specific rules into generic SDHCI code.
    Krzysztof Kozlowski reported that after commit 918f4cbd ("mmc:
    sdhci: restore behavior when setting VDD via external regulator")
    on Trats2 board there are warnings for invalid VDD  value (2.8V):
    [    3.119656] ------------[ cut here ]------------
    [    3.119666] WARNING: CPU: 3 PID: 90 at
    ../drivers/mmc/host/sdhci.c:1234 sdhci_do_set_ios+0x4cc/0x5e0
    [    3.119669] mmc0: Invalid vdd 0x10
    [    3.119673] Modules linked in:
    [    3.119679] CPU: 3 PID: 90 Comm: kworker/3:1 Tainted: G        W
       4.5.0-next-20160324 #23
    [    3.119681] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
    [    3.119690] Workqueue: events_freezable mmc_rescan
    [    3.119708] [<c010e0ac>] (unwind_backtrace) from [<c010ae10>]
    [    3.119719] [<c010ae10>] (show_stack) from [<c0323260>]
    [    3.119728] [<c0323260>] (dump_stack) from [<c011b754>] (__warn+0xe8/0x100)
    [    3.119734] [<c011b754>] (__warn) from [<c011b7a4>]
    [    3.119740] [<c011b7a4>] (warn_slowpath_fmt) from [<c0527d28>]
    [    3.119748] [<c0527d28>] (sdhci_do_set_ios) from [<c0528018>]
    [    3.119758] [<c0528018>] (sdhci_runtime_resume_host) from
    [<c0402570>] (__rpm_callback+0x2c/0x60)
    [    3.119767] [<c0402570>] (__rpm_callback) from [<c04025c4>]
    [    3.119773] [<c04025c4>] (rpm_callback) from [<c04034b8>]
    [    3.119780] [<c04034b8>] (rpm_resume) from [<c04036f0>]
    [    3.119788] [<c04036f0>] (__pm_runtime_resume) from [<c0512728>]
    [    3.119795] [<c0512728>] (__mmc_claim_host) from [<c0514e2c>]
    [    3.119807] [<c0514e2c>] (mmc_rescan) from [<c0130dac>]
    [    3.119815] [<c0130dac>] (process_one_work) from [<c01310b8>]
    [    3.119823] [<c01310b8>] (worker_thread) from [<c01365a4>]
    [    3.119831] [<c01365a4>] (kthread) from [<c0107878>]
    [    3.119834] ---[ end trace a22d652aa3276886 ]---
    Fix by adding a 'set_power' callback and restoring the default
    behaviour prior to commit 918f4cbd
     ("mmc: sdhci: restore
    behavior when setting VDD via external regulator").  The desired
    behaviour of that commit is gotten by having sdhci-pxav3 provide
    its own set_power callback.
    Reported-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
    Link: http://lkml.kernel.org/r/CAJKOXPcGDnPm-Ykh6wHqV1YxfTaov5E8iVqBoBn4OJc7BnhgEQ@mail.gmail.com
    Fixes: 918f4cbd
     ("mmc: sdhci: restore behavior when setting VDD...)
    Tested-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
    Tested-by: default avatarLudovic Desroches <ludovic.desroches@atmel.com>
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org # v4.5+
    Reviewed-by: default avatarJisheng Zhang <jszhang@marvell.com>
    Tested-by: default avatarJisheng Zhang <jszhang@marvell.com>
    Tested-by: default avatarJaehoon Chung <jh80.chung@samsung.com>
    Tested-by: default avatarAnand Moon <linux.amoon@gmail.com>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
sdhci.h 22.5 KB