diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2012-03-09 04:16:00 -0500 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2012-03-27 12:20:19 -0400 |
commit | 7f524217439cc17da74523582c303cced432713e (patch) | |
tree | cf3d25dd99f12c8ce73ea1ce45e0ae9f86503f2c /drivers | |
parent | e82b4ac94e5c43fad51b975aed058858ceda1f0f (diff) |
mmc: sh_mobile_sdhi: support modular mmc-core with non-standard hotplug
Currently if a platform wants to implement a non-standard card-detection
method, it would need to call tmio_mmc_cd_wakeup(), which is an inline
function, calling mmc_detect_change(). For this the platform would have
to link mmc_core statically into the kernel, losing the ability to build
it as a module. This patch adds a callback to the sh_mobile_sdhi driver,
which eliminates this dependency.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mmc/host/sh_mobile_sdhi.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/mmc/host/sh_mobile_sdhi.c b/drivers/mmc/host/sh_mobile_sdhi.c index 07ff3fee77b3..934b68e9efc3 100644 --- a/drivers/mmc/host/sh_mobile_sdhi.c +++ b/drivers/mmc/host/sh_mobile_sdhi.c | |||
@@ -90,6 +90,15 @@ static int sh_mobile_sdhi_write16_hook(struct tmio_mmc_host *host, int addr) | |||
90 | return 0; | 90 | return 0; |
91 | } | 91 | } |
92 | 92 | ||
93 | static void sh_mobile_sdhi_cd_wakeup(const struct platform_device *pdev) | ||
94 | { | ||
95 | mmc_detect_change(dev_get_drvdata(&pdev->dev), msecs_to_jiffies(100)); | ||
96 | } | ||
97 | |||
98 | static const struct sh_mobile_sdhi_ops sdhi_ops = { | ||
99 | .cd_wakeup = sh_mobile_sdhi_cd_wakeup, | ||
100 | }; | ||
101 | |||
93 | static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev) | 102 | static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev) |
94 | { | 103 | { |
95 | struct sh_mobile_sdhi *priv; | 104 | struct sh_mobile_sdhi *priv; |
@@ -110,7 +119,7 @@ static int __devinit sh_mobile_sdhi_probe(struct platform_device *pdev) | |||
110 | p->pdata = mmc_data; | 119 | p->pdata = mmc_data; |
111 | 120 | ||
112 | if (p->init) { | 121 | if (p->init) { |
113 | ret = p->init(pdev); | 122 | ret = p->init(pdev, &sdhi_ops); |
114 | if (ret) | 123 | if (ret) |
115 | goto einit; | 124 | goto einit; |
116 | } | 125 | } |