mmc: host: sh_mobile_sdhi: don't populate unneeded functions
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Wed, 24 Aug 2016 09:34:38 +0000 (11:34 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 26 Sep 2016 19:31:14 +0000 (21:31 +0200)
Populating card_busy caused a side-effect on a chip variant we don't
have documentation for (r8a73a4). So, enable it and voltage switching
only on devices known to support those features.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Fixes: 452e5eef6d31 ("mmc: tmio: Add UHS-I mode support")

drivers/mmc/host/sh_mobile_sdhi.c

index c4e63b7..d679c8a 100644 (file)
@@ -376,8 +376,14 @@ static int sh_mobile_sdhi_probe(struct platform_device *pdev)
        host->clk_update        = sh_mobile_sdhi_clk_update;
        host->clk_disable       = sh_mobile_sdhi_clk_disable;
        host->multi_io_quirk    = sh_mobile_sdhi_multi_io_quirk;
-       host->card_busy = sh_mobile_sdhi_card_busy;
-       host->start_signal_voltage_switch = sh_mobile_sdhi_start_signal_voltage_switch;
+
+       /* SDR speeds are only available on Gen2+ */
+       if (mmc_data->flags & TMIO_MMC_MIN_RCAR2) {
+               /* card_busy caused issues on r8a73a4 (pre-Gen2) CD-less SDHI */
+               host->card_busy = sh_mobile_sdhi_card_busy;
+               host->start_signal_voltage_switch =
+                       sh_mobile_sdhi_start_signal_voltage_switch;
+       }
 
        /* Orginally registers were 16 bit apart, could be 32 or 64 nowadays */
        if (!host->bus_shift && resource_size(res) > 0x100) /* old way to determine the shift */