aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/coretemp.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hwmon/coretemp.c')
-rw-r--r--drivers/hwmon/coretemp.c37
1 files changed, 15 insertions, 22 deletions
diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c
index 47b8d84b489d..1653d0ddd1d0 100644
--- a/drivers/hwmon/coretemp.c
+++ b/drivers/hwmon/coretemp.c
@@ -34,7 +34,6 @@
#include <linux/list.h>
#include <linux/platform_device.h>
#include <linux/cpu.h>
-#include <linux/pci.h>
#include <linux/smp.h>
#include <linux/moduleparam.h>
#include <asm/msr.h>
@@ -222,7 +221,6 @@ static int __cpuinit adjust_tjmax(struct cpuinfo_x86 *c, u32 id,
int usemsr_ee = 1;
int err;
u32 eax, edx;
- struct pci_dev *host_bridge;
int i;
/* explicit tjmax table entries override heuristics */
@@ -231,31 +229,26 @@ static int __cpuinit adjust_tjmax(struct cpuinfo_x86 *c, u32 id,
return tjmax_table[i].tjmax;
}
- /* Early chips have no MSR for TjMax */
-
- if (c->x86_model == 0xf && c->x86_mask < 4)
- usemsr_ee = 0;
-
/* Atom CPUs */
- if (c->x86_model == 0x1c || c->x86_model == 0x26
- || c->x86_model == 0x27) {
- usemsr_ee = 0;
-
- host_bridge = pci_get_bus_and_slot(0, PCI_DEVFN(0, 0));
+ if (c->x86_model == 0x1c) {
+ /*
+ * TjMax for stepping 10 CPUs (N4xx, N5xx, D4xx, D5xx)
+ * is 100 degrees C, for all others it is 90 degrees C.
+ */
+ if (c->x86_mask == 10)
+ return 100000;
+ return 90000;
+ } else if (c->x86_model == 0x26 || c->x86_model == 0x27) {
+ return 90000;
+ } else if (c->x86_model == 0x36) {
+ return 100000;
+ }
- if (host_bridge && host_bridge->vendor == PCI_VENDOR_ID_INTEL
- && (host_bridge->device == 0xa000 /* NM10 based nettop */
- || host_bridge->device == 0xa010)) /* NM10 based netbook */
- tjmax = 100000;
- else
- tjmax = 90000;
+ /* Early chips have no MSR for TjMax */
- pci_dev_put(host_bridge);
- } else if (c->x86_model == 0x36) {
+ if (c->x86_model == 0xf && c->x86_mask < 4)
usemsr_ee = 0;
- tjmax = 100000;
- }
if (c->x86_model > 0xe && usemsr_ee) {
u8 platform_id;