fix nct7802_temp_is_visible
PATCH 1/1 fix nct7802_temp_is_visible
From: const <[email protected]>
Fixed registers are invisible only when registers' mode is 0
--- drivers/hwmon/nct7802.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)
drivers/hwmon/nct7802.c +3 -5
@@ -541,13 +541,11 @@ static umode_t nct7802_temp_is_visible(struct kobject *kobj,if (err <0 )return 0 ; -if (index <9 && - (reg &03 ) !=0x01 && (reg &0x03 ) !=0x02 )/* RD1 */ +if (index <9 && !(reg &0x03 ))/* RD1 */ return 0 ; -if (index >=9 && index <18 && - (reg &0x0c ) !=0x04 && (reg &0x0c ) !=0x08 )/* RD2 */ +if (index >=9 && index <18 && !(reg &0x0c ))/* RD2 */ return 0 ; -if (index >=18 && index <27 && (reg &0x30 ) !=0x10 )/* RD3 */ +if (index >=18 && index <27 && !(reg &0x30 ))/* RD3 */ return 0 ;if (index >=27 && index <35 )/* local */ return attr->mode;
Signature · 7 lines
1.9.1 _______________________________________________ lm-sensors mailing list [email protected] http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
Guenter Roeck
maintainerHi Constantine,
Quoted 17 lines · Constantine Shulyupin
From: const <[email protected]>
Fixed registers are invisible only when registers' mode is 0
Signed-off-by Constantine Shulyupin <[email protected]>--- drivers/hwmon/nct7802.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)drivers/hwmon/nct7802.c +0
-0@@ -541,13 +541,11 @@ static umode_t nct7802_temp_is_visible(struct kobject *kobj,if (err <0 )return 0 ;
drivers/hwmon/nct7802.c static umode_t nct7802_temp_is_visible(struct kobject *kobj, · line 548
Quoted 10 lines
drivers/hwmon/nct7802.c +3
-5-if (index <9 && - (reg &03 ) !=0x01 && (reg &0x03 ) !=0x02 )/* RD1 */ +if (index <9 && !(reg &0x03 ))/* RD1 */ return 0 ; -if (index >=9 && index <18 && - (reg &0x0c ) !=0x04 && (reg &0x0c ) !=0x08 )/* RD2 */ +if (index >=9 && index <18 && !(reg &0x0c ))/* RD2 */ return 0 ; -if (index >=18 && index <27 && (reg &0x30 ) !=0x10 )/* RD3 */ +if (index >=18 && index <27 && !(reg &0x30 ))/* RD3 */
11b sets a sensor to voltage sense mode, not temperature mode. This is what the inX attributes are for. We can not just display a random temperature value if a sensor is configured to measure a voltage.
According to my datasheet, 01b (0x10 shifted) is reserved for RD3. So there is a bug, but it is
if (index >= 18 && index < 27 && (reg & 0x30) != 0x10) /* RD3 */ which should be if (index >= 18 && index < 27 && (reg & 0x30) != 0x20) /* RD3 */
Can you send an updated patch ?
Thanks,
Guenter
_______________________________________________
lm-sensors mailing list
[email protected]
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
Hi Guenter,
Excerpt from datasheet:
7.2.32 Mode Selection RegisterRTD3_MD : 00=Closed , 01=Reserved , 10=Thermistor mode , 11=Voltage sense
As I understand the datasheel value 11b is valid too and the resister should be visible. It is legit to hide registers on 00=Closed and optionally on 01=Reserved (RTD3_MD only).
I suppose condition RTD3_MD = 01b can be uncounted because is it reserved should not be used. temp3_* registers should be visible when RTD3_MD is 10b or 11b and hidden when RTD3_MD = 0 and optionally when RTD3_MD = 1
Therefore I propose to hide temp3_* when RTD3_MD != 0:
if (index >= 18 && index < 27 && !(reg & 0x30) /* RD3 */
or when RTD3_MD = 0 or RTD3_MD = 1:
if (index >= 18 && index < 27 && (reg & 0x30) <= 0x10) /* RD3 */
Do you agree?
What do you prefer?
Thanks
Constantine
Quoted 52 lines · Guenter Roeck
Hi Constantine,
Quoted 19 lines · Constantine Shulyupin
From: const <[email protected]>
Fixed registers are invisible only when registers' mode is 0
Signed-off-by Constantine Shulyupin <[email protected]>--- drivers/hwmon/nct7802.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)drivers/hwmon/nct7802.c +0
-1@@ -541,13 +541,11 @@ static umode_t nct7802_temp_is_visible(struct kobject *kobj, if (err < 0)return 0 ; - if (index < 9 &&drivers/hwmon/nct7802.c static umode_t nct7802_temp_is_visible(struct · line 550
Quoted 10 lines
drivers/hwmon/nct7802.c +3
-4- (reg & 03) != 0x01 && (reg & 0x03) != 0x02) /* RD1 */ +if (index <9 && !(reg &0x03 ))/* RD1 */ return 0 ; -if (index >=9 && index <18 && - (reg &0x0c ) !=0x04 && (reg &0x0c ) !=0x08 )/* RD2 */ +if (index >=9 && index <18 && !(reg &0x0c ))/* RD2 */ return 0 ; -if (index >=18 && index <27 && (reg &0x30 ) !=0x10 )/* RD3 */ +if (index >=18 && index <27 && !(reg &0x30 ))/* RD3 */ 11b sets a sensor to voltage sense mode, not temperature mode. This is what the inX attributes are for. We can not just display a random temperature value if a sensor is configured to measure a voltage.
According to my datasheet, 01b (
0x10shifted) is reserved for RD3. So there is a bug, but it isif (index >= 18 && index < 27 && (reg & 0x30) != 0x10) /* RD3 */ which should be if (index >= 18 && index < 27 && (reg & 0x30) != 0x20) /* RD3 */Can you send an updated patch ?
Thanks,
Guenter
Signature · 8 lines
Constantine Shulyupin http://www.MakeLinux.com/ Embedded Linux Systems and Device Drivers _______________________________________________ lm-sensors mailing list [email protected] http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
Guenter Roeck
maintainerHi Constantine,
Quoted 2 lines · Constantine Shulyupin
Hi Guenter,
Please don't top-post.
Quoted 8 lines
Excerpt from datasheet:
7.2.32 Mode Selection RegisterRTD3_MD: 00=Closed , 01=Reserved , 10=Thermistor mode , 11=Voltage senseAs I understand the datasheel value 11b is valid too and the resister should be visible. It is legit to hide registers on 00=Closed and optionally on 01=Reserved (
RTD3_MDonly).
modeb configures the sensor to voltage mode, and the voltage is then reported with inX_input. Why do you think it should be reported as temperature ? How do you propose to translate the reported voltage to a temperature value ?
Quoted 11 lines
I suppose condition
RTD3_MD= 01b can be uncounted because is it reserved should not be used. temp3_* registers should be visible whenRTD3_MDis 10b or 11b and hidden whenRTD3_MD= 0 and optionally whenRTD3_MD= 1Therefore I propose to hide temp3_* when
RTD3_MD!= 0:
if (index >= 18 && index < 27 && !(reg &0x30) /* RD3 */or when
RTD3_MD= 0 orRTD3_MD= 1:
if (index >= 18 && index < 27 && (reg &0x30) <=0x10) /* RD3 */Do you agree?
No - see above. You don't explain why you want voltages reported as temperatures, and you don't explain the proposed transition function from voltages to temperatures, or the rationale for it.
What error are trying to fix, actually ? Do you have a temperature sensor connectecd to the chip which reports a temperature as voltage and needs a translation function from voltage to temperature ? Can you provide a link to the datasheet for that sensor, and details on how it is connected to the chip ?
Thanks,
Guenter
_______________________________________________
lm-sensors mailing list
[email protected]
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors