mmc: dw_mmc: move the platform specific init call
authorYuvaraj Kumar C D <yuvaraj.cd@gmail.com>
Fri, 30 Aug 2013 15:12:19 +0000 (00:12 +0900)
committerChris Ball <cjb@laptop.org>
Thu, 26 Sep 2013 01:32:40 +0000 (21:32 -0400)
Current platform specific private data initialization call
dw_mci_exynos_priv_init() can be used to do platform specific
initialization of SMU and others in future. So the drv_data->init
call has moved to dw_mci_probe().

Signed-off-by: Yuvaraj Kumar C D <yuvaraj.cd@samsung.com>
Tested-by: Alim Akhtar <alim.akhtar@samsung.com>
Tested-by: Jaehoon Chung <jh80.chung@samsung.com>
Acked-by: Seungwon Jeon <tgih.jun@samsung.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/dw_mmc-pltfm.c
drivers/mmc/host/dw_mmc.c

index 20897529ea5e10185a3d39864755ccdbeb8fea6b..5c496565529796f06ca4d26b280724376aa6348c 100644 (file)
@@ -39,7 +39,6 @@ int dw_mci_pltfm_register(struct platform_device *pdev,
 {
        struct dw_mci *host;
        struct resource *regs;
-       int ret;
 
        host = devm_kzalloc(&pdev->dev, sizeof(struct dw_mci), GFP_KERNEL);
        if (!host)
@@ -59,12 +58,6 @@ int dw_mci_pltfm_register(struct platform_device *pdev,
        if (IS_ERR(host->regs))
                return PTR_ERR(host->regs);
 
-       if (drv_data && drv_data->init) {
-               ret = drv_data->init(host);
-               if (ret)
-                       return ret;
-       }
-
        platform_set_drvdata(pdev, host);
        return dw_mci_probe(host);
 }
index 19b289d5dba85832780f68e3f042bee966dcceee..9595922e231a79629be5d83068a3a1cca35b1d37 100644 (file)
@@ -2227,6 +2227,15 @@ int dw_mci_probe(struct dw_mci *host)
                host->bus_hz = clk_get_rate(host->ciu_clk);
        }
 
+       if (drv_data && drv_data->init) {
+               ret = drv_data->init(host);
+               if (ret) {
+                       dev_err(host->dev,
+                               "implementation specific init failed\n");
+                       goto err_clk_ciu;
+               }
+       }
+
        if (drv_data && drv_data->setup_clock) {
                ret = drv_data->setup_clock(host);
                if (ret) {