Commit b4c8af4c authored by Jan Kundrát's avatar Jan Kundrát Committed by Guenter Roeck

hwmon: (pmbus) Fix page vs. register when accessing fans

Commit 16358542 ("hwmon: (pmbus) Implement multi-phase support")
added support for multi-phase pmbus devices. However, when calling
pmbus_add_sensor() for fans, the patch swapped the `page` and `reg`
attributes. As a result, the fan speeds were reported as 0 RPM on my device.
Signed-off-by: default avatarJan Kundrát <jan.kundrat@cesnet.cz>
Fixes: 16358542 ("hwmon: (pmbus) Implement multi-phase support")
Cc: stable@vger.kernel.org # v5.7+
Link: https://lore.kernel.org/r/449bc9e6c0e4305581e45905ce9d043b356a9932.1592904387.git.jan.kundrat@cesnet.cz
[groeck: Fixed references to offending commit]
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 26797d8b
...@@ -1869,7 +1869,7 @@ static int pmbus_add_fan_ctrl(struct i2c_client *client, ...@@ -1869,7 +1869,7 @@ static int pmbus_add_fan_ctrl(struct i2c_client *client,
struct pmbus_sensor *sensor; struct pmbus_sensor *sensor;
sensor = pmbus_add_sensor(data, "fan", "target", index, page, sensor = pmbus_add_sensor(data, "fan", "target", index, page,
PMBUS_VIRT_FAN_TARGET_1 + id, 0xff, PSC_FAN, 0xff, PMBUS_VIRT_FAN_TARGET_1 + id, PSC_FAN,
false, false, true); false, false, true);
if (!sensor) if (!sensor)
...@@ -1880,14 +1880,14 @@ static int pmbus_add_fan_ctrl(struct i2c_client *client, ...@@ -1880,14 +1880,14 @@ static int pmbus_add_fan_ctrl(struct i2c_client *client,
return 0; return 0;
sensor = pmbus_add_sensor(data, "pwm", NULL, index, page, sensor = pmbus_add_sensor(data, "pwm", NULL, index, page,
PMBUS_VIRT_PWM_1 + id, 0xff, PSC_PWM, 0xff, PMBUS_VIRT_PWM_1 + id, PSC_PWM,
false, false, true); false, false, true);
if (!sensor) if (!sensor)
return -ENOMEM; return -ENOMEM;
sensor = pmbus_add_sensor(data, "pwm", "enable", index, page, sensor = pmbus_add_sensor(data, "pwm", "enable", index, page,
PMBUS_VIRT_PWM_ENABLE_1 + id, 0xff, PSC_PWM, 0xff, PMBUS_VIRT_PWM_ENABLE_1 + id, PSC_PWM,
true, false, false); true, false, false);
if (!sensor) if (!sensor)
...@@ -1929,7 +1929,7 @@ static int pmbus_add_fan_attributes(struct i2c_client *client, ...@@ -1929,7 +1929,7 @@ static int pmbus_add_fan_attributes(struct i2c_client *client,
continue; continue;
if (pmbus_add_sensor(data, "fan", "input", index, if (pmbus_add_sensor(data, "fan", "input", index,
page, pmbus_fan_registers[f], 0xff, page, 0xff, pmbus_fan_registers[f],
PSC_FAN, true, true, true) == NULL) PSC_FAN, true, true, true) == NULL)
return -ENOMEM; return -ENOMEM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment