diff options
author | Peter Geis <pgwipeout@gmail.com> | 2021-05-11 23:13:34 +0200 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2021-05-12 17:26:39 +0200 |
commit | f9028dcdf589f4ab528372088623aa4e8d324df2 (patch) | |
tree | cf29feb526e5e6a213e4b30632f729652ab00d87 /drivers/regulator/fan53555.c | |
parent | regulator: fan53555: fix TCS4525 voltage calulation (diff) | |
download | linux-f9028dcdf589f4ab528372088623aa4e8d324df2.tar.xz linux-f9028dcdf589f4ab528372088623aa4e8d324df2.zip |
regulator: fan53555: only bind tcs4525 to correct chip id
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>
Diffstat (limited to 'drivers/regulator/fan53555.c')
-rw-r--r-- | drivers/regulator/fan53555.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/drivers/regulator/fan53555.c b/drivers/regulator/fan53555.c index 26f06f685b1b..16f28f9df6a1 100644 --- a/drivers/regulator/fan53555.c +++ b/drivers/regulator/fan53555.c @@ -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; } |