summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorRobin Gong <B38343@freescale.com>2012-06-28 14:33:17 +0800
committerXinyu Chen <xinyu.chen@freescale.com>2012-07-05 15:50:02 +0800
commit0f619f19ef9a76279a4b4bcd9271365a0b7f72c5 (patch)
treeda8c2344dd711ad2d9a070c67613b40a1f32de41 /arch
parent2d70e43830b83a79d7dabd58059e812c5c42c4af (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-xarch/arm/mach-mx6/board-mx6sl_arm2.c4
-rw-r--r--arch/arm/mach-mx6/mx6sl_arm2_pmic_pfuze100.c26
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");