summaryrefslogtreecommitdiff
path: root/drivers/regulator
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2013-02-10 01:06:38 +0530
committerMandar Padmawar <mpadmawar@nvidia.com>2013-02-11 05:13:10 -0800
commitc234ec797037e4168a0ce1f87b19347e71d6b909 (patch)
treee8753be6794e03c77ef618ff5feb1548561ec92a /drivers/regulator
parent4aae1b8da409ec83b0edff1e7d9d34bdb4b5ede9 (diff)
regulator: palmas: implement errata for ES1.0,ES2.0 and ES2.1
The device has the errata and sw need to implement the WAR for proper functioning of the device. The errata are: 1. SMPS- slew rate (TSTEP) is slower than expected ----------------------------------------------- when output voltage target is close to previous one IMPACT: The settling time is greater than specified slew rate in register map and datasheet for voltage scaling of the SMPS. DESCRIPTION: Measurement done on WCSP ES2.0, SMPS8, SMPS6, SMPS12 for TSTEP=0x02(5mV/us) - step from VOUT= 0.5v to 1.65V ==>slew rate is around 5mV/us - step from VOUT= 0.96v to 1.04V ==>slew rate is around 2.5mV/us for TSTEP=0x03(2.5mV/us) - step from VOUT= 0.5v to 1.65V ==>slew rate is around 2.5mV/us - step from VOUT= 0.96v to 1.04V ==>slew rate is around 1.6mV/us WORKAROUND: Adapt wait time using above value. REVISION IMPACTED: ES1.0/ES2.0/ES2.1 2. LDO8_TRACKING: PD in tracking mode ------------------------------------- IMPACT: Higher consumption and performance impact when LDO8 is set in tracking mode and LDO is set to have its pull down enabled in OFF mode. DESCRIPTION: When LDO8 is set in tracking mode and the LDO is set to have its pull down enabled in OFF, the pull down is also enabled in ACTIVE mode. WORKAROUND: In tracking mode, bit7 of LDO_PD_CTRL1 register must be set to 0. When LDO8 is disabled, to have the pull down, bit7 of LDO_PD_CTRL1 register must then be set to 1. In LDO8 regulation mode, behavior is the same as the other LDOs. REVISION IMPACTED: ES 2.1 ES2.0 ES1.0 bug 1228386 bug 1195226 Change-Id: Ib19a21cb722b1bc07d93a0cf866c134672ef8735 Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-on: http://git-master/r/199132 Reviewed-by: Automatic_Commit_Validation_User
Diffstat (limited to 'drivers/regulator')
-rw-r--r--drivers/regulator/palmas-regulator.c58
1 files changed, 35 insertions, 23 deletions
diff --git a/drivers/regulator/palmas-regulator.c b/drivers/regulator/palmas-regulator.c
index 7ac6fdb20639..5c233bfef779 100644
--- a/drivers/regulator/palmas-regulator.c
+++ b/drivers/regulator/palmas-regulator.c
@@ -457,7 +457,9 @@ static int palma_smps_set_voltage_smps_time_sel(struct regulator_dev *rdev,
unsigned int ramp_delay = pmic->ramp_delay[id];
/* ES2.1, have the 1.5X slower slew rate than configured */
- ramp_delay = (ramp_delay * 15)/10;
+ if (palmas_is_es_version_or_less(pmic->palmas, 2, 1))
+ ramp_delay = (ramp_delay * 15)/10;
+
if (!ramp_delay)
return 0;
@@ -1060,20 +1062,25 @@ static void palmas_enable_ldo8_track(struct palmas *palmas)
}
/*
+ * Errata ES1.0, 2,0 and 2.1
* When Tracking is enbled, it need to disable Pull-Down for LDO8 and
* when tracking is disabled, SW has to enabe Pull-Down.
*/
- addr = PALMAS_LDO_PD_CTRL1;
- ret = palmas_ldo_read(palmas, addr, &reg);
- if (ret < 0) {
- dev_err(palmas->dev, "Error in reading pulldown control reg\n");
- return;
- }
- reg &= ~PALMAS_LDO_PD_CTRL1_LDO8;
- ret = palmas_ldo_write(palmas, addr, reg);
- if (ret < 0) {
- dev_err(palmas->dev, "Error in setting pulldown control reg\n");
- return;
+ if (palmas_is_es_version_or_less(palmas, 2, 1)) {
+ addr = PALMAS_LDO_PD_CTRL1;
+ ret = palmas_ldo_read(palmas, addr, &reg);
+ if (ret < 0) {
+ dev_err(palmas->dev,
+ "Error in reading pulldown control reg\n");
+ return;
+ }
+ reg &= ~PALMAS_LDO_PD_CTRL1_LDO8;
+ ret = palmas_ldo_write(palmas, addr, reg);
+ if (ret < 0) {
+ dev_err(palmas->dev,
+ "Error in setting pulldown control reg\n");
+ return;
+ }
}
return;
@@ -1119,20 +1126,25 @@ static void palmas_disable_ldo8_track(struct palmas *palmas)
}
/*
+ * Errata ES1.0, 2,0 and 2.1
* When Tracking is enbled, it need to disable Pull-Down for LDO8 and
* when tracking is disabled, SW has to enabe Pull-Down.
*/
- addr = PALMAS_LDO_PD_CTRL1;
- ret = palmas_ldo_read(palmas, addr, &reg);
- if (ret < 0) {
- dev_err(palmas->dev, "Error in reading pulldown control reg\n");
- return;
- }
- reg |= PALMAS_LDO_PD_CTRL1_LDO8;
- ret = palmas_ldo_write(palmas, addr, reg);
- if (ret < 0) {
- dev_err(palmas->dev, "Error in setting pulldown control reg\n");
- return;
+ if (palmas_is_es_version_or_less(palmas, 2, 1)) {
+ addr = PALMAS_LDO_PD_CTRL1;
+ ret = palmas_ldo_read(palmas, addr, &reg);
+ if (ret < 0) {
+ dev_err(palmas->dev,
+ "Error in reading pulldown control reg\n");
+ return;
+ }
+ reg |= PALMAS_LDO_PD_CTRL1_LDO8;
+ ret = palmas_ldo_write(palmas, addr, reg);
+ if (ret < 0) {
+ dev_err(palmas->dev,
+ "Error in setting pulldown control reg\n");
+ return;
+ }
}
return;