diff options
author | Kyungmin Park <kyungmin.park@samsung.com> | 2006-09-25 05:41:25 -0400 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2006-09-25 05:41:25 -0400 |
commit | abc45e1d69542281fb2b40968e5d112f51976623 (patch) | |
tree | 363aec3e781d5d44762dd7513cbfb678ac746c37 /arch | |
parent | d1284b5f11aa946d732d60a402dfeec86a7bb2ef (diff) |
ARM: OMAP: Apollon MMC support
Apollon board MMC supports on OMAP2
TODO:
We have to check MMC on H4
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap2/board-apollon.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-omap2/mux.c | 14 | ||||
-rw-r--r-- | arch/arm/plat-omap/devices.c | 20 |
3 files changed, 36 insertions, 5 deletions
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c index 7993b7bae2bd..2db6b732b084 100644 --- a/arch/arm/mach-omap2/board-apollon.c +++ b/arch/arm/mach-omap2/board-apollon.c | |||
@@ -166,8 +166,8 @@ static struct omap_uart_config apollon_uart_config __initdata = { | |||
166 | 166 | ||
167 | static struct omap_mmc_config apollon_mmc_config __initdata = { | 167 | static struct omap_mmc_config apollon_mmc_config __initdata = { |
168 | .mmc [0] = { | 168 | .mmc [0] = { |
169 | .enabled = 0, | 169 | .enabled = 1, |
170 | .wire4 = 0, | 170 | .wire4 = 1, |
171 | .wp_pin = -1, | 171 | .wp_pin = -1, |
172 | .power_pin = -1, | 172 | .power_pin = -1, |
173 | .switch_pin = -1, | 173 | .switch_pin = -1, |
@@ -257,6 +257,9 @@ static void __init omap_apollon_init(void) | |||
257 | /* REVISIT: where's the correct place */ | 257 | /* REVISIT: where's the correct place */ |
258 | omap_cfg_reg(W19_24XX_SYS_NIRQ); | 258 | omap_cfg_reg(W19_24XX_SYS_NIRQ); |
259 | 259 | ||
260 | /* Use Interal loop-back in MMC/SDIO Module Input Clock selection */ | ||
261 | CONTROL_DEVCONF |= (1 << 24); | ||
262 | |||
260 | /* | 263 | /* |
261 | * Make sure the serial ports are muxed on at this point. | 264 | * Make sure the serial ports are muxed on at this point. |
262 | * You have to mux them off in device drivers later on | 265 | * You have to mux them off in device drivers later on |
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 60ef084faffd..f538d0fdb13c 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
@@ -104,6 +104,20 @@ MUX_CFG_24XX("P20_24XX_TSC_IRQ", 0x108, 0, 0, 0, 1) | |||
104 | MUX_CFG_24XX("K15_24XX_UART3_TX", 0x118, 0, 0, 0, 1) | 104 | MUX_CFG_24XX("K15_24XX_UART3_TX", 0x118, 0, 0, 0, 1) |
105 | MUX_CFG_24XX("K14_24XX_UART3_RX", 0x119, 0, 0, 0, 1) | 105 | MUX_CFG_24XX("K14_24XX_UART3_RX", 0x119, 0, 0, 0, 1) |
106 | 106 | ||
107 | /* MMC/SDIO */ | ||
108 | MUX_CFG_24XX("G19_24XX_MMC_CLKO", 0x0f3, 0, 0, 0, 1) | ||
109 | MUX_CFG_24XX("H18_24XX_MMC_CMD", 0x0f4, 0, 0, 0, 1) | ||
110 | MUX_CFG_24XX("F20_24XX_MMC_DAT0", 0x0f5, 0, 0, 0, 1) | ||
111 | MUX_CFG_24XX("H14_24XX_MMC_DAT1", 0x0f6, 0, 0, 0, 1) | ||
112 | MUX_CFG_24XX("E19_24XX_MMC_DAT2", 0x0f7, 0, 0, 0, 1) | ||
113 | MUX_CFG_24XX("D19_24XX_MMC_DAT3", 0x0f8, 0, 0, 0, 1) | ||
114 | MUX_CFG_24XX("F19_24XX_MMC_DAT_DIR0", 0x0f9, 0, 0, 0, 1) | ||
115 | MUX_CFG_24XX("E20_24XX_MMC_DAT_DIR1", 0x0fa, 0, 0, 0, 1) | ||
116 | MUX_CFG_24XX("F18_24XX_MMC_DAT_DIR2", 0x0fb, 0, 0, 0, 1) | ||
117 | MUX_CFG_24XX("E18_24XX_MMC_DAT_DIR3", 0x0fc, 0, 0, 0, 1) | ||
118 | MUX_CFG_24XX("G18_24XX_MMC_CMD_DIR", 0x0fd, 0, 0, 0, 1) | ||
119 | MUX_CFG_24XX("H15_24XX_MMC_CLKI", 0x0fe, 0, 0, 0, 1) | ||
120 | |||
107 | /* Keypad GPIO*/ | 121 | /* Keypad GPIO*/ |
108 | MUX_CFG_24XX("T19_24XX_KBR0", 0x106, 3, 1, 1, 1) | 122 | MUX_CFG_24XX("T19_24XX_KBR0", 0x106, 3, 1, 1, 1) |
109 | MUX_CFG_24XX("R19_24XX_KBR1", 0x107, 3, 1, 1, 1) | 123 | MUX_CFG_24XX("R19_24XX_KBR1", 0x107, 3, 1, 1, 1) |
diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c index 1812f237d12f..dbc3f44e07a6 100644 --- a/arch/arm/plat-omap/devices.c +++ b/arch/arm/plat-omap/devices.c | |||
@@ -148,7 +148,7 @@ static inline void omap_init_kp(void) {} | |||
148 | 148 | ||
149 | #ifdef CONFIG_ARCH_OMAP24XX | 149 | #ifdef CONFIG_ARCH_OMAP24XX |
150 | #define OMAP_MMC1_BASE 0x4809c000 | 150 | #define OMAP_MMC1_BASE 0x4809c000 |
151 | #define OMAP_MMC1_INT 83 | 151 | #define OMAP_MMC1_INT INT_24XX_MMC_IRQ |
152 | #else | 152 | #else |
153 | #define OMAP_MMC1_BASE 0xfffb7800 | 153 | #define OMAP_MMC1_BASE 0xfffb7800 |
154 | #define OMAP_MMC1_INT INT_MMC | 154 | #define OMAP_MMC1_INT INT_MMC |
@@ -225,7 +225,14 @@ static void __init omap_init_mmc(void) | |||
225 | /* block 1 is always available and has just one pinout option */ | 225 | /* block 1 is always available and has just one pinout option */ |
226 | mmc = &mmc_conf->mmc[0]; | 226 | mmc = &mmc_conf->mmc[0]; |
227 | if (mmc->enabled) { | 227 | if (mmc->enabled) { |
228 | if (!cpu_is_omap24xx()) { | 228 | if (cpu_is_omap24xx()) { |
229 | omap_cfg_reg(H18_24XX_MMC_CMD); | ||
230 | omap_cfg_reg(H15_24XX_MMC_CLKI); | ||
231 | omap_cfg_reg(G19_24XX_MMC_CLKO); | ||
232 | omap_cfg_reg(F20_24XX_MMC_DAT0); | ||
233 | omap_cfg_reg(F19_24XX_MMC_DAT_DIR0); | ||
234 | omap_cfg_reg(G18_24XX_MMC_CMD_DIR); | ||
235 | } else { | ||
229 | omap_cfg_reg(MMC_CMD); | 236 | omap_cfg_reg(MMC_CMD); |
230 | omap_cfg_reg(MMC_CLK); | 237 | omap_cfg_reg(MMC_CLK); |
231 | omap_cfg_reg(MMC_DAT0); | 238 | omap_cfg_reg(MMC_DAT0); |
@@ -236,7 +243,14 @@ static void __init omap_init_mmc(void) | |||
236 | } | 243 | } |
237 | } | 244 | } |
238 | if (mmc->wire4) { | 245 | if (mmc->wire4) { |
239 | if (!cpu_is_omap24xx()) { | 246 | if (cpu_is_omap24xx()) { |
247 | omap_cfg_reg(H14_24XX_MMC_DAT1); | ||
248 | omap_cfg_reg(E19_24XX_MMC_DAT2); | ||
249 | omap_cfg_reg(D19_24XX_MMC_DAT3); | ||
250 | omap_cfg_reg(E20_24XX_MMC_DAT_DIR1); | ||
251 | omap_cfg_reg(F18_24XX_MMC_DAT_DIR2); | ||
252 | omap_cfg_reg(E18_24XX_MMC_DAT_DIR3); | ||
253 | } else { | ||
240 | omap_cfg_reg(MMC_DAT1); | 254 | omap_cfg_reg(MMC_DAT1); |
241 | /* NOTE: DAT2 can be on W10 (here) or M15 */ | 255 | /* NOTE: DAT2 can be on W10 (here) or M15 */ |
242 | if (!mmc->nomux) | 256 | if (!mmc->nomux) |