Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Kyungmin Park and committed by
Tony Lindgren
abc45e1d d1284b5f

+51 -5
+5 -2
arch/arm/mach-omap2/board-apollon.c
··· 166 166 167 167 static struct omap_mmc_config apollon_mmc_config __initdata = { 168 168 .mmc [0] = { 169 - .enabled = 0, 170 - .wire4 = 0, 169 + .enabled = 1, 170 + .wire4 = 1, 171 171 .wp_pin = -1, 172 172 .power_pin = -1, 173 173 .switch_pin = -1, ··· 256 256 257 257 /* REVISIT: where's the correct place */ 258 258 omap_cfg_reg(W19_24XX_SYS_NIRQ); 259 + 260 + /* Use Interal loop-back in MMC/SDIO Module Input Clock selection */ 261 + CONTROL_DEVCONF |= (1 << 24); 259 262 260 263 /* 261 264 * Make sure the serial ports are muxed on at this point.
+14
arch/arm/mach-omap2/mux.c
··· 104 104 MUX_CFG_24XX("K15_24XX_UART3_TX", 0x118, 0, 0, 0, 1) 105 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 121 /* Keypad GPIO*/ 108 122 MUX_CFG_24XX("T19_24XX_KBR0", 0x106, 3, 1, 1, 1) 109 123 MUX_CFG_24XX("R19_24XX_KBR1", 0x107, 3, 1, 1, 1)
+17 -3
arch/arm/plat-omap/devices.c
··· 148 148 149 149 #ifdef CONFIG_ARCH_OMAP24XX 150 150 #define OMAP_MMC1_BASE 0x4809c000 151 - #define OMAP_MMC1_INT 83 151 + #define OMAP_MMC1_INT INT_24XX_MMC_IRQ 152 152 #else 153 153 #define OMAP_MMC1_BASE 0xfffb7800 154 154 #define OMAP_MMC1_INT INT_MMC ··· 225 225 /* block 1 is always available and has just one pinout option */ 226 226 mmc = &mmc_conf->mmc[0]; 227 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 236 omap_cfg_reg(MMC_CMD); 230 237 omap_cfg_reg(MMC_CLK); 231 238 omap_cfg_reg(MMC_DAT0); ··· 243 236 } 244 237 } 245 238 if (mmc->wire4) { 246 - if (!cpu_is_omap24xx()) { 239 + if (cpu_is_omap24xx()) { 240 + omap_cfg_reg(H14_24XX_MMC_DAT1); 241 + omap_cfg_reg(E19_24XX_MMC_DAT2); 242 + omap_cfg_reg(D19_24XX_MMC_DAT3); 243 + omap_cfg_reg(E20_24XX_MMC_DAT_DIR1); 244 + omap_cfg_reg(F18_24XX_MMC_DAT_DIR2); 245 + omap_cfg_reg(E18_24XX_MMC_DAT_DIR3); 246 + } else { 247 247 omap_cfg_reg(MMC_DAT1); 248 248 /* NOTE: DAT2 can be on W10 (here) or M15 */ 249 249 if (!mmc->nomux)
+1
include/asm-arm/arch-omap/irqs.h
··· 262 262 #define INT_24XX_UART1_IRQ 72 263 263 #define INT_24XX_UART2_IRQ 73 264 264 #define INT_24XX_UART3_IRQ 74 265 + #define INT_24XX_MMC_IRQ 83 265 266 266 267 /* Max. 128 level 2 IRQs (OMAP1610), 192 GPIOs (OMAP730) and 267 268 * 16 MPUIO lines */
+14
include/asm-arm/arch-omap/mux.h
··· 461 461 K15_24XX_UART3_TX, 462 462 K14_24XX_UART3_RX, 463 463 464 + /* MMC/SDIO */ 465 + G19_24XX_MMC_CLKO, 466 + H18_24XX_MMC_CMD, 467 + F20_24XX_MMC_DAT0, 468 + H14_24XX_MMC_DAT1, 469 + E19_24XX_MMC_DAT2, 470 + D19_24XX_MMC_DAT3, 471 + F19_24XX_MMC_DAT_DIR0, 472 + E20_24XX_MMC_DAT_DIR1, 473 + F18_24XX_MMC_DAT_DIR2, 474 + E18_24XX_MMC_DAT_DIR3, 475 + G18_24XX_MMC_CMD_DIR, 476 + H15_24XX_MMC_CLKI, 477 + 464 478 /* Keypad GPIO*/ 465 479 T19_24XX_KBR0, 466 480 R19_24XX_KBR1,