mmc: uniphier: Allow passing quirks to the probe function
authorMarek Vasut <marek.vasut+renesas@gmail.com>
Sun, 8 Apr 2018 15:45:23 +0000 (17:45 +0200)
committerMarek Vasut <marek.vasut+renesas@gmail.com>
Wed, 11 Apr 2018 21:11:57 +0000 (23:11 +0200)
Certain instances of the SD IP require more elaborate digging
in the DT to figure out which variant of the SD IP is in use.
Allow explicit passing of the quirks into the probe function.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Jaehoon Chung <jh80.chung@samsung.com>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
drivers/mmc/matsushita-common.c
drivers/mmc/matsushita-common.h
drivers/mmc/renesas-sdhi.c
drivers/mmc/uniphier-sd.c

index 9f7f47c86b4e57dc85f77637f321d6e09bd9b3de..0b0cbaf9e177522b052953eb7aa46e9dcc58df26 100644 (file)
@@ -653,12 +653,11 @@ int matsu_sd_bind(struct udevice *dev)
        return mmc_bind(dev, &plat->mmc, &plat->cfg);
 }
 
-int matsu_sd_probe(struct udevice *dev)
+int matsu_sd_probe(struct udevice *dev, u32 quirks)
 {
        struct matsu_sd_plat *plat = dev_get_platdata(dev);
        struct matsu_sd_priv *priv = dev_get_priv(dev);
        struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
-       const u32 quirks = dev_get_driver_data(dev);
        fdt_addr_t base;
        struct clk clk;
        int ret;
index c1b28a0128f0201e012c297969314e637edbf6b3..a03d8f97e569e323a117ffa7e8858ef3504bffbf 100644 (file)
@@ -132,6 +132,6 @@ int matsu_sd_set_ios(struct udevice *dev);
 int matsu_sd_get_cd(struct udevice *dev);
 
 int matsu_sd_bind(struct udevice *dev);
-int matsu_sd_probe(struct udevice *dev);
+int matsu_sd_probe(struct udevice *dev, u32 quirks);
 
 #endif /* __MATSUSHITA_COMMON_H__ */
index 9b388b3ab0a8681d9e98486568fdb47429c8060e..d6b3bfbadc707a431bcaa53740dc75ee5864747a 100644 (file)
@@ -38,12 +38,19 @@ static const struct udevice_id renesas_sdhi_match[] = {
        { /* sentinel */ }
 };
 
+static int renesas_sdhi_probe(struct udevice *dev)
+{
+       u32 quirks = dev_get_driver_data(dev);
+
+       return matsu_sd_probe(dev, quirks);
+}
+
 U_BOOT_DRIVER(renesas_sdhi) = {
        .name = "renesas-sdhi",
        .id = UCLASS_MMC,
        .of_match = renesas_sdhi_match,
        .bind = matsu_sd_bind,
-       .probe = matsu_sd_probe,
+       .probe = renesas_sdhi_probe,
        .priv_auto_alloc_size = sizeof(struct matsu_sd_priv),
        .platdata_auto_alloc_size = sizeof(struct matsu_sd_plat),
        .ops = &renesas_sdhi_ops,
index 72f0d4675826d62b20753dbfae8c2543da3a54ba..42eb9c2c84e5efb00ce118f17960f1fce51bbe4f 100644 (file)
@@ -30,12 +30,17 @@ static const struct udevice_id uniphier_sd_match[] = {
        { /* sentinel */ }
 };
 
+static int uniphier_sd_probe(struct udevice *dev)
+{
+       return matsu_sd_probe(dev, 0);
+}
+
 U_BOOT_DRIVER(uniphier_mmc) = {
        .name = "uniphier-mmc",
        .id = UCLASS_MMC,
        .of_match = uniphier_sd_match,
        .bind = matsu_sd_bind,
-       .probe = matsu_sd_probe,
+       .probe = uniphier_sd_probe,
        .priv_auto_alloc_size = sizeof(struct matsu_sd_priv),
        .platdata_auto_alloc_size = sizeof(struct matsu_sd_plat),
        .ops = &uniphier_sd_ops,