diff options
author | Madhu <madhu.cr@ti.com> | 2009-11-22 13:11:08 -0500 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2009-11-22 13:24:32 -0500 |
commit | 555d503ff30b3b1292d743bb77b19212b6befb59 (patch) | |
tree | 1e540873e6351a0a1e92c79eb326973eba9ee73e /arch | |
parent | 41fd03d66e6ae4430a0fdf7c62692a7b20b6ee6b (diff) |
omap3630: Set omap3630 MMC1 I/O speed to 52Mhz
The speed ctrl bit for MMC I/O is part of CONTROL_PROG_IO1 register
in omap3630.This patch sets it up accordingly.
Signed-off-by: Madhusudhan Chikkature <madhu.cr@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap2/mmc-twl4030.c | 11 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/control.h | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c index 7bef170686dd..0c3c72d934bf 100644 --- a/arch/arm/mach-omap2/mmc-twl4030.c +++ b/arch/arm/mach-omap2/mmc-twl4030.c | |||
@@ -213,7 +213,7 @@ static int twl4030_mmc_get_context_loss(struct device *dev) | |||
213 | static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, | 213 | static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, |
214 | int vdd) | 214 | int vdd) |
215 | { | 215 | { |
216 | u32 reg; | 216 | u32 reg, prog_io; |
217 | int ret = 0; | 217 | int ret = 0; |
218 | struct twl_mmc_controller *c = &hsmmc[0]; | 218 | struct twl_mmc_controller *c = &hsmmc[0]; |
219 | struct omap_mmc_platform_data *mmc = dev->platform_data; | 219 | struct omap_mmc_platform_data *mmc = dev->platform_data; |
@@ -245,7 +245,14 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, | |||
245 | } | 245 | } |
246 | 246 | ||
247 | reg = omap_ctrl_readl(control_pbias_offset); | 247 | reg = omap_ctrl_readl(control_pbias_offset); |
248 | reg |= OMAP2_PBIASSPEEDCTRL0; | 248 | if (cpu_is_omap3630()) { |
249 | /* Set MMC I/O to 52Mhz */ | ||
250 | prog_io = omap_ctrl_readl(OMAP343X_CONTROL_PROG_IO1); | ||
251 | prog_io |= OMAP3630_PRG_SDMMC1_SPEEDCTRL; | ||
252 | omap_ctrl_writel(prog_io, OMAP343X_CONTROL_PROG_IO1); | ||
253 | } else { | ||
254 | reg |= OMAP2_PBIASSPEEDCTRL0; | ||
255 | } | ||
249 | reg &= ~OMAP2_PBIASLITEPWRDNZ0; | 256 | reg &= ~OMAP2_PBIASLITEPWRDNZ0; |
250 | omap_ctrl_writel(reg, control_pbias_offset); | 257 | omap_ctrl_writel(reg, control_pbias_offset); |
251 | 258 | ||
diff --git a/arch/arm/plat-omap/include/plat/control.h b/arch/arm/plat-omap/include/plat/control.h index 79985e497c4e..2ae884378638 100644 --- a/arch/arm/plat-omap/include/plat/control.h +++ b/arch/arm/plat-omap/include/plat/control.h | |||
@@ -241,6 +241,9 @@ | |||
241 | #define OMAP2_PBIASLITEPWRDNZ0 (1 << 1) | 241 | #define OMAP2_PBIASLITEPWRDNZ0 (1 << 1) |
242 | #define OMAP2_PBIASLITEVMODE0 (1 << 0) | 242 | #define OMAP2_PBIASLITEVMODE0 (1 << 0) |
243 | 243 | ||
244 | /* CONTROL_PROG_IO1 bits */ | ||
245 | #define OMAP3630_PRG_SDMMC1_SPEEDCTRL (1 << 20) | ||
246 | |||
244 | /* CONTROL_IVA2_BOOTMOD bits */ | 247 | /* CONTROL_IVA2_BOOTMOD bits */ |
245 | #define OMAP3_IVA2_BOOTMOD_SHIFT 0 | 248 | #define OMAP3_IVA2_BOOTMOD_SHIFT 0 |
246 | #define OMAP3_IVA2_BOOTMOD_MASK (0xf << 0) | 249 | #define OMAP3_IVA2_BOOTMOD_MASK (0xf << 0) |