Added kernel patch to support temp readings for some atom processors.

This modifies the coretemp kernel modul and adds support for newer
intel atom processors temp modules.
This commit is contained in:
Christian Schmidt
2010-02-07 18:28:08 +01:00
parent e803f8dd2e
commit cfa7d74f9d
2 changed files with 61 additions and 0 deletions

View File

@@ -147,6 +147,9 @@ endif
# ipp2p 0.8.2-pomng
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.27.19-ipp2p-0.8.2-pomng.patch
# Intel Atom Coretemp Patch
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.27-atom-coretemp.patch
# Layer7-patch
cd $(DIR_SRC) && rm -rf $(DIR_SRC)/netfilter-layer7-v2.21
cd $(DIR_SRC) && tar xzf $(DIR_DL)/netfilter-layer7-v2.21.tar.gz

View File

@@ -0,0 +1,58 @@
diff -Naur linux-2.6.27.42.org/drivers/hwmon/coretemp.c linux-2.6.27.42/drivers/hwmon/coretemp.c
--- linux-2.6.27.42.org/drivers/hwmon/coretemp.c 2009-12-18 22:31:34.000000000 +0100
+++ linux-2.6.27.42/drivers/hwmon/coretemp.c 2010-02-07 12:36:39.000000000 +0100
@@ -1,7 +1,7 @@
/*
* coretemp.c - Linux kernel module for hardware monitoring
*
- * Copyright (C) 2007 Rudolf Marek <r.marek@assembler.cz>
+ * Copyright (C) 2007, 2008 Rudolf Marek <r.marek@assembler.cz>
*
* Inspired from many hwmon drivers
*
@@ -244,8 +244,14 @@
}
}
- data->tjmax = adjust_tjmax(c, data->id, &pdev->dev);
- platform_set_drvdata(pdev, data);
+ /* Intel Atom has only fixed TjMax at 95C */
+
+ if (c->x86_model == 0x1c) {
+ data->tjmax = 95000;
+ } else {
+ /* Adjust the TjMax for the rest of Core2 family */
+ data->tjmax = adjust_tjmax(c, data->id, &pdev->dev);
+ }
/* read the still undocumented IA32_TEMPERATURE_TARGET it exists
on older CPUs but not in this register */
@@ -265,6 +271,8 @@
}
}
+ platform_set_drvdata(pdev, data);
+
if ((err = sysfs_create_group(&pdev->dev.kobj, &coretemp_group)))
goto exit_dev;
@@ -409,15 +417,15 @@
err = platform_driver_register(&coretemp_driver);
if (err)
goto exit;
-
+
for_each_online_cpu(i) {
struct cpuinfo_x86 *c = &cpu_data(i);
- /* check if family 6, models 0xe, 0xf, 0x16, 0x17, 0x1A */
+ /* check if family 6, models 0xe, 0xf, 0x16, 0x17, 0x1A, 0x1c */
if ((c->cpuid_level < 0) || (c->x86 != 0x6) ||
!((c->x86_model == 0xe) || (c->x86_model == 0xf) ||
- (c->x86_model == 0x16) || (c->x86_model == 0x17) ||
- (c->x86_model == 0x1A))) {
+ (c->x86_model == 0x16) || (c->x86_model == 0x17) ||
+ (c->x86_model == 0x1c) || (c->x86_model == 0x1A))) {
/* supported CPU not found, but report the unknown
family 6 CPU */