mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 06:00:43 +00:00
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>
This commit is contained in:
parent
2114429896
commit
dd23e59d59
4 changed files with 63 additions and 3 deletions
|
@ -125,9 +125,10 @@
|
|||
/* CONTROL_EFUSE_2 */
|
||||
#define CONTROL_EFUSE_2_NMOS_PMOS_PTV_CODE_1 0x00ffc000
|
||||
|
||||
#define MMC1_PWRDNZ (1 << 26)
|
||||
#define MMC1_PBIASLITE_PWRDNZ (1 << 22)
|
||||
#define MMC1_PBIASLITE_VMODE (1 << 21)
|
||||
#define SDCARD_PWRDNZ (1 << 26)
|
||||
#define SDCARD_BIAS_HIZ_MODE (1 << 25)
|
||||
#define SDCARD_BIAS_PWRDNZ (1 << 22)
|
||||
#define SDCARD_PBIASLITE_VMODE (1 << 21)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -34,7 +34,32 @@ int twl6035_i2c_read_u8(u8 chip_no, u8 *val, u8 reg)
|
|||
return i2c_read(chip_no, reg, 1, val, 1);
|
||||
}
|
||||
|
||||
/* To align with i2c mw/mr address, reg, val command syntax */
|
||||
static inline int palmas_write_u8(u8 chip_no, u8 reg, u8 val)
|
||||
{
|
||||
return i2c_write(chip_no, reg, 1, &val, 1);
|
||||
}
|
||||
|
||||
static inline int palmas_read_u8(u8 chip_no, u8 reg, u8 *val)
|
||||
{
|
||||
return i2c_read(chip_no, reg, 1, val, 1);
|
||||
}
|
||||
|
||||
void twl6035_init_settings(void)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void twl6035_mmc1_poweron_ldo(void)
|
||||
{
|
||||
u8 val = 0;
|
||||
|
||||
/* set LDO9 TWL6035 to 3V */
|
||||
val = 0x2b; /* (3 -.9)*28 +1 */
|
||||
palmas_write_u8(0x48, LDO9_VOLTAGE, val);
|
||||
|
||||
/* TURN ON LDO9 */
|
||||
val = LDO_ON | LDO_MODE_SLEEP | LDO_MODE_ACTIVE;
|
||||
palmas_write_u8(0x48, LDO9_CTRL, val);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -39,3 +39,4 @@
|
|||
int twl6035_i2c_write_u8(u8 chip_no, u8 val, u8 reg);
|
||||
int twl6035_i2c_read_u8(u8 chip_no, u8 *val, u8 reg);
|
||||
void twl6035_init_settings(void);
|
||||
void twl6035_mmc1_poweron_ldo(void);
|
||||
|
|
Loading…
Reference in a new issue