regulator: fan53555: only bind tcs4525 to correct chip id
authorPeter Geis <pgwipeout@gmail.com>
Tue, 11 May 2021 21:13:34 +0000 (17:13 -0400)
committerMark Brown <broonie@kernel.org>
Wed, 12 May 2021 15:26:39 +0000 (16:26 +0100)
The tcs4525 regulator has a chip id of <12>.
Only allow the driver to bind to the correct chip id for safety, in
accordance with the other supported devices.

Signed-off-by: Peter Geis <pgwipeout@gmail.com>
Link: https://lore.kernel.org/r/20210511211335.2935163-3-pgwipeout@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/fan53555.c

index 26f06f6..16f28f9 100644 (file)
@@ -89,6 +89,10 @@ enum {
        FAN53555_CHIP_ID_08 = 8,
 };
 
+enum {
+       TCS4525_CHIP_ID_12 = 12,
+};
+
 /* IC mask revision */
 enum {
        FAN53555_CHIP_REV_00 = 0x3,
@@ -368,14 +372,21 @@ static int fan53555_voltages_setup_silergy(struct fan53555_device_info *di)
 
 static int fan53555_voltages_setup_tcs(struct fan53555_device_info *di)
 {
-       di->slew_reg = TCS4525_TIME;
-       di->slew_mask = TCS_SLEW_MASK;
-       di->slew_shift = TCS_SLEW_MASK;
+       switch (di->chip_id) {
+       case TCS4525_CHIP_ID_12:
+               di->slew_reg = TCS4525_TIME;
+               di->slew_mask = TCS_SLEW_MASK;
+               di->slew_shift = TCS_SLEW_MASK;
 
-       /* Init voltage range and step */
-       di->vsel_min = 600000;
-       di->vsel_step = 6250;
-       di->vsel_count = FAN53526_NVOLTAGES;
+               /* Init voltage range and step */
+               di->vsel_min = 600000;
+               di->vsel_step = 6250;
+               di->vsel_count = FAN53526_NVOLTAGES;
+               break;
+       default:
+               dev_err(di->dev, "Chip ID %d not supported!\n", di->chip_id);
+               return -EINVAL;
+       }
 
        return 0;
 }