|
@@ -29,6 +29,7 @@
|
|
#include <i2c.h>
|
|
#include <i2c.h>
|
|
#include <twl4030.h>
|
|
#include <twl4030.h>
|
|
#include <twl6030.h>
|
|
#include <twl6030.h>
|
|
|
|
+#include <twl6035.h>
|
|
#include <asm/io.h>
|
|
#include <asm/io.h>
|
|
#include <asm/arch/mmc_host_def.h>
|
|
#include <asm/arch/mmc_host_def.h>
|
|
#include <asm/arch/sys_proto.h>
|
|
#include <asm/arch/sys_proto.h>
|
|
@@ -60,6 +61,34 @@ static void omap4_vmmc_pbias_config(struct mmc *mmc)
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+#if defined(CONFIG_OMAP54XX) && defined(CONFIG_TWL6035_POWER)
|
|
|
|
+static void omap5_pbias_config(struct mmc *mmc)
|
|
|
|
+{
|
|
|
|
+ u32 value = 0;
|
|
|
|
+ struct omap_sys_ctrl_regs *const ctrl =
|
|
|
|
+ (struct omap_sys_ctrl_regs *) SYSCTRL_GENERAL_CORE_BASE;
|
|
|
|
+
|
|
|
|
+ value = readl(&ctrl->control_pbias);
|
|
|
|
+ value &= ~(SDCARD_PWRDNZ | SDCARD_BIAS_PWRDNZ);
|
|
|
|
+ value |= SDCARD_BIAS_HIZ_MODE;
|
|
|
|
+ writel(value, &ctrl->control_pbias);
|
|
|
|
+
|
|
|
|
+ twl6035_mmc1_poweron_ldo();
|
|
|
|
+
|
|
|
|
+ value = readl(&ctrl->control_pbias);
|
|
|
|
+ value &= ~SDCARD_BIAS_HIZ_MODE;
|
|
|
|
+ value |= SDCARD_PBIASLITE_VMODE | SDCARD_PWRDNZ | SDCARD_BIAS_PWRDNZ;
|
|
|
|
+ writel(value, &ctrl->control_pbias);
|
|
|
|
+
|
|
|
|
+ value = readl(&ctrl->control_pbias);
|
|
|
|
+ if (value & (1 << 23)) {
|
|
|
|
+ value &= ~(SDCARD_PWRDNZ | SDCARD_BIAS_PWRDNZ);
|
|
|
|
+ value |= SDCARD_BIAS_HIZ_MODE;
|
|
|
|
+ writel(value, &ctrl->control_pbias);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
+
|
|
unsigned char mmc_board_init(struct mmc *mmc)
|
|
unsigned char mmc_board_init(struct mmc *mmc)
|
|
{
|
|
{
|
|
#if defined(CONFIG_TWL4030_POWER)
|
|
#if defined(CONFIG_TWL4030_POWER)
|
|
@@ -99,6 +128,10 @@ unsigned char mmc_board_init(struct mmc *mmc)
|
|
if (mmc->block_dev.dev == 0)
|
|
if (mmc->block_dev.dev == 0)
|
|
omap4_vmmc_pbias_config(mmc);
|
|
omap4_vmmc_pbias_config(mmc);
|
|
#endif
|
|
#endif
|
|
|
|
+#if defined(CONFIG_OMAP54XX) && defined(CONFIG_TWL6035_POWER)
|
|
|
|
+ if (mmc->block_dev.dev == 0)
|
|
|
|
+ omap5_pbias_config(mmc);
|
|
|
|
+#endif
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|