diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2011-05-11 12:51:15 -0400 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2011-05-24 23:53:55 -0400 |
commit | 2595880481ac894d390365092de9aaf92b44e147 (patch) | |
tree | 4ab065140c59e8b68e661926bfaa588e4a7e2a0a /drivers/mmc | |
parent | 7311bef0697bcfbbcb898c3c22e61e23f203ae9d (diff) |
mmc: sdhi: allow powering down controller with no card inserted
Supply a link to TMIO private data for platforms to implement their
own card detection.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/host/sh_mobile_sdhi.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/mmc/host/sh_mobile_sdhi.c b/drivers/mmc/host/sh_mobile_sdhi.c index d264bbeb529b..b3654293017b 100644 --- a/drivers/mmc/host/sh_mobile_sdhi.c +++ b/drivers/mmc/host/sh_mobile_sdhi.c | |||
@@ -71,6 +71,7 @@ static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev) | |||
71 | } | 71 | } |
72 | 72 | ||
73 | mmc_data = &priv->mmc_data; | 73 | mmc_data = &priv->mmc_data; |
74 | p->pdata = mmc_data; | ||
74 | 75 | ||
75 | snprintf(clk_name, sizeof(clk_name), "sdhi%d", pdev->id); | 76 | snprintf(clk_name, sizeof(clk_name), "sdhi%d", pdev->id); |
76 | priv->clk = clk_get(&pdev->dev, clk_name); | 77 | priv->clk = clk_get(&pdev->dev, clk_name); |
@@ -159,8 +160,11 @@ static int sh_mobile_sdhi_remove(struct platform_device *pdev) | |||
159 | struct mmc_host *mmc = platform_get_drvdata(pdev); | 160 | struct mmc_host *mmc = platform_get_drvdata(pdev); |
160 | struct tmio_mmc_host *host = mmc_priv(mmc); | 161 | struct tmio_mmc_host *host = mmc_priv(mmc); |
161 | struct sh_mobile_sdhi *priv = container_of(host->pdata, struct sh_mobile_sdhi, mmc_data); | 162 | struct sh_mobile_sdhi *priv = container_of(host->pdata, struct sh_mobile_sdhi, mmc_data); |
163 | struct sh_mobile_sdhi_info *p = pdev->dev.platform_data; | ||
162 | int i, irq; | 164 | int i, irq; |
163 | 165 | ||
166 | p->pdata = NULL; | ||
167 | |||
164 | for (i = 0; i < 3; i++) { | 168 | for (i = 0; i < 3; i++) { |
165 | irq = platform_get_irq(pdev, i); | 169 | irq = platform_get_irq(pdev, i); |
166 | if (irq >= 0) | 170 | if (irq >= 0) |
@@ -178,6 +182,8 @@ static int sh_mobile_sdhi_remove(struct platform_device *pdev) | |||
178 | static const struct dev_pm_ops tmio_mmc_dev_pm_ops = { | 182 | static const struct dev_pm_ops tmio_mmc_dev_pm_ops = { |
179 | .suspend = tmio_mmc_host_suspend, | 183 | .suspend = tmio_mmc_host_suspend, |
180 | .resume = tmio_mmc_host_resume, | 184 | .resume = tmio_mmc_host_resume, |
185 | .runtime_suspend = tmio_mmc_host_runtime_suspend, | ||
186 | .runtime_resume = tmio_mmc_host_runtime_resume, | ||
181 | }; | 187 | }; |
182 | 188 | ||
183 | static struct platform_driver sh_mobile_sdhi_driver = { | 189 | static struct platform_driver sh_mobile_sdhi_driver = { |