With the recent omap24xx register cleanup, the CONTROL_DEVCONF is only defined
at arch/arm/mach-omap2/pm.c.
So define 24XX_CONTROL_DEVCONF and use internal clock field in MMC
configuration.
I think it's the proper place to set mmc clock instead of board-specific one.
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
--
b/arch/arm/mach-omap2/board-apollon.c
Signed-off-by: Tony Lindgren <tony@atomide.com>
.mmc [0] = {
.enabled = 1,
.wire4 = 1,
+ /* Use internal loop-back in MMC/SDIO Module Input Clock selection */
+ .internal_clock = 1,
.wp_pin = -1,
.power_pin = -1,
/* Note: If you want to detect card feature, please assign 37 */
apollon_flash_init();
apollon_usb_init();
- /* Use Interal loop-back in MMC/SDIO Module Input Clock selection */
- CONTROL_DEVCONF |= (1 << 24);
-
/*
* Make sure the serial ports are muxed on at this point.
* You have to mux them off in device drivers later on
omap_cfg_reg(MMC_DAT3);
}
}
+ if (mmc->internal_clock) {
+ /*
+ * Use internal loop-back in MMC/SDIO
+ * Module Input Clock selection
+ */
+ if (cpu_is_omap24xx()) {
+ u32 v = omap_readl(OMAP24XX_CONTROL_DEVCONF);
+ v |= (1 << 24);
+ omap_writel(v, OMAP24XX_CONTROL_DEVCONF);
+ }
+ }
mmc1_conf = *mmc;
(void) platform_device_register(&mmc_omap_device1);
}
unsigned cover:1;
/* 4 wire signaling is optional, and is only used for SD/SDIO */
unsigned wire4:1;
+ /* use the internal clock */
+ unsigned internal_clock:1;
s16 power_pin;
s16 switch_pin;
s16 wp_pin;
#define OMAP24XX_IVA_INTC_BASE 0x40000000
#define IRQ_SIR_IRQ 0x0040
+#define OMAP24XX_CONTROL_DEVCONF (L4_24XX_BASE + 0x274)
#define OMAP24XX_CONTROL_STATUS (L4_24XX_BASE + 0x2f8)
#define OMAP2420_CTRL_BASE L4_24XX_BASE