aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc
diff options
context:
space:
mode:
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>2011-05-11 12:51:15 -0400
committerChris Ball <cjb@laptop.org>2011-05-24 23:53:55 -0400
commit2595880481ac894d390365092de9aaf92b44e147 (patch)
tree4ab065140c59e8b68e661926bfaa588e4a7e2a0a /drivers/mmc
parent7311bef0697bcfbbcb898c3c22e61e23f203ae9d (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.c6
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)
178static const struct dev_pm_ops tmio_mmc_dev_pm_ops = { 182static 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
183static struct platform_driver sh_mobile_sdhi_driver = { 189static struct platform_driver sh_mobile_sdhi_driver = {