diff options
Diffstat (limited to 'arch/arm/mach-omap1/board-h3-mmc.c')
-rw-r--r-- | arch/arm/mach-omap1/board-h3-mmc.c | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/arch/arm/mach-omap1/board-h3-mmc.c b/arch/arm/mach-omap1/board-h3-mmc.c index 0baba1c4d12d..fdfe793d56f2 100644 --- a/arch/arm/mach-omap1/board-h3-mmc.c +++ b/arch/arm/mach-omap1/board-h3-mmc.c | |||
@@ -12,13 +12,61 @@ | |||
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/platform_device.h> | ||
16 | |||
17 | #include <linux/i2c/tps65010.h> | ||
18 | |||
15 | #include <mach/mmc.h> | 19 | #include <mach/mmc.h> |
16 | #include <mach/gpio.h> | 20 | #include <mach/gpio.h> |
17 | 21 | ||
22 | #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) | ||
23 | |||
24 | static int mmc_set_power(struct device *dev, int slot, int power_on, | ||
25 | int vdd) | ||
26 | { | ||
27 | if (power_on) | ||
28 | gpio_direction_output(H3_TPS_GPIO_MMC_PWR_EN, 1); | ||
29 | else | ||
30 | gpio_direction_output(H3_TPS_GPIO_MMC_PWR_EN, 0); | ||
31 | |||
32 | return 0; | ||
33 | } | ||
34 | |||
35 | /* | ||
36 | * H3 could use the following functions tested: | ||
37 | * - mmc_get_cover_state that uses OMAP_MPUIO(1) | ||
38 | * - mmc_get_wp that maybe uses OMAP_MPUIO(3) | ||
39 | */ | ||
40 | static struct omap_mmc_platform_data mmc1_data = { | ||
41 | .nr_slots = 1, | ||
42 | .dma_mask = 0xffffffff, | ||
43 | .slots[0] = { | ||
44 | .set_power = mmc_set_power, | ||
45 | .ocr_mask = MMC_VDD_28_29 | MMC_VDD_30_31 | | ||
46 | MMC_VDD_32_33 | MMC_VDD_33_34, | ||
47 | .name = "mmcblk", | ||
48 | }, | ||
49 | }; | ||
50 | |||
51 | static struct omap_mmc_platform_data *mmc_data[OMAP16XX_NR_MMC]; | ||
52 | |||
18 | void __init h3_mmc_init(void) | 53 | void __init h3_mmc_init(void) |
19 | { | 54 | { |
55 | int ret; | ||
56 | |||
57 | ret = gpio_request(H3_TPS_GPIO_MMC_PWR_EN, "MMC power"); | ||
58 | if (ret < 0) | ||
59 | return; | ||
60 | gpio_direction_output(H3_TPS_GPIO_MMC_PWR_EN, 0); | ||
61 | |||
62 | mmc_data[0] = &mmc1_data; | ||
63 | omap1_init_mmc(mmc_data, OMAP16XX_NR_MMC); | ||
20 | } | 64 | } |
21 | 65 | ||
22 | void h3_mmc_slot_cover_handler(void *arg, int state) | 66 | #else |
67 | |||
68 | void __init h3_mmc_init(void) | ||
23 | { | 69 | { |
24 | } | 70 | } |
71 | |||
72 | #endif | ||