summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuenter Roeck <linux@roeck-us.net>2019-07-26 11:00:49 -0400
committerGuenter Roeck <linux@roeck-us.net>2019-08-07 17:49:46 -0400
commit38ada2f406a9b81fb1249c5c9227fa657e7d5671 (patch)
treea9a690d2a889a7b1a7033fbcf9c95da0c3711815
parent609488bc979f99f805f34e9a32c1e3b71179d10b (diff)
hwmon: (nct7802) Fix wrong detection of in4 presence
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>
-rw-r--r--drivers/hwmon/nct7802.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/hwmon/nct7802.c b/drivers/hwmon/nct7802.c
index ec7bcf8d7cd6..f3dd2a17bd42 100644
--- a/drivers/hwmon/nct7802.c
+++ b/drivers/hwmon/nct7802.c
@@ -704,7 +704,7 @@ static struct attribute *nct7802_in_attrs[] = {
704 &sensor_dev_attr_in3_alarm.dev_attr.attr, 704 &sensor_dev_attr_in3_alarm.dev_attr.attr,
705 &sensor_dev_attr_in3_beep.dev_attr.attr, 705 &sensor_dev_attr_in3_beep.dev_attr.attr,
706 706
707 &sensor_dev_attr_in4_input.dev_attr.attr, /* 17 */ 707 &sensor_dev_attr_in4_input.dev_attr.attr, /* 16 */
708 &sensor_dev_attr_in4_min.dev_attr.attr, 708 &sensor_dev_attr_in4_min.dev_attr.attr,
709 &sensor_dev_attr_in4_max.dev_attr.attr, 709 &sensor_dev_attr_in4_max.dev_attr.attr,
710 &sensor_dev_attr_in4_alarm.dev_attr.attr, 710 &sensor_dev_attr_in4_alarm.dev_attr.attr,
@@ -730,9 +730,9 @@ static umode_t nct7802_in_is_visible(struct kobject *kobj,
730 730
731 if (index >= 6 && index < 11 && (reg & 0x03) != 0x03) /* VSEN1 */ 731 if (index >= 6 && index < 11 && (reg & 0x03) != 0x03) /* VSEN1 */
732 return 0; 732 return 0;
733 if (index >= 11 && index < 17 && (reg & 0x0c) != 0x0c) /* VSEN2 */ 733 if (index >= 11 && index < 16 && (reg & 0x0c) != 0x0c) /* VSEN2 */
734 return 0; 734 return 0;
735 if (index >= 17 && (reg & 0x30) != 0x30) /* VSEN3 */ 735 if (index >= 16 && (reg & 0x30) != 0x30) /* VSEN3 */
736 return 0; 736 return 0;
737 737
738 return attr->mode; 738 return attr->mode;