mmc: tmio/sdhi: introduce flag for RCar 2+ specific features
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Mon, 2 May 2016 20:25:40 +0000 (22:25 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Wed, 4 May 2016 07:28:04 +0000 (09:28 +0200)
RCar Gen2 and later implementations of TMIO/SDHI have their own set of
features and additions. FAST_CLK_CHG is just one of them and I see a few
others being added soon. Some may work on older chipsets but this needs
to be tested case by case. Instead of adding a bunch of flags for each
feature, add a global RCar2+ one for now. We can still break out
features if the need arises.

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>
drivers/mmc/host/sh_mobile_sdhi.c
drivers/mmc/host/tmio_mmc_pio.c
include/linux/mfd/tmio.h

index 6857e4ba72441576e1e5d5601261e84a60cd1e03..19e4c29e4233b04226bec6bf41ec29f2b86e7d62 100644 (file)
@@ -62,7 +62,7 @@ static const struct sh_mobile_sdhi_of_data of_rcar_gen1_compatible = {
 
 static const struct sh_mobile_sdhi_of_data of_rcar_gen2_compatible = {
        .tmio_flags     = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_WRPROTECT_DISABLE |
-                         TMIO_MMC_CLK_ACTUAL | TMIO_MMC_FAST_CLK_CHG,
+                         TMIO_MMC_CLK_ACTUAL | TMIO_MMC_MIN_RCAR2,
        .capabilities   = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ,
        .dma_buswidth   = DMA_SLAVE_BUSWIDTH_4_BYTES,
        .dma_rx_offset  = 0x2000,
@@ -70,7 +70,7 @@ static const struct sh_mobile_sdhi_of_data of_rcar_gen2_compatible = {
 
 static const struct sh_mobile_sdhi_of_data of_rcar_gen3_compatible = {
        .tmio_flags     = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_WRPROTECT_DISABLE |
-                         TMIO_MMC_CLK_ACTUAL | TMIO_MMC_FAST_CLK_CHG,
+                         TMIO_MMC_CLK_ACTUAL | TMIO_MMC_MIN_RCAR2,
        .capabilities   = MMC_CAP_SD_HIGHSPEED,
        .bus_shift      = 2,
 };
index 95f22997f31a66997477b7a47181af11536af06d..f44e2ab7aea2bab15ade6e1104e4bc80eeb3d633 100644 (file)
@@ -157,7 +157,7 @@ static void tmio_mmc_clk_start(struct tmio_mmc_host *host)
 {
        sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, CLK_CTL_SCLKEN |
                sd_ctrl_read16(host, CTL_SD_CARD_CLK_CTL));
-       msleep(host->pdata->flags & TMIO_MMC_FAST_CLK_CHG ? 1 : 10);
+       msleep(host->pdata->flags & TMIO_MMC_MIN_RCAR2 ? 1 : 10);
 
        if (host->pdata->flags & TMIO_MMC_HAVE_HIGH_REG) {
                sd_ctrl_write16(host, CTL_CLK_AND_WAIT_CTL, 0x0100);
@@ -174,7 +174,7 @@ static void tmio_mmc_clk_stop(struct tmio_mmc_host *host)
 
        sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, ~CLK_CTL_SCLKEN &
                sd_ctrl_read16(host, CTL_SD_CARD_CLK_CTL));
-       msleep(host->pdata->flags & TMIO_MMC_FAST_CLK_CHG ? 5 : 10);
+       msleep(host->pdata->flags & TMIO_MMC_MIN_RCAR2 ? 5 : 10);
 }
 
 static void tmio_mmc_set_clock(struct tmio_mmc_host *host,
@@ -205,7 +205,7 @@ static void tmio_mmc_set_clock(struct tmio_mmc_host *host,
        sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, ~CLK_CTL_SCLKEN &
                        sd_ctrl_read16(host, CTL_SD_CARD_CLK_CTL));
        sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, clk & CLK_CTL_DIV_MASK);
-       if (!(host->pdata->flags & TMIO_MMC_FAST_CLK_CHG))
+       if (!(host->pdata->flags & TMIO_MMC_MIN_RCAR2))
                msleep(10);
 
        tmio_mmc_clk_start(host);
index 05d58ee5e6a78fb4d8366b2391d84a2f4838aa82..7a26286db895c587a681243bee8cb521b3dc4ba4 100644 (file)
@@ -66,8 +66,8 @@
  */
 #define TMIO_MMC_SDIO_IRQ              (1 << 2)
 
-/* Some controllers don't need to wait 10ms for clock changes */
-#define TMIO_MMC_FAST_CLK_CHG          (1 << 3)
+/* Some features are only available or tested on RCar Gen2 or later */
+#define TMIO_MMC_MIN_RCAR2             (1 << 3)
 
 /*
  * Some controllers require waiting for the SD bus to become