Detect presense of sensor by calling type function instead trying to read
temperature value. Type function is working also for sensors which are temporary
turned off (e.g on GPU which is turned off). Dell DOS binary NBSVC.MDM is doing
similar checks, so we should do that too.

Signed-off-by: Pali Rohár <[email protected]>
Reviewed-by: Guenter Roeck <[email protected]>
Tested-by: Guenter Roeck <[email protected]>
---
 drivers/char/i8k.c |   18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/char/i8k.c b/drivers/char/i8k.c
index 663868b..afcc9fe 100644
--- a/drivers/char/i8k.c
+++ b/drivers/char/i8k.c
@@ -660,19 +660,19 @@ static int __init i8k_init_hwmon(void)
 
        i8k_hwmon_flags = 0;
 
-       /* CPU temperature attributes, if temperature reading is OK */
-       err = i8k_get_temp(0);
-       if (err >= 0 || err == -ERANGE)
+       /* CPU temperature attributes, if temperature type is OK */
+       err = i8k_get_temp_type(0);
+       if (err >= 0)
                i8k_hwmon_flags |= I8K_HWMON_HAVE_TEMP1;
        /* check for additional temperature sensors */
-       err = i8k_get_temp(1);
-       if (err >= 0 || err == -ERANGE)
+       err = i8k_get_temp_type(1);
+       if (err >= 0)
                i8k_hwmon_flags |= I8K_HWMON_HAVE_TEMP2;
-       err = i8k_get_temp(2);
-       if (err >= 0 || err == -ERANGE)
+       err = i8k_get_temp_type(2);
+       if (err >= 0)
                i8k_hwmon_flags |= I8K_HWMON_HAVE_TEMP3;
-       err = i8k_get_temp(3);
-       if (err >= 0 || err == -ERANGE)
+       err = i8k_get_temp_type(3);
+       if (err >= 0)
                i8k_hwmon_flags |= I8K_HWMON_HAVE_TEMP4;
 
        /* Left fan attributes, if left fan is present */
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to