regulator: tps65218: do not disable DCDC3 during poweroff on broken PMICs
authorTero Kristo <t-kristo@ti.com>
Wed, 10 Aug 2016 12:23:55 +0000 (17:53 +0530)
committerMark Brown <broonie@kernel.org>
Wed, 10 Aug 2016 17:21:55 +0000 (18:21 +0100)
Some versions of tps65218 do not seem to support poweroff modes properly
if DCDC3 regulator is shut-down. Thus, keep it enabled even during
poweroff if the version info matches the broken silicon revision.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
Signed-off-by: Keerthy <j-keerthy@ti.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/tps65218-regulator.c
include/linux/mfd/tps65218.h

index d1e631d64a20aa34b991c817dc1bc93a6963d9e0..eb0f5b13841a505ea4157e949cf179d71d26175e 100644 (file)
@@ -180,6 +180,14 @@ static int tps65218_pmic_set_suspend_disable(struct regulator_dev *dev)
        if (rid < TPS65218_DCDC_1 || rid > TPS65218_LDO_1)
                return -EINVAL;
 
+       /*
+        * Certain revisions of TPS65218 will need to have DCDC3 regulator
+        * enabled always, otherwise an immediate system reboot will occur
+        * during poweroff.
+        */
+       if (rid == TPS65218_DCDC_3 && tps->rev == TPS65218_REV_2_1)
+               return 0;
+
        if (!tps->info[rid]->strobe) {
                if (rid == TPS65218_DCDC_3)
                        tps->info[rid]->strobe = 3;
index 85e464e32c4374ead02f7d1b7e327431972e76f5..d1db9527fab5897e320dffc6925017b8bc29207d 100644 (file)
 #define TPS65218_CHIPID_CHIP_MASK      0xF8
 #define TPS65218_CHIPID_REV_MASK       0x07
 
+#define TPS65218_REV_1_0               0x0
+#define TPS65218_REV_1_1               0x1
+#define TPS65218_REV_2_0               0x2
+#define TPS65218_REV_2_1               0x3
+
 #define TPS65218_INT1_VPRG             BIT(5)
 #define TPS65218_INT1_AC               BIT(4)
 #define TPS65218_INT1_PB               BIT(3)