mmc: dw_mmc: add support for implementation specific callbacks
[profile/ivi/kernel-adaptation-intel-automotive.git] / drivers / mmc / host / dw_mmc-pltfm.c
index e17da91..c960ca7 100644 (file)
@@ -23,7 +23,8 @@
 
 #include "dw_mmc.h"
 
-int dw_mci_pltfm_register(struct platform_device *pdev)
+int dw_mci_pltfm_register(struct platform_device *pdev,
+                               struct dw_mci_drv_data *drv_data)
 {
        struct dw_mci *host;
        struct resource *regs;
@@ -41,6 +42,7 @@ int dw_mci_pltfm_register(struct platform_device *pdev)
        if (host->irq < 0)
                return host->irq;
 
+       host->drv_data = drv_data;
        host->dev = &pdev->dev;
        host->irq_flags = 0;
        host->pdata = pdev->dev.platform_data;
@@ -48,6 +50,12 @@ int dw_mci_pltfm_register(struct platform_device *pdev)
        if (!host->regs)
                return -ENOMEM;
 
+       if (host->drv_data->init) {
+               ret = host->drv_data->init(host);
+               if (ret)
+                       return ret;
+       }
+
        platform_set_drvdata(pdev, host);
        ret = dw_mci_probe(host);
        return ret;
@@ -56,7 +64,7 @@ EXPORT_SYMBOL_GPL(dw_mci_pltfm_register);
 
 static int __devinit dw_mci_pltfm_probe(struct platform_device *pdev)
 {
-       return dw_mci_pltfm_register(pdev);
+       return dw_mci_pltfm_register(pdev, NULL);
 }
 
 static int __devexit dw_mci_pltfm_remove(struct platform_device *pdev)