mmc: rk_sdmmc: support RK3228 chip
authorxiaoyao <xiaoyao@rock-chips.com>
Tue, 10 Nov 2015 02:55:33 +0000 (10:55 +0800)
committerxiaoyao <xiaoyao@rock-chips.com>
Tue, 10 Nov 2015 02:55:33 +0000 (10:55 +0800)
Add a variable to distinguish between types of chips, eg:
DW_MCI_TYPE_RK3228. The purpose is to add a unique code
in the future.

Change-Id: I6608ae7af0579343cabe92deddefe73b8e5d2194
Signed-off-by: xiaoyao <xiaoyao@rock-chips.com>
drivers/mmc/host/dw_mmc-rockchip.c
drivers/mmc/host/rk_sdmmc.c
drivers/mmc/host/rk_sdmmc.h

index dff11ff8d8e67f644bb856b7c6bfa0a642532fcc..7efd7b15e3ad93176c66b9b07783a3175cb8bdc8 100644 (file)
@@ -62,6 +62,10 @@ static struct dw_mci_rockchip_compatible {
                .compatible     = "rockchip,rk3368-sdmmc",
                .ctrl_type      = DW_MCI_TYPE_RK3368,
        },
+       {
+               .compatible     = "rockchip,rk3228-sdmmc",
+               .ctrl_type      = DW_MCI_TYPE_RK3228,
+       },
 };
 
 #define syscon_find(np, property) \
@@ -111,7 +115,8 @@ static int dw_mci_rockchip_setup_clock(struct dw_mci *host)
        if ((priv->ctrl_type == DW_MCI_TYPE_RK3288) ||
            (priv->ctrl_type == DW_MCI_TYPE_RK3036) ||
            (priv->ctrl_type == DW_MCI_TYPE_RK312X) ||
-           (priv->ctrl_type == DW_MCI_TYPE_RK3368))
+           (priv->ctrl_type == DW_MCI_TYPE_RK3368) ||
+           (priv->ctrl_type == DW_MCI_TYPE_RK3228))
                host->bus_hz /= (priv->ciu_div + 1);
 
        return 0;
index 352a7846eb8557170f48fe87fdd94aa92d6c7569..1d0a2737331e61206e10f499bf158a4a588e7539 100755 (executable)
@@ -3566,6 +3566,8 @@ static int dw_mci_init_slot(struct dw_mci *host, unsigned int id)
                        regmap_write(host->grf, 0x43c, (1<<13)<<16 | (0 << 13));
        } else if (cpu_is_rk3288()) {
                grf_writel(((1 << 12) << 16) | (0 << 12), RK3288_GRF_SOC_CON0);
+       } else if (host->cid == DW_MCI_TYPE_RK3228) {
+               grf_writel(((1 << 8) << 16) | (0 << 8), RK3228_GRF_SOC_CON6);
        }
 
        /* We assume only low-level chip use gpio_cd */
index f1ddc3cdad73522559d448173d1ac7f46d3a1ad2..cad989246002c4cf1954004962017c014470d880 100755 (executable)
@@ -381,6 +381,7 @@ DW_MCI_TYPE_RK3288,
 DW_MCI_TYPE_RK3036,
 DW_MCI_TYPE_RK312X,
 DW_MCI_TYPE_RK3368,
+DW_MCI_TYPE_RK3228,
 };
 
 #endif /* _DW_MMC_H_ */