Commit 83274c68 authored by Guenter Roeck's avatar Guenter Roeck

hwmon: (pmbus) More stringent checking of VOUT_MODE register

Some PMBus chips do not support the VOUT_MODE register. To make matters worse,
such chips may not return an error when reading the register either, but instead
return 0xff.

Check if the register exists using pmbus_check_byte_register() before reading
its value. In addition, validate the returned value and ignore it if it is 0xff
(which is invalid).
Reported-by: default avatarGreg Schnorr <gschnorr@cisco.com>
Tested-by: default avatarGreg Schnorr <gschnorr@cisco.com>
Signed-off-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
Acked-by: default avatarGreg Schnorr <gschnorr@cisco.com>
parent a3eeb453
...@@ -1426,10 +1426,11 @@ static void pmbus_find_attributes(struct i2c_client *client, ...@@ -1426,10 +1426,11 @@ static void pmbus_find_attributes(struct i2c_client *client,
static int pmbus_identify_common(struct i2c_client *client, static int pmbus_identify_common(struct i2c_client *client,
struct pmbus_data *data) struct pmbus_data *data)
{ {
int vout_mode, exponent; int vout_mode = -1, exponent;
vout_mode = pmbus_read_byte_data(client, 0, PMBUS_VOUT_MODE); if (pmbus_check_byte_register(client, 0, PMBUS_VOUT_MODE))
if (vout_mode >= 0) { vout_mode = pmbus_read_byte_data(client, 0, PMBUS_VOUT_MODE);
if (vout_mode >= 0 && vout_mode != 0xff) {
/* /*
* Not all chips support the VOUT_MODE command, * Not all chips support the VOUT_MODE command,
* so a failure to read it is not an error. * so a failure to read it is not an error.
......
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