mmc: sdhci-msm: use sdhci_pltfm_init for private allocation
[cascardo/linux.git] / drivers / mmc / host / sdhci-msm.c
index ffac9b4..0653fe7 100644 (file)
@@ -442,16 +442,12 @@ static int sdhci_msm_probe(struct platform_device *pdev)
        u32 core_version, caps;
        u8 core_major;
 
-       msm_host = devm_kzalloc(&pdev->dev, sizeof(*msm_host), GFP_KERNEL);
-       if (!msm_host)
-               return -ENOMEM;
-
-       host = sdhci_pltfm_init(pdev, &sdhci_msm_pdata, 0);
+       host = sdhci_pltfm_init(pdev, &sdhci_msm_pdata, sizeof(*msm_host));
        if (IS_ERR(host))
                return PTR_ERR(host);
 
        pltfm_host = sdhci_priv(host);
-       pltfm_host->priv = msm_host;
+       msm_host = sdhci_pltfm_priv(pltfm_host);
        msm_host->mmc = host->mmc;
        msm_host->pdev = pdev;
 
@@ -571,16 +567,16 @@ static int sdhci_msm_remove(struct platform_device *pdev)
 {
        struct sdhci_host *host = platform_get_drvdata(pdev);
        struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
-       struct sdhci_msm_host *msm_host = pltfm_host->priv;
+       struct sdhci_msm_host *msm_host = sdhci_pltfm_priv(pltfm_host);
        int dead = (readl_relaxed(host->ioaddr + SDHCI_INT_STATUS) ==
                    0xffffffff);
 
        sdhci_remove_host(host, dead);
-       sdhci_pltfm_free(pdev);
        clk_disable_unprepare(msm_host->clk);
        clk_disable_unprepare(msm_host->pclk);
        if (!IS_ERR(msm_host->bus_clk))
                clk_disable_unprepare(msm_host->bus_clk);
+       sdhci_pltfm_free(pdev);
        return 0;
 }