Merge branch 'fixes' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur...
[pandora-kernel.git] / drivers / hwmon / w83627ehf.c
index f2b377c..7b0260d 100644 (file)
@@ -1715,7 +1715,8 @@ static void w83627ehf_device_remove_files(struct device *dev)
 }
 
 /* Get the monitoring functions started */
-static inline void __devinit w83627ehf_init_device(struct w83627ehf_data *data)
+static inline void __devinit w83627ehf_init_device(struct w83627ehf_data *data,
+                                                  enum kinds kind)
 {
        int i;
        u8 tmp, diode;
@@ -1746,10 +1747,16 @@ static inline void __devinit w83627ehf_init_device(struct w83627ehf_data *data)
                w83627ehf_write_value(data, W83627EHF_REG_VBAT, tmp | 0x01);
 
        /* Get thermal sensor types */
-       diode = w83627ehf_read_value(data, W83627EHF_REG_DIODE);
+       switch (kind) {
+       case w83627ehf:
+               diode = w83627ehf_read_value(data, W83627EHF_REG_DIODE);
+               break;
+       default:
+               diode = 0x70;
+       }
        for (i = 0; i < 3; i++) {
                if ((tmp & (0x02 << i)))
-                       data->temp_type[i] = (diode & (0x10 << i)) ? 1 : 2;
+                       data->temp_type[i] = (diode & (0x10 << i)) ? 1 : 3;
                else
                        data->temp_type[i] = 4; /* thermistor */
        }
@@ -2016,7 +2023,7 @@ static int __devinit w83627ehf_probe(struct platform_device *pdev)
        }
 
        /* Initialize the chip */
-       w83627ehf_init_device(data);
+       w83627ehf_init_device(data, sio_data->kind);
 
        data->vrm = vid_which_vrm();
        superio_enter(sio_data->sioreg);