Skip to content
/ linux Public

Commit e7c9638

Browse files
groeckgregkh
authored andcommitted
hwmon: (max6639) Fix pulses-per-revolution implementation
[ Upstream commit e7bae9a ] The valid range for the pulses-per-revolution devicetree property is 1..4. The current code checks for a range of 1..5. Fix it. Declare the variable used to retrieve pulses per revolution from devicetree as u32 (unsigned) to match the of_property_read_u32() API. The current code uses a postfix decrement when writing the pulses per resolution into the chip. This has no effect since the value is evaluated before it is decremented. Fix it by decrementing before evaluating the value. Fixes: 7506ebc ("hwmon: (max6639) : Configure based on DT property") Cc: Naresh Solanki <naresh.solanki@9elements.com> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent ebf6449 commit e7c9638

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

drivers/hwmon/max6639.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ static int max6639_read_fan(struct device *dev, u32 attr, int channel,
234234
static int max6639_set_ppr(struct max6639_data *data, int channel, u8 ppr)
235235
{
236236
/* Decrement the PPR value and shift left by 6 to match the register format */
237-
return regmap_write(data->regmap, MAX6639_REG_FAN_PPR(channel), ppr-- << 6);
237+
return regmap_write(data->regmap, MAX6639_REG_FAN_PPR(channel), --ppr << 6);
238238
}
239239

240240
static int max6639_write_fan(struct device *dev, u32 attr, int channel,
@@ -536,8 +536,8 @@ static int max6639_probe_child_from_dt(struct i2c_client *client,
536536

537537
{
538538
struct device *dev = &client->dev;
539-
u32 i;
540-
int err, val;
539+
u32 i, val;
540+
int err;
541541

542542
err = of_property_read_u32(child, "reg", &i);
543543
if (err) {
@@ -552,8 +552,8 @@ static int max6639_probe_child_from_dt(struct i2c_client *client,
552552

553553
err = of_property_read_u32(child, "pulses-per-revolution", &val);
554554
if (!err) {
555-
if (val < 1 || val > 5) {
556-
dev_err(dev, "invalid pulses-per-revolution %d of %pOFn\n", val, child);
555+
if (val < 1 || val > 4) {
556+
dev_err(dev, "invalid pulses-per-revolution %u of %pOFn\n", val, child);
557557
return -EINVAL;
558558
}
559559
data->ppr[i] = val;

0 commit comments

Comments
 (0)