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 /include/linux/mmc | |
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 'include/linux/mmc')
-rw-r--r-- | include/linux/mmc/sh_mobile_sdhi.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/include/linux/mmc/sh_mobile_sdhi.h b/include/linux/mmc/sh_mobile_sdhi.h index 686b85bfb7a5..e94e620aeddc 100644 --- a/include/linux/mmc/sh_mobile_sdhi.h +++ b/include/linux/mmc/sh_mobile_sdhi.h | |||
@@ -10,6 +10,14 @@ struct tmio_mmc_data; | |||
10 | #define SH_MOBILE_SDHI_IRQ_SDCARD "sdcard" | 10 | #define SH_MOBILE_SDHI_IRQ_SDCARD "sdcard" |
11 | #define SH_MOBILE_SDHI_IRQ_SDIO "sdio" | 11 | #define SH_MOBILE_SDHI_IRQ_SDIO "sdio" |
12 | 12 | ||
13 | /** | ||
14 | * struct sh_mobile_sdhi_ops - SDHI driver callbacks | ||
15 | * @cd_wakeup: trigger a card-detection run | ||
16 | */ | ||
17 | struct sh_mobile_sdhi_ops { | ||
18 | void (*cd_wakeup)(const struct platform_device *pdev); | ||
19 | }; | ||
20 | |||
13 | struct sh_mobile_sdhi_info { | 21 | struct sh_mobile_sdhi_info { |
14 | int dma_slave_tx; | 22 | int dma_slave_tx; |
15 | int dma_slave_rx; | 23 | int dma_slave_rx; |
@@ -22,7 +30,8 @@ struct sh_mobile_sdhi_info { | |||
22 | int (*get_cd)(struct platform_device *pdev); | 30 | int (*get_cd)(struct platform_device *pdev); |
23 | 31 | ||
24 | /* callbacks for board specific setup code */ | 32 | /* callbacks for board specific setup code */ |
25 | int (*init)(struct platform_device *pdev); | 33 | int (*init)(struct platform_device *pdev, |
34 | const struct sh_mobile_sdhi_ops *ops); | ||
26 | void (*cleanup)(struct platform_device *pdev); | 35 | void (*cleanup)(struct platform_device *pdev); |
27 | }; | 36 | }; |
28 | 37 | ||