diff options
author | Robin Gong <B38343@freescale.com> | 2012-06-28 14:33:17 +0800 |
---|---|---|
committer | Xinyu Chen <xinyu.chen@freescale.com> | 2012-07-05 15:50:02 +0800 |
commit | 0f619f19ef9a76279a4b4bcd9271365a0b7f72c5 (patch) | |
tree | da8c2344dd711ad2d9a070c67613b40a1f32de41 /arch | |
parent | 2d70e43830b83a79d7dabd58059e812c5c42c4af (diff) |
ENGR00215188-3 mx6sl:enable LDO bypass function on mx6sl_arm2
enable LDO bypass function on mx6sl_arm2 board as mx6q_sabresd board
Signed-off-by: Robin Gong <B38343@freescale.com>
Diffstat (limited to 'arch')
-rwxr-xr-x | arch/arm/mach-mx6/board-mx6sl_arm2.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-mx6/mx6sl_arm2_pmic_pfuze100.c | 26 |
2 files changed, 25 insertions, 5 deletions
diff --git a/arch/arm/mach-mx6/board-mx6sl_arm2.c b/arch/arm/mach-mx6/board-mx6sl_arm2.c index fe9677f1fe6b..5ba62fad8257 100755 --- a/arch/arm/mach-mx6/board-mx6sl_arm2.c +++ b/arch/arm/mach-mx6/board-mx6sl_arm2.c @@ -1216,8 +1216,12 @@ static void __init mx6_arm2_init(void) elan_ts_init(); + #ifdef CONFIG_MX6_INTER_LDO_BYPASS + gp_reg_id = "VDDCORE"; + #else gp_reg_id = "cpu_vddgp"; mx6_cpu_regulator_init(); + #endif imx6q_add_imx_snvs_rtc(); diff --git a/arch/arm/mach-mx6/mx6sl_arm2_pmic_pfuze100.c b/arch/arm/mach-mx6/mx6sl_arm2_pmic_pfuze100.c index 0d5a37cb0df0..0c3f1b20d361 100644 --- a/arch/arm/mach-mx6/mx6sl_arm2_pmic_pfuze100.c +++ b/arch/arm/mach-mx6/mx6sl_arm2_pmic_pfuze100.c @@ -63,8 +63,19 @@ #define PFUZE100_SWBSTCON1 102 #define PFUZE100_SWBSTCON1_SWBSTMOD_VAL (0x1<<2) #define PFUZE100_SWBSTCON1_SWBSTMOD_M (0x3<<2) +#define PFUZE100_SW1ACON 36 +#define PFUZE100_SW1ACON_SPEED_VAL (0x1<<6) /*default */ +#define PFUZE100_SW1ACON_SPEED_M (0x3<<6) +#ifdef CONFIG_MX6_INTER_LDO_BYPASS +static struct regulator_consumer_supply sw1_consumers[] = { + { + .supply = "VDDCORE", + } +}; +#endif + static struct regulator_consumer_supply sw2_consumers[] = { { .supply = "MICVDD", @@ -140,6 +151,10 @@ static struct regulator_init_data sw1a_init = { .boot_on = 1, .always_on = 1, }, + #ifdef CONFIG_MX6_INTER_LDO_BYPASS + .num_consumer_supplies = ARRAY_SIZE(sw1_consumers), + .consumer_supplies = sw1_consumers, + #endif }; static struct regulator_init_data sw1b_init = { @@ -369,16 +384,17 @@ static int pfuze100_init(struct mc_pfuze *pfuze) PFUZE100_SW1ASTANDBY_STBY_VAL); if (ret) goto err; - ret = pfuze_reg_rmw(pfuze, PFUZE100_SW1BSTANDBY, - PFUZE100_SW1BSTANDBY_STBY_M, - PFUZE100_SW1BSTANDBY_STBY_VAL); - if (ret) - goto err; ret = pfuze_reg_rmw(pfuze, PFUZE100_SW1CSTANDBY, PFUZE100_SW1CSTANDBY_STBY_M, PFUZE100_SW1CSTANDBY_STBY_VAL); if (ret) goto err; + /*set SW1ABDVSPEED as 25mV step each 4us,quick than 16us before.*/ + ret = pfuze_reg_rmw(pfuze, PFUZE100_SW1ACON, + PFUZE100_SW1ACON_SPEED_M, + PFUZE100_SW1ACON_SPEED_VAL); + if (ret) + goto err; return 0; err: printk(KERN_ERR "pfuze100 init error!\n"); |