lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 12 Sep 2019 11:33:00 +0000
From:   <Amy.Shih@...antech.com.tw>
To:     <she90122@...il.com>
CC:     <amy.shih@...antech.com.tw>, <oakley.ding@...antech.com.tw>,
        <bichan.lu@...antech.com.tw>, Jean Delvare <jdelvare@...e.com>,
        Guenter Roeck <linux@...ck-us.net>,
        <linux-hwmon@...r.kernel.org>, <linux-kernel@...r.kernel.org>
Subject: [v1,1/1] hwmon: (nct7904) Fix incorrect SMI status register setting of LTD temperature and fan.

From: "amy.shih" <amy.shih@...antech.com.tw>

According to datasheet, the SMI status register setting of LTD
temperature is SMI_STS3, and the SMI status register setting
of fan is SMI_STS5 and SMI_STS6.

Signed-off-by: amy.shih <amy.shih@...antech.com.tw>
---
 drivers/hwmon/nct7904.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/hwmon/nct7904.c b/drivers/hwmon/nct7904.c
index ce688ab4fce2..95b447cfa24c 100644
--- a/drivers/hwmon/nct7904.c
+++ b/drivers/hwmon/nct7904.c
@@ -51,6 +51,7 @@
 #define VSEN1_HV_HL_REG		0x00	/* Bank 1; 2 regs (HV/LV) per sensor */
 #define VSEN1_LV_HL_REG		0x01	/* Bank 1; 2 regs (HV/LV) per sensor */
 #define SMI_STS1_REG		0xC1	/* Bank 0; SMI Status Register */
+#define SMI_STS3_REG		0xC3	/* Bank 0; SMI Status Register */
 #define SMI_STS5_REG		0xC5	/* Bank 0; SMI Status Register */
 #define SMI_STS7_REG		0xC7	/* Bank 0; SMI Status Register */
 #define SMI_STS8_REG		0xC8	/* Bank 0; SMI Status Register */
@@ -210,7 +211,7 @@ static int nct7904_read_fan(struct device *dev, u32 attr, int channel,
 		return 0;
 	case hwmon_fan_alarm:
 		ret = nct7904_read_reg(data, BANK_0,
-				       SMI_STS7_REG + (channel >> 3));
+				       SMI_STS5_REG + (channel >> 3));
 		if (ret < 0)
 			return ret;
 		*val = (ret >> (channel & 0x07)) & 1;
@@ -351,7 +352,13 @@ static int nct7904_read_temp(struct device *dev, u32 attr, int channel,
 		*val = sign_extend32(temp, 10) * 125;
 		return 0;
 	case hwmon_temp_alarm:
-		if (channel < 5) {
+		if (channel == 4) {
+			ret = nct7904_read_reg(data, BANK_0,
+					       SMI_STS3_REG);
+			if (ret < 0)
+				return ret;
+			*val = (ret >> 1) & 1;
+		} else if (channel < 4) {
 			ret = nct7904_read_reg(data, BANK_0,
 					       SMI_STS1_REG);
 			if (ret < 0)
-- 
2.17.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ