hwmon: (pmbus) Improve auto-detection of temperature status register
It is possible that a PMBus device supports the READ_TEMPERATURE2 and/or READ_TEMPERATURE3 registers but does not support READ_TEMPERATURE1. Improve temperature status register detection to address this condition. Reported-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com> Acked-by: Jean Delvare <khali@linux-fr.org> Cc: stable@kernel.org # 2.6.39+
This commit is contained in:
Родитель
0c2a40e2fe
Коммит
22e6b2312d
|
@ -59,16 +59,17 @@ static void pmbus_find_sensor_groups(struct i2c_client *client,
|
||||||
if (pmbus_check_byte_register(client, 0, PMBUS_STATUS_FAN_34))
|
if (pmbus_check_byte_register(client, 0, PMBUS_STATUS_FAN_34))
|
||||||
info->func[0] |= PMBUS_HAVE_STATUS_FAN34;
|
info->func[0] |= PMBUS_HAVE_STATUS_FAN34;
|
||||||
}
|
}
|
||||||
if (pmbus_check_word_register(client, 0, PMBUS_READ_TEMPERATURE_1)) {
|
if (pmbus_check_word_register(client, 0, PMBUS_READ_TEMPERATURE_1))
|
||||||
info->func[0] |= PMBUS_HAVE_TEMP;
|
info->func[0] |= PMBUS_HAVE_TEMP;
|
||||||
if (pmbus_check_byte_register(client, 0,
|
|
||||||
PMBUS_STATUS_TEMPERATURE))
|
|
||||||
info->func[0] |= PMBUS_HAVE_STATUS_TEMP;
|
|
||||||
}
|
|
||||||
if (pmbus_check_word_register(client, 0, PMBUS_READ_TEMPERATURE_2))
|
if (pmbus_check_word_register(client, 0, PMBUS_READ_TEMPERATURE_2))
|
||||||
info->func[0] |= PMBUS_HAVE_TEMP2;
|
info->func[0] |= PMBUS_HAVE_TEMP2;
|
||||||
if (pmbus_check_word_register(client, 0, PMBUS_READ_TEMPERATURE_3))
|
if (pmbus_check_word_register(client, 0, PMBUS_READ_TEMPERATURE_3))
|
||||||
info->func[0] |= PMBUS_HAVE_TEMP3;
|
info->func[0] |= PMBUS_HAVE_TEMP3;
|
||||||
|
if (info->func[0] & (PMBUS_HAVE_TEMP | PMBUS_HAVE_TEMP2
|
||||||
|
| PMBUS_HAVE_TEMP3)
|
||||||
|
&& pmbus_check_byte_register(client, 0,
|
||||||
|
PMBUS_STATUS_TEMPERATURE))
|
||||||
|
info->func[0] |= PMBUS_HAVE_STATUS_TEMP;
|
||||||
|
|
||||||
/* Sensors detected on all pages */
|
/* Sensors detected on all pages */
|
||||||
for (page = 0; page < info->pages; page++) {
|
for (page = 0; page < info->pages; page++) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче