Hello community,

here is the log from the commit of package sensors for openSUSE:Factory
checked in at Mon Jul 25 08:42:31 CEST 2011.



--------
--- sensors/sensors.changes     2011-03-29 19:11:31.000000000 +0200
+++ /mounts/work_src_done/STABLE/sensors/sensors.changes        2011-07-22 
19:03:34.000000000 +0200
@@ -1,0 +2,10 @@
+Fri Jul 22 18:56:09 CEST 2011 - jdelv...@suse.de
+
+- Update to lm_sensors 3.3.1
+  * Detection of new devices
+- lm_sensors-3.1.1-no-ipmisensors-driver.patch: Removed, obsolete.
+- lm_sensors-r5991-improve-filtering-of-fake-DMI-data.patch,
+  lm_sensors-r5992-print-DMI-product-version.patch: Improve DMI
+  product identification.
+
+-------------------------------------------------------------------

calling whatdependson for head-i586


Old:
----
  lm_sensors-3.1.1-no-ipmisensors-driver.patch
  lm_sensors-3.3.0.tar.bz2
  lm_sensors-r5952-new-fintek-chips.patch

New:
----
  lm_sensors-3.3.1.tar.bz2
  lm_sensors-r5991-improve-filtering-of-fake-DMI-data.patch
  lm_sensors-r5992-print-DMI-product-version.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ sensors.spec ++++++
--- /var/tmp/diff_new_pack.IiXFGY/_old  2011-07-25 08:41:59.000000000 +0200
+++ /var/tmp/diff_new_pack.IiXFGY/_new  2011-07-25 08:41:59.000000000 +0200
@@ -21,7 +21,7 @@
 Name:           sensors
 BuildRequires:  bison flex rrdtool-devel
 Url:            http://www.lm-sensors.org/
-Version:        3.3.0
+Version:        3.3.1
 Release:        1
 Summary:        Hardware health monitoring for Linux
 License:        GPLv2+
@@ -35,8 +35,9 @@
 Patch2:         lm_sensors-3.0.0-sensord-separate.patch
 Patch3:         lm_sensors-3.0.0-sysconfig_metadata.patch
 Patch4:         lm_sensors-3.0.3-hint-at-kernel-extra-package.patch
-Patch5:         lm_sensors-3.1.1-no-ipmisensors-driver.patch
-Patch6:         lm_sensors-r5952-new-fintek-chips.patch
+Patch5:         lm_sensors-r5991-improve-filtering-of-fake-DMI-data.patch
+Patch6:         lm_sensors-r5992-print-DMI-product-version.patch
+
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 ExcludeArch:    s390 s390x
 

++++++ lm_sensors-3.3.0.tar.bz2 -> lm_sensors-3.3.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/CHANGES new/lm_sensors-3.3.1/CHANGES
--- old/lm_sensors-3.3.0/CHANGES        2011-03-28 09:02:37.000000000 +0200
+++ new/lm_sensors-3.3.1/CHANGES        2011-07-21 22:36:42.000000000 +0200
@@ -1,6 +1,24 @@
 lm-sensors CHANGES file
 -----------------------
 
+3.3.1 (2011-07-21)
+  isadump: Add support for word (16-bit) and long (32-bit) reads
+  isaset: Add support for word (16-bit) and long (32-bit) writes
+  sensors.conf.default: Add a section for the EMC6W201
+  sensors-detect: Add AMD family 15h CPU detection
+                  Add detection of ADT7461A / NCT1008
+                  Add detection of ITE IT8516E/F/G
+                  Integrate with systemd
+                  Drop unreliable smart battery detection
+                  Add detection of SMSC EMC6W201
+                  Drop unreliable detection of Maxim MAX6650
+                  Add detection of SMSC EMC2300
+                  Add detection of MAX6642
+                  Add detection of ITE IT8772E
+                  Don't advertise the ipmisensors driver
+                  Add detection of SA56004
+                  Add detection of LM95245
+
 3.3.0 (2011-03-28)
   Makefile: Check for bison and flex
   libsensors: Add support for intrusion detection (#2370)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/doc/developers/lm_sensors.lsm 
new/lm_sensors-3.3.1/doc/developers/lm_sensors.lsm
--- old/lm_sensors-3.3.0/doc/developers/lm_sensors.lsm  2011-03-28 
09:02:37.000000000 +0200
+++ new/lm_sensors-3.3.1/doc/developers/lm_sensors.lsm  2011-07-21 
22:36:42.000000000 +0200
@@ -1,7 +1,7 @@
 Begin4
 Title: lm_sensors
-Version: 3.3.0
-Entered-date: 2011-03-28
+Version: 3.3.1
+Entered-date: 2011-07-21
 Description: Hardware health monitoring package for Linux. It consists of 
              a library to allow applications to read sensors data more
              easily, and of an example program to pretty print this data.
@@ -11,8 +11,8 @@
 Author: kh...@linux-fr.org (Jean Delvare)
 Maintained-by: kh...@linux-fr.org (Jean Delvare)
 Primary-site: http://dl.lm-sensors.org /lm-sensors/releases/
-              lm_sensors-3.3.0.tar.bz2
-              lm_sensors-3.3.0.tar.bz2.sig
+              lm_sensors-3.3.1.tar.bz2
+              lm_sensors-3.3.1.tar.bz2.sig
 Alternate-site: ftp.netroedge.com /pub/lm-sensors/
 Copying-policy: GPL/LGPL
 End
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/doc/libsensors-API.txt 
new/lm_sensors-3.3.1/doc/libsensors-API.txt
--- old/lm_sensors-3.3.0/doc/libsensors-API.txt 2011-03-28 09:02:37.000000000 
+0200
+++ new/lm_sensors-3.3.1/doc/libsensors-API.txt 2011-07-21 22:36:42.000000000 
+0200
@@ -6,7 +6,7 @@
 authors can quickly figure out how to test for the availability of a
 given new feature.
 
-0x431  lm-sensors 3.3.0
+0x431  lm-sensors 3.3.0 to 3.3.1
 * Added support for intrusion detection
   enum sensors_feature_type SENSORS_FEATURE_INTRUSION
   enum sensors_subfeature_type SENSORS_SUBFEATURE_INTRUSION_ALARM
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/doc/progs 
new/lm_sensors-3.3.1/doc/progs
--- old/lm_sensors-3.3.0/doc/progs      2009-02-14 10:10:41.000000000 +0100
+++ new/lm_sensors-3.3.1/doc/progs      2011-07-21 21:38:10.000000000 +0200
@@ -25,7 +25,7 @@
      isadump -k 0x55 0x2e 0x2f
 
 * prog/hotplug/unhide_ICH_SMBus (shell script, not installed)
-  It unhides the ICH Intel SMBus for 2.6 kernels
+  It unhides the ICH Intel SMBus for kernel 2.6.5 and later.
 
 * prog/init/lm_sensors.init (shell script, not installed)
   A SysV init script to be installed in /etc/rc.d/init.d/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/doc/svn new/lm_sensors-3.3.1/doc/svn
--- old/lm_sensors-3.3.0/doc/svn        2008-04-17 13:08:34.000000000 +0200
+++ new/lm_sensors-3.3.1/doc/svn        2011-07-21 21:38:10.000000000 +0200
@@ -4,9 +4,9 @@
 that users can have direct access to up-to-the-minute code.
 (http://subversion.tigris.org/)
 
-Driver development for 2.6 kernels is taking place directly in the kernel
-using GIT. Do not use the drivers from our SVN repository for 2.6 kernels, it
-will not work. The user-space tools will work though.
+Driver development for kernel version 3 is taking place directly in the kernel
+using GIT. Do not use the drivers from our SVN repository for kernel version
+2.6 or 3, it will not work. The user-space tools will work though.
 
 We presume that you have Subversion installed on your machine. To check out a
 working copy of the code for this project use the following commands:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/etc/sensors-conf-convert 
new/lm_sensors-3.3.1/etc/sensors-conf-convert
--- old/lm_sensors-3.3.0/etc/sensors-conf-convert       2007-10-25 
11:59:05.000000000 +0200
+++ new/lm_sensors-3.3.1/etc/sensors-conf-convert       2011-07-21 
21:38:10.000000000 +0200
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w -pi.old
 
 # Convert a sensors.conf file from the old (Linux 2.4, lm-sensors 2)
-# symbol names to the new (Linux 2.6, lm-sensors 3) symbol names.
+# symbol names to the new (Linux 2.6 or 3, lm-sensors 3) symbol names.
 #
 # Copyright (C) 2007  Jean Delvare <kh...@linux-fr.org>
 #
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/etc/sensors.conf.default 
new/lm_sensors-3.3.1/etc/sensors.conf.default
--- old/lm_sensors-3.3.0/etc/sensors.conf.default       2011-03-26 
09:49:23.000000000 +0100
+++ new/lm_sensors-3.3.1/etc/sensors.conf.default       2011-05-28 
11:56:27.000000000 +0200
@@ -223,7 +223,8 @@
     label temp1 "SIO Temp"
 
 
-chip "lm85-*" "lm85b-*" "lm85c-*" "adm1027-*" "adt7463-*" "adt7468-*" 
"emc6d100-*" "emc6d102-*"
+chip "lm85-*" "lm85b-*" "lm85c-*" "adm1027-*" "adt7463-*" "adt7468-*" \
+     "emc6d100-*" "emc6d102-*" "emc6d103-*" "emc6d103s-*" 
 
     label in1 "Vcore"
     label in2 "+3.3V"
@@ -242,6 +243,14 @@
     label temp2 "M/B Temp"
 
 
+chip "emc6w201-*"
+
+    label in2 "+3.3V"
+    label in3 "+5V"
+
+    label temp6 "M/B Temp"
+
+
 chip "pc87365-*" "pc87366-*"
 
 # Voltage inputs
@@ -447,7 +456,7 @@
     set in6_max  3.0 * 1.10
 
 
-chip "f71808e-*" "f71862fg-*" "f71869-*" "f71882fg-*" \
+chip "f71808e-*" "f71808a-*" "f71862fg-*" "f71869-*" "f71869a-*" "f71882fg-*" \
      "f71889fg-*" "f71889ed-*" "f71889a-*"
 
     label in0 "+3.3V"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/prog/detect/sensors-detect 
new/lm_sensors-3.3.1/prog/detect/sensors-detect
--- old/lm_sensors-3.3.0/prog/detect/sensors-detect     2011-03-23 
11:54:44.000000000 +0100
+++ new/lm_sensors-3.3.1/prog/detect/sensors-detect     2011-07-10 
21:22:53.000000000 +0200
@@ -41,7 +41,7 @@
 use vars qw(@pci_adapters @chip_ids @ipmi_ifs @non_hwmon_chip_ids
            $i2c_addresses_to_scan $revision @i2c_byte_cache);
 
-$revision = '$Revision: 5946 $ ($Date: 2011-03-23 11:54:44 +0100 (mer. 23 mars 
2011) $)';
+$revision = '$Revision: 5984 $ ($Date: 2011-07-10 21:22:53 +0200 (dim. 10 
juil. 2011) $)';
 $revision =~ s/\$\w+: (.*?) \$/$1/g;
 $revision =~ s/ \([^()]*\)//;
 
@@ -557,11 +557,16 @@
                i2c_addrs => [0x2c..0x2e],
                i2c_detect => sub { lm85_detect(@_, 6); },
        }, {
-               name => "SMSC EMC6D103S",
-               driver => "to-be-written",      # lm85
+               name => "SMSC EMC6D103S or EMC2300",
+               driver => "lm85",
                i2c_addrs => [0x2c..0x2e],
                i2c_detect => sub { lm85_detect(@_, 8); },
        }, {
+               name => "SMSC EMC6W201",
+               driver => "emc6w201",
+               i2c_addrs => [0x2c..0x2e],
+               i2c_detect => sub { emc6w201_detect(@_); },
+       }, {
                name => "Winbond WPCD377I",
                driver => "not-a-sensor",
                i2c_addrs => [0x2c..0x2e],
@@ -613,7 +618,7 @@
                i2c_detect => sub { adt7410_detect(@_); },
        }, {
                name => "Analog Devices ADT7411",
-               driver => "to-be-written",
+               driver => "adt7411",
                i2c_addrs => [0x48, 0x4a, 0x4b],
                i2c_detect => sub { adt7411_detect(@_); },
        }, {
@@ -653,7 +658,7 @@
                i2c_detect => sub { lm93_detect(@_, 0); },
        }, {
                name => "National Semiconductor LM94",
-               driver => "to-be-written",      # Most likely lm93
+               driver => "lm93",
                i2c_addrs => [0x2c..0x2e],
                i2c_detect => sub { lm93_detect(@_, 1); },
        }, {
@@ -843,10 +848,10 @@
                i2c_addrs => [0x2c, 0x2e, 0x2f],
                i2c_detect => sub { max6639_detect(@_); },
        }, {
-               name => "Maxim MAX6650/MAX6651",
-               driver => "max6650",
-               i2c_addrs => [0x1b, 0x1f, 0x48, 0x4b],
-               i2c_detect => sub { max6650_detect(@_); },
+               name => "Maxim MAX6642",
+               driver => "max6642",
+               i2c_addrs => [0x48..0x4f],
+               i2c_detect => sub { max6642_detect(@_); },
        }, {
                name => "Maxim MAX6655/MAX6656",
                driver => "max6655",
@@ -954,7 +959,7 @@
                i2c_detect => sub { max6680_95_detect(@_, 1); },
        }, {
                name => "Winbond W83L771W/G",
-               driver => "to-be-written",
+               driver => "lm90",
                i2c_addrs => [0x4c],
                i2c_detect => sub { lm90_detect(@_, 8); },
        }, {
@@ -994,7 +999,7 @@
                i2c_detect => sub { amc6821_detect(@_); },
        }, {
                name => "National Semiconductor LM95231",
-               driver => "to-be-written",
+               driver => "lm95241",
                i2c_addrs => [0x2b, 0x19, 0x2a],
                i2c_detect => sub { lm95231_detect(@_, 0); },
        }, {
@@ -1003,6 +1008,11 @@
                i2c_addrs => [0x2b, 0x19, 0x2a],
                i2c_detect => sub { lm95231_detect(@_, 1); },
        }, {
+               name => "National Semiconductor LM95245",
+               driver => "lm95245",
+               i2c_addrs => [0x18, 0x19, 0x29, 0x4c, 0x4d],
+               i2c_detect => sub { lm95231_detect(@_, 2); },
+       }, {
                name => "National Semiconductor LM63",
                driver => "lm63",
                i2c_addrs => [0x4c],
@@ -1045,6 +1055,16 @@
                i2c_addrs => [0x4c..0x4d],
                i2c_detect => sub { lm90_detect(@_, 5); },
        }, {
+               name => "Analog Devices ADT7461A, ON Semiconductor NCT1008",
+               driver => "lm90",
+               i2c_addrs => [0x4c..0x4d],
+               i2c_detect => sub { lm90_detect(@_, 13); },
+       }, {
+               name => "NXP/Philips SA56004",
+               driver => "lm90",
+               i2c_addrs => [0x48..0x4f],
+               i2c_detect => sub { lm90_detect(@_, 14); },
+       }, {
                name => "Analog Devices ADT7481",
                driver => "to-be-written",
                i2c_addrs => [0x4c, 0x4b],
@@ -1339,11 +1359,6 @@
                driver => "jc42",
                i2c_addrs => [0x18..0x1f],
                i2c_detect => sub { jedec_JC42_4_detect(@_, 9); },
-       }, {
-               name => "Smart Battery",
-               driver => "sbs", # ACPI driver, not sure if it always works
-               i2c_addrs => [0x0b],
-               i2c_detect => sub { smartbatt_detect(@_); },
        }
 );
 
@@ -1351,12 +1366,12 @@
 @ipmi_ifs = (
        {
                name => "IPMI BMC KCS",
-               driver => "ipmisensors",
+               driver => "to-be-written",      # ipmisensors
                isa_addrs => [0x0ca0],
                isa_detect => sub { ipmi_detect(@_); },
        }, {
                name => "IPMI BMC SMIC",
-               driver => "ipmisensors",
+               driver => "to-be-written",      # ipmisensors
                isa_addrs => [0x0ca8],
                isa_detect => sub { ipmi_detect(@_); },
        }
@@ -1545,10 +1560,15 @@
                logdev => 0x14,
                features => FEAT_IN | FEAT_TEMP,
        }, {
-               # Shouldn't be in this family, but there it is
-               name => "ITE IT8512E/F Super IO",
-               driver => "not-a-sensor",
+               name => "ITE IT8512E/F/G Super IO",
+               driver => "to-be-written",
                devid => 0x8512,
+               features => FEAT_IN | FEAT_FAN,
+       }, {
+               name => "ITE IT8516E/F/G Super IO",
+               driver => "to-be-written",
+               devid => 0x8516,
+               features => FEAT_IN | FEAT_FAN,
        }
 );
 
@@ -1665,7 +1685,10 @@
                features => FEAT_FAN,
        }, {
                name => "SMSC LPC47M584-NC Super IO",
-               # No datasheet
+               # No datasheet (Dell-specific part). Not compatible with
+               # smsc47m1 nor dme1737 nor LPC47M233. No evidence that this
+               # chip can do any hardware monitoring at all.
+               driver => "not-a-sensor",
                devid => 0x76,
        }, {
                name => "SMSC LPC47N252 Super IO Fan Sensors",
@@ -1772,6 +1795,16 @@
                },
                logdev => 0x0c,
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
+       }, {
+               name => "SMSC SCH5636 Super IO",
+               driver => "sch5636",
+               devid => 0xc7,
+               regs => {
+                       basereg_lsb => 0x66,
+                       basereg_msb => 0x67,
+               },
+               logdev => 0x0c,
+               features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
        }
 );
 
@@ -1904,7 +1937,7 @@
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
        }, {
                name => "Nuvoton W83677HG-I (NCT6771F/NCT6772F/NCT6775F) Super 
IO Sensors",
-               driver => "to-be-written",      # Probably w83627ehf
+               driver => "w83627ehf",
                devid => 0xB470,
                devid_mask => 0xFFF0,
                logdev => 0x0b,
@@ -1921,7 +1954,7 @@
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
        }, {
                name => "Nuvoton NCT6776F Super IO Sensors",
-               driver => "to-be-written",
+               driver => "w83627ehf",
                devid => 0xC333,
                logdev => 0x0b,
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
@@ -1939,7 +1972,7 @@
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
        }, {
                name => "Fintek F71808A Super IO Sensors",
-               driver => "to-be-written",
+               driver => "f71882fg",
                devid => 0x1001,
                logdev => 0x04,
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
@@ -1957,7 +1990,7 @@
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
        }, {
                name => "Fintek F71869A Super IO Sensors",
-               driver => "to-be-written",
+               driver => "f71882fg",
                devid => 0x1007,
                logdev => 0x04,
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
@@ -1993,7 +2026,7 @@
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
        }, {
                name => "Fintek F71889A Super IO Sensors",
-               driver => "to-be-written",
+               driver => "f71882fg",
                devid => 0x1005,
                logdev => 0x04,
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
@@ -2007,7 +2040,7 @@
                devid => 0x0206,
        }, {
                name => "Fintek F81865F Super IO Sensors",
-               driver => "to-be-written",
+               driver => "f71882fg",
                devid => 0x0704,
                logdev => 0x04,
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
@@ -2087,10 +2120,16 @@
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
        }, {
                name => "ITE IT8728F Super IO Sensors",
-               driver => "it87",
+               driver => "to-be-written",      # it87
                devid => 0x8728,
                logdev => 0x04,
                features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
+       }, {
+               name => "ITE IT8772E Super IO Sensors",
+               driver => "to-be-written",      # it87
+               devid => 0x8772,
+               logdev => 0x04,
+               features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
        }
 );
 
@@ -2105,7 +2144,7 @@
 # first.
 @superio_ids = (
        {
-               family => "National Semiconductor",
+               family => "National Semiconductor/ITE",
                enter =>
                {
                        0x2e => [],
@@ -2169,7 +2208,7 @@
        }, {
                name => "AMD K8 thermal sensors",
                driver => "k8temp",
-               detect => \&k8temp_pci_detect,
+               detect => sub { amd_pci_detect('1103') },
        }, {
                name => "AMD Family 10h thermal sensors",
                driver => "k10temp",
@@ -2177,11 +2216,19 @@
        }, {
                name => "AMD Family 11h thermal sensors",
                driver => "k10temp",
-               detect => \&fam11h_pci_detect,
+               detect => sub { amd_pci_detect('1303') },
        }, {
                name => "AMD Family 12h and 14h thermal sensors",
                driver => "k10temp",
-               detect => \&fam12h_14h_pci_detect,
+               detect => sub { amd_pci_detect('1703') },
+       }, {
+               name => "AMD Family 15h thermal sensors",
+               driver => "k10temp",
+               detect => sub { amd_pci_detect('1603') },
+       }, {
+               name => "AMD Family 15h power sensors",
+               driver => "fam15h_power",
+               detect => sub { amd_pci_detect('1604') },
        }, {
                name => "Intel digital thermal sensor",
                driver => "coretemp",
@@ -2394,7 +2441,7 @@
        if (!$use_udev) {
                # Try some known default udev db locations, just in case
                if (-e '/dev/.udev.tdb' || -e '/dev/.udev'
-                || -e '/dev/.udevdb') {
+                || -e '/dev/.udevdb' || -e '/run/udev') {
                        $use_udev = 1;
                        $dev_i2c = '/dev/i2c-';
                }
@@ -4314,11 +4361,12 @@
 #                4 = MAX6654, 5 = ADT7461,
 #                6 = MAX6646/MAX6647/MAX6648/MAX6649/MAX6692,
 #                8 = W83L771W/G, 9 = TMP401, 10 = TMP411,
-#                11 = W83L771AWG/ASG, 12 = MAX6690
+#                11 = W83L771AWG/ASG, 12 = MAX6690,
+#                13 = ADT7461A/NCT1008, 14 = SA56004
 # Registers used:
 #   0x03: Configuration
 #   0x04: Conversion rate
-#   0xbf: Configuration 2 (National Semiconductor and Winbond only)
+#   0xbf: Configuration 2 (National Semiconductor, Winbond, and Philips only)
 #   0xfe: Manufacturer ID
 #   0xff: Chip ID / die revision
 sub lm90_detect
@@ -4413,6 +4461,19 @@
                return if $mid != 0x4d;         # Maxim
                return 8 if $cid == 0x09;       # MAX6690
        }
+       if ($chip == 13) {
+               return if ($conf & 0x1b) != 0;
+               return if $rate > 0x0a;
+               return if $mid != 0x41;         # Analog Devices
+               return 8 if $cid == 0x57;       # ADT7461A, NCT1008
+       }
+       if ($chip == 14) {
+               return if ($conf & 0x2a) != 0;
+               return if ($conf2 & 0xfe) != 0;
+               return if $rate > 0x09;
+               return if $mid != 0xa1;         # NXP Semiconductor/Philips
+               return 6 if $cid == 0x00;       # SA56004
+       }
        return;
 }
 
@@ -4484,12 +4545,14 @@
        return 5;
 }
 
-# Chip to detect: 0 = LM95231, 1 = LM95241
+# Chip to detect: 0 = LM95231, 1 = LM95241, 2 = LM95245
 # Registers used:
 #   0x02: Status (3 unused bits)
 #   0x03: Configuration (3 unused bits)
-#   0x06: Remote diode filter control (6 unused bits)
-#   0x30: Remote diode model type select (6 unused bits)
+#   0x06: Remote diode filter control (6 unused bits, LM95231 and LM95241)
+#   0x30: Remote diode model type select (6 unused bits, LM95231 and LM95241)
+#   0x30: Local Temperature LSB (5 unused bits, LM95245)
+#   0x33: Status register 2 (6 unused bits, LM95245)
 #   0xfe: Manufacturer ID
 #   0xff: Revision ID
 sub lm95231_detect
@@ -4499,13 +4562,21 @@
        my $cid = i2c_smbus_read_byte_data($file, 0xff);
 
        return if $mid != 0x01;                         # National Semiconductor
-       return if $chip == 0 && $cid != 0xa1;           # LM95231
-       return if $chip == 1 && $cid != 0xa4;           # LM95231
 
-       return if i2c_smbus_read_byte_data($file, 0x02) & 0x70;
-       return if i2c_smbus_read_byte_data($file, 0x03) & 0x89;
-       return if i2c_smbus_read_byte_data($file, 0x06) & 0xfa;
-       return if i2c_smbus_read_byte_data($file, 0x30) & 0xfa;
+       if ($chip == 0 || $chip == 1) {
+               return if $chip == 0 && $cid != 0xa1;   # LM95231
+               return if $chip == 1 && $cid != 0xa4;   # LM95241
+               return if i2c_smbus_read_byte_data($file, 0x02) & 0x70;
+               return if i2c_smbus_read_byte_data($file, 0x03) & 0x89;
+               return if i2c_smbus_read_byte_data($file, 0x06) & 0xfa;
+               return if i2c_smbus_read_byte_data($file, 0x30) & 0xfa;
+       } elsif ($chip == 2) {
+               return if $cid != 0xb3;                 # LM95245
+               return if i2c_smbus_read_byte_data($file, 0x02) & 0x68;
+               return if i2c_smbus_read_byte_data($file, 0x03) & 0xa1;
+               return if i2c_smbus_read_byte_data($file, 0x30) & 0x1f;
+               return if i2c_smbus_read_byte_data($file, 0x33) & 0x3f;
+       }
 
        return 6;
 }
@@ -4834,7 +4905,7 @@
 
 # Chip to detect: 0 = LM85, 1 = LM96000, 2 = ADM1027, 3 = ADT7463,
 #                4 = EMC6D100/101, 5 = EMC6D102, 6 = EMC6D103,
-#                7 = WPCD377I (no sensors), 8 = EMC6D103S
+#                7 = WPCD377I (no sensors), 8 = EMC6D103S/EMC2300
 # Registers used:
 #   0x3e: Vendor register
 #   0x3d: Device ID register (Analog Devices only)
@@ -4873,7 +4944,7 @@
                       && $verstep != 0x69;     # EMC6D103 A1
        } elsif ($chip == 8) {
                return if $vendor != 0x5c;      # SMSC
-               return if $verstep != 0x6a;     # EMC6D103S
+               return if $verstep != 0x6a;     # EMC6D103S/EMC2300
        }
 
        if ($vendor == 0x41) {                  # Analog Devices
@@ -4903,6 +4974,29 @@
        return 7;
 }
 
+# Registers used:
+#   0x3e: Vendor register
+#   0x3f: Version/Stepping register
+#   0x40: Configuration register (reserved bits + ready)
+sub emc6w201_detect
+{
+       my ($file, $addr) = @_;
+       my $vendor = i2c_smbus_read_byte_data($file, 0x3e);
+       my $verstep = i2c_smbus_read_byte_data($file, 0x3f);
+       my $conf = i2c_smbus_read_byte_data($file, 0x40);
+       my $stepping;
+
+       return if $vendor != 0x5c;              # SMSC
+       return if ($verstep & 0xf0) != 0xb0;    # EMC6W201
+       return if ($conf & 0xf4) != 0x04;
+
+       $stepping = $verstep & 0x0f;
+       return if $stepping > 3;
+
+       # So far we've only seen stepping 1 chips
+       return $stepping <= 1 ? 6 : 3;
+}
+
 # Chip to detect: 0 = LM87, 1 = ADM1024
 # Registers used:
 #   0x3e: Company ID
@@ -5677,19 +5771,6 @@
        return 6;
 }
 
-# This checks for non-FFFF values for temperature, voltage, and current.
-# The address (0x0b) is specified by the SMBus standard so it's likely
-# that this really is a smart battery.
-sub smartbatt_detect
-{
-       my ($file, $addr) = @_;
-
-       return if i2c_smbus_read_word_data($file, 0x08) == 0xffff
-              || i2c_smbus_read_word_data($file, 0x09) == 0xffff
-              || i2c_smbus_read_word_data($file, 0x0a) == 0xffff;
-       return 5;
-}
-
 # Chip to detect: 0 = W83L784R/AR/G, 1 = W83L785R/G, 2 = W83L786NR/NG/R/G,
 #                3 = W83L785TS-S
 # Registers used:
@@ -5746,32 +5827,38 @@
        return 6;
 }
 
-# The max6650 has no device ID register. However, a few registers have
-# spare bits, which are documented as being always zero on read. We read
-# all of these registers check the spare bits. Any non-zero means this
-# is not a max6650/1.
-#
-# The always zero bits are:
-#   configuration byte register (0x02) - top 2 bits
-#   gpio status register (0x14) - top 3 bits
-#   alarm enable register (0x08) - top 3 bits
-#   alarm status register (0x0A) - top 3 bits
-#   tachometer count time register (0x16) - top 6 bits
-# Additionally, not all values are possible for lower 3 bits of
-# the configuration register.
-sub max6650_detect
+# Chip to detect: MAX6642
+# Registers used:
+#   0x02: Status register
+#   0x03: Configuration register
+#   0xfe: Manufacturer ID
+#   0x04, 0x06, 0xff: No registers
+# We use the 0x04, 0x06 and 0xff addresses (unused) to improve reliability.
+# These are not real registers and will always return the last returned value.
+# This isn't documented.
+sub max6642_detect
 {
        my ($file, $addr) = @_;
+       my ($man_id, $conf, $status);
 
-       my $conf = i2c_smbus_read_byte_data($file, 0x02);
-
-       return if i2c_smbus_read_byte_data($file, 0x16) & 0xFC;
-       return if i2c_smbus_read_byte_data($file, 0x0A) & 0xE0;
-       return if i2c_smbus_read_byte_data($file, 0x08) & 0xE0;
-       return if i2c_smbus_read_byte_data($file, 0x14) & 0xE0;
-       return if ($conf & 0xC0) or ($conf & 0x07) > 4;
+       $man_id = i2c_smbus_read_byte_data($file, 0xfe);
+       return unless $man_id == 0x4d;  # Maxim
+       return if i2c_smbus_read_byte_data($file, 0x04, NO_CACHE) != $man_id;
+       return if i2c_smbus_read_byte_data($file, 0x06, NO_CACHE) != $man_id;
+       return if i2c_smbus_read_byte_data($file, 0xff, NO_CACHE) != $man_id;
+
+       $status = i2c_smbus_read_byte_data($file, 0x02);
+       # Bit 5, 3, 1 and 0 should be zero
+       return unless ($status & 0x2b) == 0x00;
+       return if i2c_smbus_read_byte_data($file, 0x04, NO_CACHE) != $status;
+       return if i2c_smbus_read_byte_data($file, 0x06, NO_CACHE) != $status;
+       return if i2c_smbus_read_byte_data($file, 0xff, NO_CACHE) != $status;
+
+       $conf = i2c_smbus_read_byte_data($file, 0x03);
+       # The 4 lower bits should be zero
+       return unless ($conf & 0x0f) == 0x00;
 
-       return 2;
+       return 5;
 }
 
 sub max6655_detect
@@ -5985,6 +6072,7 @@
 sub ipmi_from_smbios
 {
        my ($version, $if, @ipmi_if);
+       my $ipmi_driver = "to-be-written";      # ipmisensors
 
        return 0 unless check_dmidecode_version();
 
@@ -6020,13 +6108,13 @@
                                                 $if->{type}));
                }
                print "Success!\n".
-                     "    (confidence 8, driver `ipmisensors')\n";
+                     "    (confidence 8, driver `$ipmi_driver')\n";
                my $new_hash = {
                        conf => 8,
                        isa_addr => $if->{addr} || 0,
                        chipname => $if->{type},
                };
-               add_isa_to_chips_detected("ipmisensors", $new_hash);
+               add_isa_to_chips_detected($ipmi_driver, $new_hash);
        }
 
        return scalar @ipmi_if;
@@ -6091,9 +6179,10 @@
        return 9;
 }
 
-sub k8temp_pci_detect
+sub amd_pci_detect
 {
-       return unless exists $pci_list{'1022:1103'};
+       my $f3_id = shift;
+       return unless exists $pci_list{"1022:$f3_id"};
        return 9;
 }
 
@@ -6123,18 +6212,6 @@
        return;
 }
 
-sub fam11h_pci_detect
-{
-       return unless exists $pci_list{'1022:1303'};
-       return 9;
-}
-
-sub fam12h_14h_pci_detect
-{
-       return unless exists $pci_list{'1022:1703'};
-       return 9;
-}
-
 sub intel_amb_detect
 {
        if ((exists $pci_list{'8086:25f0'}) ||  # Intel 5000
@@ -6442,6 +6519,22 @@
                }
                close(SYSCONFIG);
 
+               if (-x "/bin/systemctl" && -d "/lib/systemd/system" &&
+                   ! -f "/lib/systemd/system/lm_sensors.service") {
+                       print "Copy prog/init/lm_sensors.service to 
/lib/systemd/system\n".
+                             "and run 'systemctl enable lm_sensors.service'\n".
+                             "for initialization at boot time.\n";
+                       return;
+               }
+
+               if (-x "/bin/systemctl" &&
+                   -f "/lib/systemd/system/lm_sensors.service") {
+                       system("/bin/systemctl", "enable", 
"lm_sensors.service");
+                       system("/bin/systemctl", "start", "lm_sensors.service");
+                       # All done, don't check for /etc/init.d/lm_sensors
+                       return;
+               }
+
                print "Copy prog/init/lm_sensors.init to 
/etc/init.d/lm_sensors\n".
                      "for initialization at boot time.\n"
                        unless -f "/etc/init.d/lm_sensors";
@@ -6497,8 +6590,10 @@
                exit -1;
        }
 
-       if (-x "/sbin/service" && -f "/etc/init.d/lm_sensors" &&
-           -f "/var/lock/subsys/lm_sensors") {
+       if (-x "/bin/systemctl" && -f "/lib/systemd/system/lm_sensors.service") 
{
+               system("/bin/systemctl", "stop", "lm_sensors.service");
+       } elsif (-x "/sbin/service" && -f "/etc/init.d/lm_sensors" &&
+                -f "/var/lock/subsys/lm_sensors") {
                system("/sbin/service", "lm_sensors", "stop");
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/prog/dump/isadump.8 
new/lm_sensors-3.3.1/prog/dump/isadump.8
--- old/lm_sensors-3.3.0/prog/dump/isadump.8    2007-06-26 08:24:23.000000000 
+0200
+++ new/lm_sensors-3.3.1/prog/dump/isadump.8    2011-04-15 10:26:49.000000000 
+0200
@@ -1,10 +1,11 @@
-.TH ISADUMP 8 "August 2004"
+.TH ISADUMP 8 "April 2011"
 .SH NAME
 isadump \- examine ISA registers
 
 .SH SYNOPSIS
 .B isadump
 .RB [ -y ]
+.RB [ -W | -L ]
 .RB [ "-k V1,V2..." ]
 .I addrreg
 .I datareg
@@ -12,8 +13,10 @@
 #for I2C-like access
 .br
 .B isadump
+.B -f
 .RB [ -y ]
-.BI "-f " address
+.RB [ -W | -L ]
+.I address
 .RI [ "range " [ "bank " [ bankreg ]]]
 #for flat address space
 
@@ -39,6 +42,12 @@
 the chip configuration mode. Most Super-I/O chips need this.
 Known key sequences are: 0x87,0x01,0x55,0x55 for ITE, 0x55 for SMSC, 0x87,0x87
 for Winbond and VIA, none needed for National Semiconductor.
+.TP
+.B -W
+Perform 16-bit reads.
+.TP
+.B -L
+Perform 32-bit reads.
 
 .SH OPTIONS (I2C-like access mode)
 At least two options must be provided to isadump. \fIaddrreg\fR contains the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/prog/dump/isadump.c 
new/lm_sensors-3.3.1/prog/dump/isadump.c
--- old/lm_sensors-3.3.0/prog/dump/isadump.c    2009-04-19 09:16:40.000000000 
+0200
+++ new/lm_sensors-3.3.1/prog/dump/isadump.c    2011-04-15 10:26:49.000000000 
+0200
@@ -2,7 +2,7 @@
     isadump.c - isadump, a user-space program to dump ISA registers
     Copyright (C) 2000  Frodo Looijaard <fro...@dds.nl>, and
                         Mark D. Studebaker <mdsxyz...@yahoo.com>
-    Copyright (C) 2004,2007  Jean Delvare <kh...@linux-fr.org>
+    Copyright (C) 2004-2011  Jean Delvare <kh...@linux-fr.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -52,9 +52,15 @@
 {
        fprintf(stderr,
                "Syntax for I2C-like access:\n"
-               "  isadump [-y] [-k V1,V2...] ADDRREG DATAREG [BANK 
[BANKREG]]\n"
+               "  isadump [OPTIONS] [-k V1,V2...] ADDRREG DATAREG [BANK 
[BANKREG]]\n"
                "Syntax for flat address space:\n"
-               "  isadump [-y] -f ADDRESS [RANGE [BANK [BANKREG]]]\n");
+               "  isadump -f [OPTIONS] ADDRESS [RANGE [BANK [BANKREG]]]\n"
+               "Options:\n"
+               "  -k   Super-I/O configuration access key\n"
+               "  -f   Enable flat address space mode\n"
+               "  -y   Assume affirmative answer to all questions\n"
+               "  -W   Read and display word (16-bit) values\n"
+               "  -L   Read and display long (32-bit) values\n");
 }
 
 static int default_bankreg(int flat, int addrreg, int datareg)
@@ -96,9 +102,10 @@
        int bank = -1;      /* -1 means no bank operation */
        int bankreg;
        int oldbank = 0;
-       int i, j, res;
+       int i, j;
+       unsigned long res;
        int flags = 0;
-       int flat = 0, yes = 0;
+       int flat = 0, yes = 0, width = 1;
        char *end;
        unsigned char enter_key[SUPERIO_MAX_KEY+1];
 
@@ -118,6 +125,8 @@
                        }
                        flags++;
                        break;
+               case 'W': width = 2; break;
+               case 'L': width = 4; break;
                default:
                        fprintf(stderr, "Warning: Unsupported flag "
                                "\"-%c\"!\n", argv[1+flags][1]);
@@ -270,9 +279,12 @@
        if (bank >= 0)
                oldbank = set_bank(flat, addrreg, datareg, bank, bankreg);
 
-       if (flat)
-               printf("  ");
-       printf("     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f\n");
+       /* print column headers */
+       printf("%*s", flat ? 5 : 3, "");
+       for (j = 0; j < 16; j += width)
+               printf(" %*x", width * 2, j);
+       printf("\n");
+
        for (i = 0; i < range; i += 16) {
                if (flat)
                        printf("%04x: ", addrreg + i);
@@ -288,19 +300,19 @@
                if (enter_key[0])
                        superio_write_key(addrreg, enter_key);
 
-               for (j = 0; j < 16; j++) {
+               for (j = 0; j < 16; j += width) {
                        fflush(stdout);
                        if (flat) {
-                               res = inb(addrreg + i + j);
+                               res = inx(addrreg + i + j, width);
                        } else {        
                                outb(i+j, addrreg);
                                if (i+j == 0 && inb(addrreg) == 0x80) {
                                        /* Bit 7 appears to be a busy flag */
                                        range = 128;
                                }
-                               res = inb(datareg);
+                               res = inx(datareg, width);
                        }
-                       printf("%02x ", res);
+                       printf("%0*lx ", width * 2, res);
                }
                printf("\n");
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/prog/dump/isaset.8 
new/lm_sensors-3.3.1/prog/dump/isaset.8
--- old/lm_sensors-3.3.0/prog/dump/isaset.8     2007-06-26 08:24:23.000000000 
+0200
+++ new/lm_sensors-3.3.1/prog/dump/isaset.8     2011-04-15 10:27:30.000000000 
+0200
@@ -1,10 +1,11 @@
-.TH ISASET 8 "May 2005"
+.TH ISASET 8 "April 2011"
 .SH "NAME"
 isaset \- set ISA registers
 
 .SH SYNOPSIS
 .B isaset
 .RB [ -y ]
+.RB [ -W | -L ]
 .I addrreg
 .I datareg
 .I address
@@ -13,8 +14,10 @@
 #for I2C-like access
 .br
 .B isaset
+.B -f
 .RB [ -y ]
-.BI "-f " address
+.RB [ -W | -L ]
+.I address
 .I value
 .RI [ mask ]
 #for flat address space
@@ -33,6 +36,12 @@
 from the user before messing with the ISA bus. When this flag is used, it
 will perform the operation directly. This is mainly meant to be used in
 scripts.
+.TP
+.B -W
+Perform a 16-bit write.
+.TP
+.B -L
+Perform a 32-bit write.
 
 .SH OPTIONS (I2C-like access mode)
 Four options must be provided to isaset. \fIaddrreg\fR contains the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/prog/dump/isaset.c 
new/lm_sensors-3.3.1/prog/dump/isaset.c
--- old/lm_sensors-3.3.0/prog/dump/isaset.c     2009-04-19 09:16:40.000000000 
+0200
+++ new/lm_sensors-3.3.1/prog/dump/isaset.c     2011-04-15 10:27:30.000000000 
+0200
@@ -2,7 +2,7 @@
     isaset.c - isaset, a user-space program to write ISA registers
     Copyright (C) 2000  Frodo Looijaard <fro...@dds.nl>, and
                         Mark D. Studebaker <mdsxyz...@yahoo.com>
-    Copyright (C) 2004,2007  Jean Delvare <kh...@linux-fr.org>
+    Copyright (C) 2004-2011  Jean Delvare <kh...@linux-fr.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -48,17 +48,22 @@
 {
        fprintf(stderr,
                "Syntax for I2C-like access:\n"
-               "  isaset [-y] ADDRREG DATAREG ADDRESS VALUE [MASK]\n"
+               "  isaset [OPTIONS] ADDRREG DATAREG ADDRESS VALUE [MASK]\n"
                "Syntax for flat address space:\n"
-               "  isaset [-y] -f ADDRESS VALUE [MASK]\n");
+               "  isaset -f [OPTIONS] ADDRESS VALUE [MASK]\n"
+               "Options:\n"
+               "  -f   Enable flat address space mode\n"
+               "  -y   Assume affirmative answer to all questions\n"
+               "  -W   Write a word (16-bit) value\n"
+               "  -L   Write a long (32-bit) value\n");
 }
 
 int main(int argc, char *argv[])
 {
-       int addrreg, datareg = 0, value, addr = 0, vmask = 0;
-       unsigned char res;
+       int addrreg, datareg = 0, addr = 0;
+       unsigned long value, vmask = 0, maxval = 0xff, res;
        int flags = 0;
-       int flat = 0, yes = 0;
+       int flat = 0, yes = 0, width = 1;
        char *end;
 
        /* handle (optional) flags first */
@@ -66,6 +71,8 @@
                switch (argv[1+flags][1]) {
                case 'f': flat = 1; break;
                case 'y': yes = 1; break;
+               case 'W': width = 2; maxval = 0xffff; break;
+               case 'L': width = 4; maxval = 0xffffffff; break;
                default:
                        fprintf(stderr, "Warning: Unsupported flag "
                                "\"-%c\"!\n", argv[1+flags][1]);
@@ -128,29 +135,30 @@
        if (!flat)
                flags += 2;
 
-       value = strtol(argv[flags+2], &end, 0);
+       value = strtoul(argv[flags+2], &end, 0);
        if (*end) {
                fprintf(stderr, "Error: Invalid value!\n");
                help();
                exit(1);
        }
-       if (value < 0 || value > 0xff) {
+       if (value > maxval) {
                fprintf(stderr, "Error: Value out of range "
-                       "(0x00-0xff)!\n");
+                       "(0x%0*u-%0*lu)!\n", width * 2, 0, width * 2, maxval);
                help();
                exit(1);
        }
 
        if (flags+3 < argc) {
-               vmask = strtol(argv[flags+3], &end, 0);
+               vmask = strtoul(argv[flags+3], &end, 0);
                if (*end) {
                        fprintf(stderr, "Error: Invalid mask!\n");
                        help();
                        exit(1);
                }
-               if (vmask < 0 || vmask > 0xff) {
+               if (vmask > maxval) {
                        fprintf(stderr, "Error: Mask out of range "
-                               "(0x00-0xff)!\n");
+                               "(0x%0*u-%0*lu)!\n", width * 2, 0,
+                               width * 2, maxval);
                        help();
                        exit(1);
                }
@@ -167,13 +175,15 @@
                        "system crashes, data loss and worse!\n");
 
                if (flat)
-                       fprintf(stderr, "I will write value 0x%02x%s to address 
"
-                               "0x%x.\n", value, vmask ? " (masked)" : "",
-                               addrreg);
+                       fprintf(stderr,
+                               "I will write value 0x%0*lx%s to address "
+                               "0x%x.\n", width * 2, value,
+                               vmask ? " (masked)" : "", addrreg);
                else
-                       fprintf(stderr, "I will write value 0x%02x%s to address 
"
+                       fprintf(stderr,
+                               "I will write value 0x%0*lx%s to address "
                                "0x%02x of chip with address register 0x%x\n"
-                               "and data register 0x%x.\n",
+                               "and data register 0x%x.\n", width * 2,
                                value, vmask ? " (masked)" : "", addr,
                                addrreg, datareg);
 
@@ -206,26 +216,22 @@
 #endif
 
        if (vmask) {
-               int oldvalue;
+               unsigned long oldvalue;
 
                if (flat) {
-                       oldvalue = inb(addrreg);
+                       oldvalue = inx(addrreg, width);
                } else {        
                        outb(addr, addrreg);
-                       oldvalue = inb(datareg);
-               }
-
-               if (oldvalue < 0) {
-                       fprintf(stderr, "Error: Failed to read old value\n");
-                       exit(1);
+                       oldvalue = inx(datareg, width);
                }
 
                value = (value & vmask) | (oldvalue & ~vmask);
 
                if (!yes) {
-                       fprintf(stderr, "Old value 0x%02x, write mask "
-                               "0x%02x: Will write 0x%02x to %s "
-                               "0x%02x\n", oldvalue, vmask, value,
+                       fprintf(stderr, "Old value 0x%0*lx, write mask "
+                               "0x%0*lx: Will write 0x%0*lx to %s "
+                               "0x%02x\n", width * 2, oldvalue,
+                               width * 2, vmask, width * 2, value,
                                flat ? "address" : "register",
                                flat ? addrreg : addr);
 
@@ -241,20 +247,21 @@
        /* do the real thing */
        if (flat) {
                /* write */
-               outb(value, addrreg);
+               outx(value, addrreg, width);
                /* readback */
-               res = inb(addrreg);
+               res = inx(addrreg, width);
        } else {        
                /* write */
                outb(addr, addrreg);
-               outb(value, datareg);
+               outx(value, datareg, width);
                /* readback */
-               res = inb(datareg);
+               res = inx(datareg, width);
        }
 
        if (res != value) {
-               fprintf(stderr, "Data mismatch, wrote 0x%02x, "
-                       "read 0x%02x back.\n", value, res);
+               fprintf(stderr, "Data mismatch, wrote 0x%0*lx, "
+                       "read 0x%0*lx back.\n", width * 2, value,
+                       width * 2, res);
        }
 
        exit(0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/prog/dump/util.c 
new/lm_sensors-3.3.1/prog/dump/util.c
--- old/lm_sensors-3.3.0/prog/dump/util.c       2007-08-15 10:23:38.000000000 
+0200
+++ new/lm_sensors-3.3.1/prog/dump/util.c       2011-04-15 10:27:30.000000000 
+0200
@@ -11,6 +11,13 @@
 #include <stdio.h>
 #include "util.h"
 
+/* To keep glibc2 happy */
+#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 0
+#include <sys/io.h>
+#else
+#include <asm/io.h>
+#endif
+
 /* Return 1 if we should continue, 0 if we should abort */
 int user_ack(int def)
 {
@@ -46,3 +53,32 @@
        return ret;
 }
 
+/* I/O read of specified size */
+unsigned long inx(int addr, int width)
+{
+       switch (width) {
+       case 2:
+               return inw(addr);
+               break;
+       case 4:
+               return inl(addr);
+               break;
+       default:
+               return inb(addr);
+       }
+}
+
+/* I/O write of specified size */
+void outx(unsigned long value, int addr, int width)
+{
+       switch (width) {
+       case 2:
+               outw(value, addr);
+               break;
+       case 4:
+               outl(value, addr);
+               break;
+       default:
+               outb(value, addr);
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/prog/dump/util.h 
new/lm_sensors-3.3.1/prog/dump/util.h
--- old/lm_sensors-3.3.0/prog/dump/util.h       2007-08-15 10:23:38.000000000 
+0200
+++ new/lm_sensors-3.3.1/prog/dump/util.h       2011-04-15 10:27:30.000000000 
+0200
@@ -12,5 +12,7 @@
 #define _UTIL_H
 
 extern int user_ack(int def);
+extern unsigned long inx(int addr, int width);
+extern void outx(unsigned long value, int addr, int width);
 
 #endif /* _UTIL_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/prog/hotplug/README.p4b 
new/lm_sensors-3.3.1/prog/hotplug/README.p4b
--- old/lm_sensors-3.3.0/prog/hotplug/README.p4b        2007-05-13 
10:22:47.000000000 +0200
+++ new/lm_sensors-3.3.1/prog/hotplug/README.p4b        2011-07-21 
21:38:10.000000000 +0200
@@ -3,7 +3,7 @@
 
 It unhides the SMBus of Intel ICH southbridges hidden on Asus P4B series
 and some other Asus and non-Asus systems. It is implemented as a shell
-script for the 2.6 kernel: unhide_ICH_SMBus.
+script for kernel 2.6.5 and later: unhide_ICH_SMBus.
 
 It works with the following chips:
  * ICH2   (82801BA)
@@ -19,9 +19,8 @@
 irritated by just another PCI Device in the Win98 device manager."
 Really funny :-).
 
-For 2.6 kernels, activation is normally handled by the code in
-drivers/pci/quirks.c in the kernel source. If you have the 2.6 kernel and
-the quirks code does not activate your SMBus, you may:
+Activation is normally handled by the code in drivers/pci/quirks.c in the
+kernel source. If the quirks code does not activate your SMBus, you may:
 
  * first of all, read the paragraph "Hidden ICH SMBus" in
    Documentation/i2c/busses/i2c-i801 in the kernel source.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/prog/hotplug/unhide_ICH_SMBus 
new/lm_sensors-3.3.1/prog/hotplug/unhide_ICH_SMBus
--- old/lm_sensors-3.3.0/prog/hotplug/unhide_ICH_SMBus  2007-12-19 
14:27:40.000000000 +0100
+++ new/lm_sensors-3.3.1/prog/hotplug/unhide_ICH_SMBus  2011-07-21 
21:38:10.000000000 +0200
@@ -43,7 +43,7 @@
 modprobe fakephp &> /dev/null
 
 if [ ! -d "$pcibus" ] ; then
-       echo "You need the fake PCI hotplug driver! (fakephp.ko and 2.6 kernel)"
+       echo "You need the fake PCI hotplug driver! (fakephp.ko, kernel 2.6.5 
or later)"
        exit 255;
 fi
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/prog/init/lm_sensors.service 
new/lm_sensors-3.3.1/prog/init/lm_sensors.service
--- old/lm_sensors-3.3.0/prog/init/lm_sensors.service   1970-01-01 
01:00:00.000000000 +0100
+++ new/lm_sensors-3.3.1/prog/init/lm_sensors.service   2011-04-27 
19:35:18.000000000 +0200
@@ -0,0 +1,14 @@
+[Unit]
+Description=Initialize hardware monitoring sensors
+After=syslog.target
+
+[Service]
+EnvironmentFile=/etc/sysconfig/lm_sensors
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=-/sbin/modprobe -qab $BUS_MODULES $HWMON_MODULES
+ExecStart=/usr/bin/sensors -s
+ExecStop=-/sbin/modprobe -qabr $BUS_MODULES $HWMON_MODULES
+
+[Install]
+WantedBy=multi-user.target
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lm_sensors-3.3.0/version.h 
new/lm_sensors-3.3.1/version.h
--- old/lm_sensors-3.3.0/version.h      2011-03-28 09:02:37.000000000 +0200
+++ new/lm_sensors-3.3.1/version.h      2011-07-21 22:36:42.000000000 +0200
@@ -1 +1 @@
-#define LM_VERSION "3.3.0"
+#define LM_VERSION "3.3.1"

++++++ lm_sensors-r5991-improve-filtering-of-fake-DMI-data.patch ++++++
---
 prog/detect/sensors-detect |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

--- lm_sensors-3.3.1.orig/prog/detect/sensors-detect
+++ lm_sensors-3.3.1/prog/detect/sensors-detect
@@ -2767,8 +2767,9 @@ sub initialize_dmi_data
        );
        # Many BIOS have broken DMI data, filter it out
        my %fake = (
-               'System Manufacturer' => 1,
-               'System Name' => 1,
+               'system manufacturer' => 1,
+               'system product name' => 1,
+               'system name' => 1,
        );
        my $dmi_id_dir;
 
@@ -2797,7 +2798,7 @@ sub initialize_dmi_data
                        next;
                }
                $dmi{$k} =~ s/\s*$//;
-               delete $dmi{$k} if $dmi{$k} eq '' || exists $fake{$dmi{$k}};
+               delete $dmi{$k} if $dmi{$k} eq '' || exists $fake{lc($dmi{$k})};
        }
 }
 
++++++ lm_sensors-r5992-print-DMI-product-version.patch ++++++
---
 prog/detect/sensors-detect |    2 ++
 1 file changed, 2 insertions(+)

--- lm_sensors-3.3.1.orig/prog/detect/sensors-detect
+++ lm_sensors-3.3.1/prog/detect/sensors-detect
@@ -2770,6 +2770,7 @@ sub initialize_dmi_data
                'system manufacturer' => 1,
                'system product name' => 1,
                'system name' => 1,
+               'system version' => 1,
        );
        my $dmi_id_dir;
 
@@ -2814,6 +2815,7 @@ sub print_dmi_summary
        
        if (defined $system) {
                print "# System: $system";
+               print " [$dmi{product_version}]" if defined 
$dmi{product_version};
                print " (laptop)" if (is_laptop());
                print "\n";
        }

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



Remember to have fun...

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to