diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-11-22 18:55:30 -0500 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2012-12-06 13:55:14 -0500 |
commit | c430689f3f0f73e1aadaaf6cfd39930be1e73da1 (patch) | |
tree | 76756175cb86737700599a1fbedbf1085d36f678 /drivers/mmc | |
parent | 7430e77e64000133c50cbd287d44733b4f487dc5 (diff) |
mmc: sdhci-dove: use two-stage initialization for sdhci-pltfm
We need to use the two-stage initialization for sdhci-pltfm if we're
going to do anything extra at initialization time.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/host/sdhci-dove.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/drivers/mmc/host/sdhci-dove.c b/drivers/mmc/host/sdhci-dove.c index 4233fd98e3aa..4af64f32c6d1 100644 --- a/drivers/mmc/host/sdhci-dove.c +++ b/drivers/mmc/host/sdhci-dove.c | |||
@@ -93,22 +93,32 @@ static int __devinit sdhci_dove_probe(struct platform_device *pdev) | |||
93 | } | 93 | } |
94 | 94 | ||
95 | priv->clk = devm_clk_get(&pdev->dev, NULL); | 95 | priv->clk = devm_clk_get(&pdev->dev, NULL); |
96 | if (!IS_ERR(priv->clk)) | ||
97 | clk_prepare_enable(priv->clk); | ||
98 | 96 | ||
99 | ret = sdhci_pltfm_register(pdev, &sdhci_dove_pdata); | 97 | host = sdhci_pltfm_init(pdev, &sdhci_dove_pdata); |
100 | if (ret) | 98 | if (IS_ERR(host)) { |
101 | goto sdhci_dove_register_fail; | 99 | ret = PTR_ERR(host); |
100 | goto err_sdhci_pltfm_init; | ||
101 | } | ||
102 | 102 | ||
103 | host = platform_get_drvdata(pdev); | ||
104 | pltfm_host = sdhci_priv(host); | 103 | pltfm_host = sdhci_priv(host); |
105 | pltfm_host->priv = priv; | 104 | pltfm_host->priv = priv; |
106 | 105 | ||
106 | if (!IS_ERR(priv->clk)) | ||
107 | clk_prepare_enable(priv->clk); | ||
108 | |||
109 | sdhci_get_of_property(pdev); | ||
110 | |||
111 | ret = sdhci_add_host(host); | ||
112 | if (ret) | ||
113 | goto err_sdhci_add; | ||
114 | |||
107 | return 0; | 115 | return 0; |
108 | 116 | ||
109 | sdhci_dove_register_fail: | 117 | err_sdhci_add: |
110 | if (!IS_ERR(priv->clk)) | 118 | if (!IS_ERR(priv->clk)) |
111 | clk_disable_unprepare(priv->clk); | 119 | clk_disable_unprepare(priv->clk); |
120 | sdhci_pltfm_free(pdev); | ||
121 | err_sdhci_pltfm_init: | ||
112 | return ret; | 122 | return ret; |
113 | } | 123 | } |
114 | 124 | ||