|
@@ -213,7 +213,7 @@ static int twl4030_mmc_get_context_loss(struct device *dev)
|
|
|
static int twl_mmc1_set_power(struct device *dev, int slot, int power_on,
|
|
|
int vdd)
|
|
|
{
|
|
|
- u32 reg;
|
|
|
+ u32 reg, prog_io;
|
|
|
int ret = 0;
|
|
|
struct twl_mmc_controller *c = &hsmmc[0];
|
|
|
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,
|
|
|
}
|
|
|
|
|
|
reg = omap_ctrl_readl(control_pbias_offset);
|
|
|
- reg |= OMAP2_PBIASSPEEDCTRL0;
|
|
|
+ if (cpu_is_omap3630()) {
|
|
|
+ /* Set MMC I/O to 52Mhz */
|
|
|
+ prog_io = omap_ctrl_readl(OMAP343X_CONTROL_PROG_IO1);
|
|
|
+ prog_io |= OMAP3630_PRG_SDMMC1_SPEEDCTRL;
|
|
|
+ omap_ctrl_writel(prog_io, OMAP343X_CONTROL_PROG_IO1);
|
|
|
+ } else {
|
|
|
+ reg |= OMAP2_PBIASSPEEDCTRL0;
|
|
|
+ }
|
|
|
reg &= ~OMAP2_PBIASLITEPWRDNZ0;
|
|
|
omap_ctrl_writel(reg, control_pbias_offset);
|
|
|
|