hwmon: (k8temp) Fix temperature reporting for ASB1 processor revisions
authorAndreas Herrmann <andreas.herrmann3@amd.com>
Fri, 9 Jul 2010 14:22:47 +0000 (16:22 +0200)
committerJean Delvare <khali@linux-fr.org>
Fri, 9 Jul 2010 14:22:47 +0000 (16:22 +0200)
Reported temperature for ASB1 CPUs is too high.
Add ASB1 CPU revisions (these are also non-desktop variants) to the
list of CPUs for which the temperature fixup is not required.

Example: (from LENOVO ThinkPad Edge 13, 01972NG, system was idle)

  Current kernel reports

  $ sensors
  k8temp-pci-00c3
  Adapter: PCI adapter
  Core0 Temp:  +74.0 C
  Core0 Temp:  +70.0 C
  Core1 Temp:  +69.0 C
  Core1 Temp:  +70.0 C

  With this patch I have

  $ sensors
  k8temp-pci-00c3
  Adapter: PCI adapter
  Core0 Temp:  +54.0 C
  Core0 Temp:  +51.0 C
  Core1 Temp:  +48.0 C
  Core1 Temp:  +49.0 C

Cc: stable@kernel.org [.32.x .33.x, .34.x]
Cc: Rudolf Marek <r.marek@assembler.cz>
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
drivers/hwmon/k8temp.c

index f26acdb116819896c4e1e6bcb22eed2f364982ae..8bdf80d915985ff77ae31b197aab2f7fb08acb68 100644 (file)
@@ -180,11 +180,13 @@ static int __devinit k8temp_probe(struct pci_dev *pdev,
                }
 
                if ((model >= 0x69) &&
-                   !(model == 0xc1 || model == 0x6c || model == 0x7c)) {
+                   !(model == 0xc1 || model == 0x6c || model == 0x7c ||
+                     model == 0x6b || model == 0x6f || model == 0x7f)) {
                        /*
-                        * RevG desktop CPUs (i.e. no socket S1G1 parts)
-                        * need additional offset, otherwise reported
-                        * temperature is below ambient temperature
+                        * RevG desktop CPUs (i.e. no socket S1G1 or
+                        * ASB1 parts) need additional offset,
+                        * otherwise reported temperature is below
+                        * ambient temperature
                         */
                        data->temp_offset = 21000;
                }