aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/imx6/patches-3.10/0027-regulator-pfuze100-Simplify-pfuze100_set_ramp_delay-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/imx6/patches-3.10/0027-regulator-pfuze100-Simplify-pfuze100_set_ramp_delay-.patch')
-rw-r--r--target/linux/imx6/patches-3.10/0027-regulator-pfuze100-Simplify-pfuze100_set_ramp_delay-.patch56
1 files changed, 56 insertions, 0 deletions
diff --git a/target/linux/imx6/patches-3.10/0027-regulator-pfuze100-Simplify-pfuze100_set_ramp_delay-.patch b/target/linux/imx6/patches-3.10/0027-regulator-pfuze100-Simplify-pfuze100_set_ramp_delay-.patch
new file mode 100644
index 0000000000..1089dffba2
--- /dev/null
+++ b/target/linux/imx6/patches-3.10/0027-regulator-pfuze100-Simplify-pfuze100_set_ramp_delay-.patch
@@ -0,0 +1,56 @@
+From: Axel Lin <axel.lin@ingics.com>
+Subject: [PATCH] regulator: pfuze100: Simplify pfuze100_set_ramp_delay
+ implementation
+
+Simplify the equation to calculate ramp_delay.
+Below equations are equivalent:
+ ramp_delay = 25000 / (2 * ramp_delay);
+ ramp_delay = 50000 / (4 * ramp_delay);
+ ramp_delay = 25000 / (2 * ramp_delay);
+ ramp_delay = 12500 / ramp_delay;
+So we don't need to read BIT6 of rdev->desc->vsel_reg for applying different
+equations.
+
+Also use rdev->desc->vsel_reg instead of run-time calculate register address.
+
+Signed-off-by: Axel Lin <axel.lin@ingics.com>
+Reviewed-by: Robin Gong <b38343@freescale.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+---
+ drivers/regulator/pfuze100-regulator.c | 21 +++++----------------
+ 1 file changed, 5 insertions(+), 16 deletions(-)
+
+--- a/drivers/regulator/pfuze100-regulator.c
++++ b/drivers/regulator/pfuze100-regulator.c
+@@ -93,26 +93,15 @@ static int pfuze100_set_ramp_delay(struc
+ {
+ struct pfuze_chip *pfuze100 = rdev_get_drvdata(rdev);
+ int id = rdev->desc->id;
+- unsigned int val, ramp_bits, reg;
++ unsigned int ramp_bits;
+ int ret;
+
+ if (id < PFUZE100_SWBST) {
+- if (id == PFUZE100_SW1AB)
+- reg = PFUZE100_SW1ABVOL;
+- else
+- reg = PFUZE100_SW1CVOL + (id - PFUZE100_SW1C) * 7;
+- regmap_read(pfuze100->regmap, reg, &val);
+-
+- if (id <= PFUZE100_SW1C)
+- ramp_delay = 25000 / (2 * ramp_delay);
+- else if (val & 0x40)
+- ramp_delay = 50000 / (4 * ramp_delay);
+- else
+- ramp_delay = 25000 / (2 * ramp_delay);
+-
++ ramp_delay = 12500 / ramp_delay;
+ ramp_bits = (ramp_delay >> 1) - (ramp_delay >> 3);
+- ret = regmap_update_bits(pfuze100->regmap, reg + 4 , 0xc0,
+- ramp_bits << 6);
++ ret = regmap_update_bits(pfuze100->regmap,
++ rdev->desc->vsel_reg + 4,
++ 0xc0, ramp_bits << 6);
+ if (ret < 0)
+ dev_err(pfuze100->dev, "ramp failed, err %d\n", ret);
+ } else