diff options
author | Simon Baatz <gmbnomis@gmail.com> | 2013-06-09 16:14:16 -0400 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2013-06-27 10:23:52 -0400 |
commit | 47caa84fb61ac94e675c08fb45f50918766688bd (patch) | |
tree | 6ab19111f945ad66b45c6f0121c3abcbb57c69e8 | |
parent | d2cf6071cc09337eb68d960bcba94d2998de6172 (diff) |
mmc: tegra: handle mmc_of_parse() errors during probe
Signed-off-by: Simon Baatz <gmbnomis@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
-rw-r--r-- | drivers/mmc/host/sdhci-tegra.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c index c8b058283a06..5b7b2eba8a54 100644 --- a/drivers/mmc/host/sdhci-tegra.c +++ b/drivers/mmc/host/sdhci-tegra.c | |||
@@ -205,7 +205,7 @@ static const struct of_device_id sdhci_tegra_dt_match[] = { | |||
205 | }; | 205 | }; |
206 | MODULE_DEVICE_TABLE(of, sdhci_tegra_dt_match); | 206 | MODULE_DEVICE_TABLE(of, sdhci_tegra_dt_match); |
207 | 207 | ||
208 | static void sdhci_tegra_parse_dt(struct device *dev) | 208 | static int sdhci_tegra_parse_dt(struct device *dev) |
209 | { | 209 | { |
210 | struct device_node *np = dev->of_node; | 210 | struct device_node *np = dev->of_node; |
211 | struct sdhci_host *host = dev_get_drvdata(dev); | 211 | struct sdhci_host *host = dev_get_drvdata(dev); |
@@ -213,7 +213,7 @@ static void sdhci_tegra_parse_dt(struct device *dev) | |||
213 | struct sdhci_tegra *tegra_host = pltfm_host->priv; | 213 | struct sdhci_tegra *tegra_host = pltfm_host->priv; |
214 | 214 | ||
215 | tegra_host->power_gpio = of_get_named_gpio(np, "power-gpios", 0); | 215 | tegra_host->power_gpio = of_get_named_gpio(np, "power-gpios", 0); |
216 | mmc_of_parse(host->mmc); | 216 | return mmc_of_parse(host->mmc); |
217 | } | 217 | } |
218 | 218 | ||
219 | static int sdhci_tegra_probe(struct platform_device *pdev) | 219 | static int sdhci_tegra_probe(struct platform_device *pdev) |
@@ -245,7 +245,9 @@ static int sdhci_tegra_probe(struct platform_device *pdev) | |||
245 | tegra_host->soc_data = soc_data; | 245 | tegra_host->soc_data = soc_data; |
246 | pltfm_host->priv = tegra_host; | 246 | pltfm_host->priv = tegra_host; |
247 | 247 | ||
248 | sdhci_tegra_parse_dt(&pdev->dev); | 248 | rc = sdhci_tegra_parse_dt(&pdev->dev); |
249 | if (rc) | ||
250 | goto err_parse_dt; | ||
249 | 251 | ||
250 | if (gpio_is_valid(tegra_host->power_gpio)) { | 252 | if (gpio_is_valid(tegra_host->power_gpio)) { |
251 | rc = gpio_request(tegra_host->power_gpio, "sdhci_power"); | 253 | rc = gpio_request(tegra_host->power_gpio, "sdhci_power"); |
@@ -279,6 +281,7 @@ err_clk_get: | |||
279 | if (gpio_is_valid(tegra_host->power_gpio)) | 281 | if (gpio_is_valid(tegra_host->power_gpio)) |
280 | gpio_free(tegra_host->power_gpio); | 282 | gpio_free(tegra_host->power_gpio); |
281 | err_power_req: | 283 | err_power_req: |
284 | err_parse_dt: | ||
282 | err_alloc_tegra_host: | 285 | err_alloc_tegra_host: |
283 | sdhci_pltfm_free(pdev); | 286 | sdhci_pltfm_free(pdev); |
284 | return rc; | 287 | return rc; |