]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
regulator: pca9450: Make I2C Level Translator configurable
authorPer-Daniel Olsson <perdo@axis.com>
Fri, 29 Apr 2022 07:22:08 +0000 (09:22 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 3 May 2022 12:47:36 +0000 (13:47 +0100)
Make the I2C Level Translator included in PCA9450 configurable from
devicetree. The reset state is off. By setting nxp,i2c-lt-enable, the
I2C Level Translator will be enabled while in STANDBY or RUN state.

Signed-off-by: Per-Daniel Olsson <perdo@axis.com>
Signed-off-by: Rickard x Andersson <rickaran@axis.com>
Link: https://lore.kernel.org/r/20220429072211.24957-2-rickaran@axis.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/pca9450-regulator.c
include/linux/regulator/pca9450.h

index 64e5f5f0cc841a8c484b3f30acf68333744327a7..87b4e6e29ba16f714e7bda0b1f05412ce2d489d6 100644 (file)
@@ -810,6 +810,17 @@ static int pca9450_i2c_probe(struct i2c_client *i2c,
                return ret;
        }
 
+       if (of_property_read_bool(i2c->dev.of_node, "nxp,i2c-lt-enable")) {
+               /* Enable I2C Level Translator */
+               ret = regmap_update_bits(pca9450->regmap, PCA9450_REG_CONFIG2,
+                                        I2C_LT_MASK, I2C_LT_ON_STANDBY_RUN);
+               if (ret) {
+                       dev_err(&i2c->dev,
+                               "Failed to enable I2C level translator\n");
+                       return ret;
+               }
+       }
+
        /*
         * The driver uses the LDO5CTRL_H register to control the LDO5 regulator.
         * This is only valid if the SD_VSEL input of the PMIC is high. Let's
index 71902f41c91999d21cc037e9c9d1731a71844f0f..3c01c2bf84f53ba6b1d0fa90fec837313a2f6d03 100644 (file)
@@ -226,4 +226,11 @@ enum {
 #define WDOG_B_CFG_COLD_LDO12          0x80
 #define WDOG_B_CFG_COLD                        0xC0
 
+/* PCA9450_REG_CONFIG2 bits */
+#define I2C_LT_MASK                    0x03
+#define I2C_LT_FORCE_DISABLE           0x00
+#define I2C_LT_ON_STANDBY_RUN          0x01
+#define I2C_LT_ON_RUN                  0x02
+#define I2C_LT_FORCE_ENABLE            0x03
+
 #endif /* __LINUX_REG_PCA9450_H__ */