| From 38ada2f406a9b81fb1249c5c9227fa657e7d5671 Mon Sep 17 00:00:00 2001 |
| From: Guenter Roeck <linux@roeck-us.net> |
| Date: Fri, 26 Jul 2019 08:00:49 -0700 |
| Subject: hwmon: (nct7802) Fix wrong detection of in4 presence |
| |
| From: Guenter Roeck <linux@roeck-us.net> |
| |
| commit 38ada2f406a9b81fb1249c5c9227fa657e7d5671 upstream. |
| |
| The code to detect if in4 is present is wrong; if in4 is not present, |
| the in4_input sysfs attribute is still present. |
| |
| In detail: |
| |
| - Ihen RTD3_MD=11 (VSEN3 present), everything is as expected (no bug). |
| - If we have RTD3_MD!=11 (no VSEN3), we unexpectedly have a in4_input |
| file under /sys and the "sensors" command displays in4_input. |
| But as expected, we have no in4_min, in4_max, in4_alarm, in4_beep. |
| |
| Fix is_visible function to detect and report in4_input visibility |
| as expected. |
| |
| Reported-by: Gilles Buloz <Gilles.Buloz@kontron.com> |
| Cc: Gilles Buloz <Gilles.Buloz@kontron.com> |
| Cc: stable@vger.kernel.org |
| Fixes: 3434f37835804 ("hwmon: Driver for Nuvoton NCT7802Y") |
| Signed-off-by: Guenter Roeck <linux@roeck-us.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/hwmon/nct7802.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/hwmon/nct7802.c |
| +++ b/drivers/hwmon/nct7802.c |
| @@ -768,7 +768,7 @@ static struct attribute *nct7802_in_attr |
| &sensor_dev_attr_in3_alarm.dev_attr.attr, |
| &sensor_dev_attr_in3_beep.dev_attr.attr, |
| |
| - &sensor_dev_attr_in4_input.dev_attr.attr, /* 17 */ |
| + &sensor_dev_attr_in4_input.dev_attr.attr, /* 16 */ |
| &sensor_dev_attr_in4_min.dev_attr.attr, |
| &sensor_dev_attr_in4_max.dev_attr.attr, |
| &sensor_dev_attr_in4_alarm.dev_attr.attr, |
| @@ -794,9 +794,9 @@ static umode_t nct7802_in_is_visible(str |
| |
| if (index >= 6 && index < 11 && (reg & 0x03) != 0x03) /* VSEN1 */ |
| return 0; |
| - if (index >= 11 && index < 17 && (reg & 0x0c) != 0x0c) /* VSEN2 */ |
| + if (index >= 11 && index < 16 && (reg & 0x0c) != 0x0c) /* VSEN2 */ |
| return 0; |
| - if (index >= 17 && (reg & 0x30) != 0x30) /* VSEN3 */ |
| + if (index >= 16 && (reg & 0x30) != 0x30) /* VSEN3 */ |
| return 0; |
| |
| return attr->mode; |