summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-ux500/board-mop500-regulators.c4
-rw-r--r--drivers/regulator/ab8500.c18
2 files changed, 20 insertions, 2 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-regulators.c b/arch/arm/mach-ux500/board-mop500-regulators.c
index a14518214d1..1286f6c2822 100644
--- a/arch/arm/mach-ux500/board-mop500-regulators.c
+++ b/arch/arm/mach-ux500/board-mop500-regulators.c
@@ -347,11 +347,11 @@ ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS] = {
/*
* VextSupply1Regu = HW control
* VextSupply2Regu = HW control
- * VextSupply3Regu = HW control
+ * VextSupply3Regu = Low Power mode
* ExtSupply2Bypass = ExtSupply12LPn ball is 0 when Ena is 0
* ExtSupply3Bypass = ExtSupply3LPn ball is 0 when Ena is 0
*/
- INIT_REGULATOR_REGISTER(AB8500_EXTSUPPLYREGU, 0x2a),
+ INIT_REGULATOR_REGISTER(AB8500_EXTSUPPLYREGU, 0x1a),
/*
* Vaux1Regu = force HP
* Vaux2Regu = force off
diff --git a/drivers/regulator/ab8500.c b/drivers/regulator/ab8500.c
index b1f38f6cb26..8b94f67d677 100644
--- a/drivers/regulator/ab8500.c
+++ b/drivers/regulator/ab8500.c
@@ -1045,6 +1045,24 @@ static __devinit int ab8500_regulator_probe(struct platform_device *pdev)
value);
}
+ /*
+ * Remove below when ab8500v2.0 is no longer important.
+ * Below only affects power consumption and is depending on the
+ * HREF OTP configuration.
+ * It changes the default setting for VextSupply3Regu to Low Power.
+ * Active high or low is depending on OTP which is changed from ab8500v3.0.
+ */
+ if (abx500_get_chip_id(&pdev->dev) < 0x30) {
+ err = abx500_mask_and_set_register_interruptible(&pdev->dev,
+ AB8500_REGU_CTRL2, 0x08, 0x30, 0x30);
+ if (err < 0) {
+ dev_err(&pdev->dev,
+ "Failed to override 0x%02x, 0x%02x.\n",
+ AB8500_REGU_CTRL2, 0x08);
+ return err;
+ }
+ }
+
/* register all regulators */
for (i = 0; i < ARRAY_SIZE(ab8500_regulator_info); i++) {
struct ab8500_regulator_info *info = NULL;