diff options
| author | Balaji T K <balajitk@ti.com> | 2012-03-12 02:25:49 +0000 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2012-05-15 08:31:25 +0200 | 
| commit | dd23e59d595f02f6f79b003c372b22b467a005f2 (patch) | |
| tree | abf8102c15a4d23eb54d5289e912f3064c2428ee /drivers/mmc/omap_hsmmc.c | |
| parent | 211442989628d72fad1f2663a0bf5076e425fabd (diff) | |
| download | olio-uboot-2014.01-dd23e59d595f02f6f79b003c372b22b467a005f2.tar.xz olio-uboot-2014.01-dd23e59d595f02f6f79b003c372b22b467a005f2.zip | |
omap5: pbias ldo9 turn on
Add omap5 pbias configuration for mmc1/sd lines
and set voltage for sd data i/o lines
Signed-off-by: Balaji T K <balajitk@ti.com>
Diffstat (limited to 'drivers/mmc/omap_hsmmc.c')
| -rw-r--r-- | drivers/mmc/omap_hsmmc.c | 33 | 
1 files changed, 33 insertions, 0 deletions
| diff --git a/drivers/mmc/omap_hsmmc.c b/drivers/mmc/omap_hsmmc.c index f421ff9ee..e3670d4ad 100644 --- a/drivers/mmc/omap_hsmmc.c +++ b/drivers/mmc/omap_hsmmc.c @@ -29,6 +29,7 @@  #include <i2c.h>  #include <twl4030.h>  #include <twl6030.h> +#include <twl6035.h>  #include <asm/io.h>  #include <asm/arch/mmc_host_def.h>  #include <asm/arch/sys_proto.h> @@ -60,6 +61,34 @@ static void omap4_vmmc_pbias_config(struct mmc *mmc)  }  #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)  {  #if defined(CONFIG_TWL4030_POWER) @@ -99,6 +128,10 @@ unsigned char mmc_board_init(struct mmc *mmc)  	if (mmc->block_dev.dev == 0)  		omap4_vmmc_pbias_config(mmc);  #endif +#if defined(CONFIG_OMAP54XX) && defined(CONFIG_TWL6035_POWER) +	if (mmc->block_dev.dev == 0) +		omap5_pbias_config(mmc); +#endif  	return 0;  } |