From 44e98dbff19f1cfd3edf26618f2462aeb6c0106e Mon Sep 17 00:00:00 2001 From: Cecil Hugh Watson Date: Sun, 1 Nov 2009 00:37:04 -0700 Subject: kernel26:patch for coretemp. closes fs#534 --- abs/core-testing/kernel26/PKGBUILD | 10 ++-- abs/core-testing/kernel26/coretemp.patch | 86 ++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+), 3 deletions(-) create mode 100644 abs/core-testing/kernel26/coretemp.patch diff --git a/abs/core-testing/kernel26/PKGBUILD b/abs/core-testing/kernel26/PKGBUILD index 8248fc5..0095428 100644 --- a/abs/core-testing/kernel26/PKGBUILD +++ b/abs/core-testing/kernel26/PKGBUILD @@ -5,7 +5,7 @@ pkgname=kernel26 _basekernel=2.6.28 pkgver=2.6.28.5 -pkgrel=4 +pkgrel=5 _pkgrel=1 _patchname="patch-${pkgver}-${_pkgrel}-ARCH" _fbpatchname="fbcondecor-0.9.5-2.6.28.patch" @@ -35,7 +35,8 @@ source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_basekernel.tar.bz2 kernel26.preset logo_linux_clut224.ppm serial.diff - ext4.patch) + ext4.patch + coretemp.patch) optdepends=('crda: to set the correct wireless channels of your country') md5sums=('d351e44709c9810b85e29b877f50968a' '6e63a5f54c142f42de7e59fc5f75eab2' @@ -44,7 +45,8 @@ md5sums=('d351e44709c9810b85e29b877f50968a' '959b317feb974d8906c5e15e7c76ad8f' 'ceb38003807a5aa1a00c8d4b9f028893' '7bdfe2e1daedb324fdfdfa95ba4e2430' - 'd66b5cc1e1c2ce40d06d77167f36dfd9') + 'd66b5cc1e1c2ce40d06d77167f36dfd9' + '695a2d6f1b0b4c7001bf665d5f667a5d') build() { KARCH=x86 @@ -55,6 +57,8 @@ build() { patch -Np1 -i ${srcdir}/${_patchname} || return 1 patch -Np1 -i ${srcdir}/${_fbpatchname} || return 1 patch -Np1 -i ${srcdir}/ext4.patch || return 1 + patch -Np1 -i ${srcdir}/coretemp.patch || return 1 +# patch -Np1 -i ${srcdir}/patch-2.6.28.5 || return 1 # patch -p0 < ../../serial.diff if [ "$CARCH" = "x86_64" ]; then diff --git a/abs/core-testing/kernel26/coretemp.patch b/abs/core-testing/kernel26/coretemp.patch new file mode 100644 index 0000000..07ce434 --- /dev/null +++ b/abs/core-testing/kernel26/coretemp.patch @@ -0,0 +1,86 @@ +diff -ubr orig/linux-2.6.28/Documentation/hwmon/coretemp linux-2.6.28/Documentation/hwmon/coretemp +--- orig/linux-2.6.28/Documentation/hwmon/coretemp 2008-12-25 00:26:37.000000000 +0100 ++++ linux-2.6.28/Documentation/hwmon/coretemp 2009-07-18 07:29:37.000000000 +0200 +@@ -4,7 +4,7 @@ + Supported chips: + * All Intel Core family + Prefix: 'coretemp' +- CPUID: family 0x6, models 0xe, 0xf, 0x16, 0x17 ++ CPUID: family 0x6, models 0xe, 0xf, 0x16, 0x17, 0x1c + Datasheet: Intel 64 and IA-32 Architectures Software Developer's Manual + Volume 3A: System Programming Guide + http://softwarecommunity.intel.com/Wiki/Mobility/720.htm +@@ -14,10 +14,11 @@ + Description + ----------- + +-This driver permits reading temperature sensor embedded inside Intel Core CPU. +-Temperature is measured in degrees Celsius and measurement resolution is +-1 degree C. Valid temperatures are from 0 to TjMax degrees C, because +-the actual value of temperature register is in fact a delta from TjMax. ++This driver permits reading temperature sensor embedded inside Intel ++Core and Intel Atom CPUs. Temperature is measured in degrees Celsius ++and measurement resolution is 1 degree C. Valid temperatures are from 0 ++to TjMax degrees C, because the actual value of temperature register is ++in fact a delta from TjMax. + + Temperature known as TjMax is the maximum junction temperature of processor. + Intel defines this temperature as 85C or 100C. At this temperature, protection +@@ -35,4 +36,5 @@ + + The TjMax temperature is set to 85 degrees C if undocumented model specific + register (UMSR) 0xee has bit 30 set. If not the TjMax is 100 degrees C as +-(sometimes) documented in processor datasheet. ++(sometimes) documented in processor datasheet. The Intel Atom has TjMax 95C ++as per the specification. +diff -ubr orig/linux-2.6.28/drivers/hwmon/coretemp.c linux-2.6.28/drivers/hwmon/coretemp.c +--- orig/linux-2.6.28/drivers/hwmon/coretemp.c 2008-12-25 00:26:37.000000000 +0100 ++++ linux-2.6.28/drivers/hwmon/coretemp.c 2009-07-18 08:12:16.000000000 +0200 +@@ -1,7 +1,7 @@ + /* + * coretemp.c - Linux kernel module for hardware monitoring + * +- * Copyright (C) 2007 Rudolf Marek ++ * Copyright (C) 2007, 2008 Rudolf Marek + * + * Inspired from many hwmon drivers + * +@@ -244,8 +244,14 @@ + } + } + ++ /* 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); +- platform_set_drvdata(pdev, data); ++ } + + /* 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; + +@@ -413,11 +421,11 @@ + 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 == 0x1A) || (c->x86_model == 0x1C))) { + + /* supported CPU not found, but report the unknown + family 6 CPU */ -- cgit v0.12