diff options
Diffstat (limited to 'drivers/hwmon')
-rw-r--r-- | drivers/hwmon/coretemp.c | 17 | ||||
-rw-r--r-- | drivers/hwmon/via-cputemp.c | 16 |
2 files changed, 25 insertions, 8 deletions
diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index a6c6ec36615e..249ac460e3d9 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include <linux/moduleparam.h> | 39 | #include <linux/moduleparam.h> |
40 | #include <asm/msr.h> | 40 | #include <asm/msr.h> |
41 | #include <asm/processor.h> | 41 | #include <asm/processor.h> |
42 | #include <asm/cpu_device_id.h> | ||
42 | 43 | ||
43 | #define DRVNAME "coretemp" | 44 | #define DRVNAME "coretemp" |
44 | 45 | ||
@@ -759,13 +760,23 @@ static struct notifier_block coretemp_cpu_notifier __refdata = { | |||
759 | .notifier_call = coretemp_cpu_callback, | 760 | .notifier_call = coretemp_cpu_callback, |
760 | }; | 761 | }; |
761 | 762 | ||
763 | static const struct x86_cpu_id coretemp_ids[] = { | ||
764 | { X86_VENDOR_INTEL, X86_FAMILY_ANY, X86_MODEL_ANY, X86_FEATURE_DTS }, | ||
765 | {} | ||
766 | }; | ||
767 | MODULE_DEVICE_TABLE(x86cpu, coretemp_ids); | ||
768 | |||
762 | static int __init coretemp_init(void) | 769 | static int __init coretemp_init(void) |
763 | { | 770 | { |
764 | int i, err = -ENODEV; | 771 | int i, err = -ENODEV; |
765 | 772 | ||
766 | /* quick check if we run Intel */ | 773 | /* |
767 | if (cpu_data(0).x86_vendor != X86_VENDOR_INTEL) | 774 | * CPUID.06H.EAX[0] indicates whether the CPU has thermal |
768 | goto exit; | 775 | * sensors. We check this bit only, all the early CPUs |
776 | * without thermal sensors will be filtered out. | ||
777 | */ | ||
778 | if (!x86_match_cpu(coretemp_ids)) | ||
779 | return -ENODEV; | ||
769 | 780 | ||
770 | err = platform_driver_register(&coretemp_driver); | 781 | err = platform_driver_register(&coretemp_driver); |
771 | if (err) | 782 | if (err) |
diff --git a/drivers/hwmon/via-cputemp.c b/drivers/hwmon/via-cputemp.c index 8eac67d769fa..8689664ef03c 100644 --- a/drivers/hwmon/via-cputemp.c +++ b/drivers/hwmon/via-cputemp.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <linux/cpu.h> | 37 | #include <linux/cpu.h> |
38 | #include <asm/msr.h> | 38 | #include <asm/msr.h> |
39 | #include <asm/processor.h> | 39 | #include <asm/processor.h> |
40 | #include <asm/cpu_device_id.h> | ||
40 | 41 | ||
41 | #define DRVNAME "via_cputemp" | 42 | #define DRVNAME "via_cputemp" |
42 | 43 | ||
@@ -308,15 +309,20 @@ static struct notifier_block via_cputemp_cpu_notifier __refdata = { | |||
308 | .notifier_call = via_cputemp_cpu_callback, | 309 | .notifier_call = via_cputemp_cpu_callback, |
309 | }; | 310 | }; |
310 | 311 | ||
312 | static const struct x86_cpu_id cputemp_ids[] = { | ||
313 | { X86_VENDOR_CENTAUR, 6, 0xa, }, /* C7 A */ | ||
314 | { X86_VENDOR_CENTAUR, 6, 0xd, }, /* C7 D */ | ||
315 | { X86_VENDOR_CENTAUR, 6, 0xf, }, /* Nano */ | ||
316 | {} | ||
317 | }; | ||
318 | MODULE_DEVICE_TABLE(x86cpu, cputemp_ids); | ||
319 | |||
311 | static int __init via_cputemp_init(void) | 320 | static int __init via_cputemp_init(void) |
312 | { | 321 | { |
313 | int i, err; | 322 | int i, err; |
314 | 323 | ||
315 | if (cpu_data(0).x86_vendor != X86_VENDOR_CENTAUR) { | 324 | if (!x86_match_cpu(cputemp_ids)) |
316 | printk(KERN_DEBUG DRVNAME ": Not a VIA CPU\n"); | 325 | return -ENODEV; |
317 | err = -ENODEV; | ||
318 | goto exit; | ||
319 | } | ||
320 | 326 | ||
321 | err = platform_driver_register(&via_cputemp_driver); | 327 | err = platform_driver_register(&via_cputemp_driver); |
322 | if (err) | 328 | if (err) |