aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMadhu <madhu.cr@ti.com>2009-11-22 13:11:08 -0500
committerTony Lindgren <tony@atomide.com>2009-11-22 13:24:32 -0500
commit555d503ff30b3b1292d743bb77b19212b6befb59 (patch)
tree1e540873e6351a0a1e92c79eb326973eba9ee73e /arch
parent41fd03d66e6ae4430a0fdf7c62692a7b20b6ee6b (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.c11
-rw-r--r--arch/arm/plat-omap/include/plat/control.h3
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)
213static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, 213static 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)