From 1dd216b9bd960319f64ebbd9d118490ec3688fc0 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Tue, 8 Feb 2011 13:26:53 +0100 Subject: [PATCH] lm_sensors: add some upstream patches Signed-off-by: Stephan Raue --- .../lm_sensors-3.2.0-changeset_5905.patch | 140 ++++++++++++++++++ .../lm_sensors-3.2.0-changeset_5913.patch | 12 ++ 2 files changed, 152 insertions(+) create mode 100644 packages/sysutils/lm_sensors/patches/lm_sensors-3.2.0-changeset_5905.patch create mode 100644 packages/sysutils/lm_sensors/patches/lm_sensors-3.2.0-changeset_5913.patch diff --git a/packages/sysutils/lm_sensors/patches/lm_sensors-3.2.0-changeset_5905.patch b/packages/sysutils/lm_sensors/patches/lm_sensors-3.2.0-changeset_5905.patch new file mode 100644 index 0000000000..51f0786f57 --- /dev/null +++ b/packages/sysutils/lm_sensors/patches/lm_sensors-3.2.0-changeset_5905.patch @@ -0,0 +1,140 @@ +diff -Naur lm_sensors-3.2.0-old/CHANGES lm_sensors-3.2.0-new/CHANGES +--- lm_sensors-3.2.0-old/CHANGES 2011-01-19 19:04:13.000000000 -0800 ++++ lm_sensors-3.2.0-new/CHANGES 2011-01-19 19:04:29.000000000 -0800 +@@ -18,6 +18,7 @@ + Add support for Intel PCH (SMBus) + Add support for SMSC EMC1403 and EMC1404 + Fix detection of RB-C3 AMD Family 10h CPU ++ Implement universal detection for coretemp + Add support for SMSC EMC2103 + Add support for Fintek F71889ED + Add support for ITE IT8721F +diff -Naur lm_sensors-3.2.0-old/prog/detect/sensors-detect lm_sensors-3.2.0-new/prog/detect/sensors-detect +--- lm_sensors-3.2.0-old/prog/detect/sensors-detect 2011-01-19 19:04:13.000000000 -0800 ++++ lm_sensors-3.2.0-new/prog/detect/sensors-detect 2011-01-19 19:04:29.000000000 -0800 +@@ -23,7 +23,7 @@ + require 5.004; + + use strict; +-use Fcntl; ++use Fcntl qw(:DEFAULT :seek); + use File::Basename; + + # We will call modprobe, which typically lives in either /sbin, +@@ -2025,13 +2025,9 @@ + driver => "k10temp", + detect => \&fam11h_pci_detect, + }, { +- name => "Intel Core family thermal sensor", ++ name => "Intel digital thermal sensor", + driver => "coretemp", +- detect => sub { coretemp_detect(0); }, +- }, { +- name => "Intel Atom thermal sensor", +- driver => "coretemp", +- detect => sub { coretemp_detect(1); }, ++ detect => \&coretemp_detect, + }, { + name => "Intel AMB FB-DIMM thermal sensor", + driver => "i5k_amb", +@@ -2293,10 +2289,10 @@ + while () { + if (m/^processor\s*:\s*(\d+)/) { + push @cpu, $entry if scalar keys(%{$entry}); # Previous entry +- $entry = {}; # New entry ++ $entry = { nr => $1 }; # New entry + next; + } +- if (m/^(vendor_id|cpu family|model|model name|stepping)\s*:\s*(.+)$/) { ++ if (m/^(vendor_id|cpu family|model|model name|stepping|cpuid level)\s*:\s*(.+)$/) { + my $k = $1; + my $v = $2; + $v =~ s/\s+/ /g; # Merge multiple spaces +@@ -2465,6 +2461,15 @@ + $modules_list{$normalized} = 1; + } + ++# udev may take some time to create device nodes when loading modules ++sub udev_settle ++{ ++ if (!(-x "/sbin/udevadm" && system("/sbin/udevadm settle") == 0) ++ && !(-x "/sbin/udevsettle" && system("/sbin/udevsettle") == 0)) { ++ sleep(1); ++ } ++} ++ + sub initialize_modules_supported + { + foreach my $chip (@chip_ids) { +@@ -5754,23 +5759,33 @@ + return; + } + ++sub cpuid ++{ ++ my ($cpu_nr, $eax) = @_; ++ ++ sysopen(CPUID, "/dev/cpu/$cpu_nr/cpuid", O_RDONLY) or return; ++ binmode CPUID; ++ sysseek(CPUID, $eax, SEEK_SET) ++ or die "Cannot seek /dev/cpu/$cpu_nr/cpuid"; ++ sysread(CPUID, my $data, 16) ++ or die "Cannot read /dev/cpu/$cpu_nr/cpuid"; ++ close CPUID; ++ ++ return unpack("L4", $data); ++} ++ + sub coretemp_detect + { +- my $chip = shift; + my $probecpu; + + foreach $probecpu (@cpu) { + next unless $probecpu->{vendor_id} eq 'GenuineIntel' && +- $probecpu->{'cpu family'} == 6; +- return 9 if $chip == 0 && +- ($probecpu->{model} == 14 || # Pentium M DC +- $probecpu->{model} == 15 || # Core 2 DC 65nm +- $probecpu->{model} == 0x16 || # Core 2 SC 65nm +- $probecpu->{model} == 0x17 || # Penryn 45nm +- $probecpu->{model} == 0x1a || # Nehalem +- $probecpu->{model} == 0x1e); # Lynnfield +- return 9 if $chip == 1 && +- ($probecpu->{model} == 0x1c); # Atom ++ $probecpu->{'cpuid level'} >= 6; ++ ++ # Now we check for the DTS flag ++ my @regs = cpuid($probecpu->{nr}, 6); ++ return unless @regs == 4; ++ return 9 if ($regs[0] & (1 << 0)); # eax, bit 0 + } + return; + } +@@ -6124,6 +6139,12 @@ + print "Some south bridges, CPUs or memory controllers contain embedded sensors.\n". + "Do you want to scan for them? This is totally safe. (YES/no): "; + unless ( =~ /^\s*n/i) { ++ # Load the cpuid driver if needed ++ unless (-e "/dev/cpu/$cpu[0]->{nr}/cpuid") { ++ load_module("cpuid"); ++ udev_settle(); ++ } ++ + $| = 1; + foreach my $entry (@cpu_ids) { + scan_cpu($entry); +@@ -6199,12 +6220,7 @@ + $by_default = 1 if dmi_match('board_vendor', 'asustek', 'tyan', + 'supermicro'); + +- # udev may take some time to create the device node +- if (!(-x "/sbin/udevadm" && system("/sbin/udevadm settle") == 0) +- && !(-x "/sbin/udevsettle" && system("/sbin/udevsettle") == 0)) { +- sleep(1); +- } +- ++ udev_settle(); + for (my $dev_nr = 0; $dev_nr < @i2c_adapters; $dev_nr++) { + next unless exists $i2c_adapters[$dev_nr]; + scan_i2c_adapter($dev_nr, $by_default); diff --git a/packages/sysutils/lm_sensors/patches/lm_sensors-3.2.0-changeset_5913.patch b/packages/sysutils/lm_sensors/patches/lm_sensors-3.2.0-changeset_5913.patch new file mode 100644 index 0000000000..bb03770adc --- /dev/null +++ b/packages/sysutils/lm_sensors/patches/lm_sensors-3.2.0-changeset_5913.patch @@ -0,0 +1,12 @@ +diff -Naur lm_sensors-3.2.0-old/etc/sensors.conf.default lm_sensors-3.2.0-new/etc/sensors.conf.default +--- lm_sensors-3.2.0-old/etc/sensors.conf.default 2011-02-07 19:37:38.000000000 -0800 ++++ lm_sensors-3.2.0-new/etc/sensors.conf.default 2011-02-07 19:38:19.000000000 -0800 +@@ -285,7 +285,7 @@ + # set in8_max 3.0 * 1.10 + + +-chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*" ++chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*" "nct6775-*" "nct6776-*" + + label in0 "Vcore" + label in2 "AVCC"