]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
regulator: rt6160: Add rt6166 vout min_uV setting for compatible
authorJeff Chang <jeff_chang@richtek.com>
Wed, 16 Jul 2025 02:08:30 +0000 (10:08 +0800)
committerMark Brown <broonie@kernel.org>
Wed, 16 Jul 2025 10:15:26 +0000 (11:15 +0100)
1. remove unintentional GPL change
2. using switch case for Device ID probe check.

Signed-off-by: Jeff Chang <jeff_chang@richtek.com>
Link: https://patch.msgid.link/20250716021230.2660564-1-jeff_chang@richtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/rt6160-regulator.c

index e2a0eee95c617694d2ea1db2e12c599797285c2e..548ffdf537d30f9f1eebcd949801264d6216651d 100644 (file)
 #define RT6160_PGSTAT_MASK     BIT(0)
 
 #define RT6160_VENDOR_ID       0xA0
+#define RT6166_VENDOR_ID       0xB0
 #define RT6160_VOUT_MINUV      2025000
 #define RT6160_VOUT_MAXUV      5200000
+#define RT6166_VOUT_MINUV      1800000
+#define RT6166_VOUD_MAXUV      4950000
 #define RT6160_VOUT_STPUV      25000
 #define RT6160_N_VOUTS         ((RT6160_VOUT_MAXUV - RT6160_VOUT_MINUV) / RT6160_VOUT_STPUV + 1)
 
@@ -43,6 +46,7 @@ struct rt6160_priv {
        struct gpio_desc *enable_gpio;
        struct regmap *regmap;
        bool enable_state;
+       uint8_t devid;
 };
 
 static const unsigned int rt6160_ramp_tables[] = {
@@ -260,15 +264,26 @@ static int rt6160_probe(struct i2c_client *i2c)
        if (ret)
                return ret;
 
-       if ((devid & RT6160_VID_MASK) != RT6160_VENDOR_ID) {
+       devid = devid & RT6160_VID_MASK;
+
+       switch (devid) {
+       case RT6166_VENDOR_ID:
+       case RT6160_VENDOR_ID:
+               break;
+       default:
                dev_err(&i2c->dev, "VID not correct [0x%02x]\n", devid);
                return -ENODEV;
        }
 
+       priv->devid = devid;
+
        priv->desc.name = "rt6160-buckboost";
        priv->desc.type = REGULATOR_VOLTAGE;
        priv->desc.owner = THIS_MODULE;
-       priv->desc.min_uV = RT6160_VOUT_MINUV;
+       if (priv->devid == RT6166_VENDOR_ID)
+               priv->desc.min_uV = RT6166_VOUT_MINUV;
+       else
+               priv->desc.min_uV = RT6160_VOUT_MINUV;
        priv->desc.uV_step = RT6160_VOUT_STPUV;
        if (vsel_active_low)
                priv->desc.vsel_reg = RT6160_REG_VSELL;