diff options
author | Tony Lindgren <tony@atomide.com> | 2008-12-10 20:37:17 -0500 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2008-12-10 20:37:17 -0500 |
commit | 90c62bf08f5823faa097271f3346a9142769b9ac (patch) | |
tree | aa3bf442380815268b03092fd4b9c47924f9c3ee /arch/arm/mach-omap2/board-omap3pandora.c | |
parent | d88746652b4d133284d1fdd05b5e999e8f44c998 (diff) |
omap mmc: Add low-level initialization for hsmmc controller
Add low-level initialization for hsmmc controller. Merged into
this patch patch are various improvments and board support by
Grazvydas Ignotas and David Brownell.
Also change wire4 to be wires, as some newer controllers support
8 data lines.
Cc: Pierre Ossman <drzeus-mmc@drzeus.cx>
Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/board-omap3pandora.c')
-rw-r--r-- | arch/arm/mach-omap2/board-omap3pandora.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c index 7236c7be05b3..b3196107afdb 100644 --- a/arch/arm/mach-omap2/board-omap3pandora.c +++ b/arch/arm/mach-omap2/board-omap3pandora.c | |||
@@ -35,16 +35,48 @@ | |||
35 | #include <mach/hardware.h> | 35 | #include <mach/hardware.h> |
36 | #include <mach/mcspi.h> | 36 | #include <mach/mcspi.h> |
37 | 37 | ||
38 | #include "mmc-twl4030.h" | ||
39 | |||
38 | #define OMAP3_PANDORA_TS_GPIO 94 | 40 | #define OMAP3_PANDORA_TS_GPIO 94 |
39 | 41 | ||
42 | static struct twl4030_hsmmc_info omap3pandora_mmc[] = { | ||
43 | { | ||
44 | .mmc = 1, | ||
45 | .wires = 4, | ||
46 | .gpio_cd = -EINVAL, | ||
47 | .gpio_wp = 126, | ||
48 | .ext_clock = 0, | ||
49 | }, | ||
50 | { | ||
51 | .mmc = 2, | ||
52 | .wires = 4, | ||
53 | .gpio_cd = -EINVAL, | ||
54 | .gpio_wp = 127, | ||
55 | .ext_clock = 1, | ||
56 | }, | ||
57 | {} /* Terminator */ | ||
58 | }; | ||
59 | |||
40 | static struct omap_uart_config omap3pandora_uart_config __initdata = { | 60 | static struct omap_uart_config omap3pandora_uart_config __initdata = { |
41 | .enabled_uarts = (1 << 2), /* UART3 */ | 61 | .enabled_uarts = (1 << 2), /* UART3 */ |
42 | }; | 62 | }; |
43 | 63 | ||
64 | static int omap3pandora_twl_gpio_setup(struct device *dev, | ||
65 | unsigned gpio, unsigned ngpio) | ||
66 | { | ||
67 | /* gpio + {0,1} is "mmc{0,1}_cd" (input/IRQ) */ | ||
68 | omap3pandora_mmc[0].gpio_cd = gpio + 0; | ||
69 | omap3pandora_mmc[1].gpio_cd = gpio + 1; | ||
70 | twl4030_mmc_init(omap3pandora_mmc); | ||
71 | |||
72 | return 0; | ||
73 | } | ||
74 | |||
44 | static struct twl4030_gpio_platform_data omap3pandora_gpio_data = { | 75 | static struct twl4030_gpio_platform_data omap3pandora_gpio_data = { |
45 | .gpio_base = OMAP_MAX_GPIO_LINES, | 76 | .gpio_base = OMAP_MAX_GPIO_LINES, |
46 | .irq_base = TWL4030_GPIO_IRQ_BASE, | 77 | .irq_base = TWL4030_GPIO_IRQ_BASE, |
47 | .irq_end = TWL4030_GPIO_IRQ_END, | 78 | .irq_end = TWL4030_GPIO_IRQ_END, |
79 | .setup = omap3pandora_twl_gpio_setup, | ||
48 | }; | 80 | }; |
49 | 81 | ||
50 | static struct twl4030_usb_data omap3pandora_usb_data = { | 82 | static struct twl4030_usb_data omap3pandora_usb_data = { |