[-]
[+]
|
Changed |
sensors.spec
|
|
|
Deleted |
lm_sensors-3.3.2.tar.bz2
^
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/CHANGES
^
|
@@ -1,6 +1,48 @@
lm-sensors CHANGES file
-----------------------
+3.3.3 "Happy Birthday Sophie" (2012-11-06)
+ documentation: Update fan-divisors, fan divisors are optional
+ libsensors: Fix warning about library path not in /etc/ld.so.conf
+ sensors: Fix libiconv linkage need detection in rare corner case
+ Add support for humidity output
+ Add long switches to manual page
+ sensors-detect: Don't choke on systems without PCI
+ Avoid probing EDID addresses on graphics cards (#2386)
+ Add detection of NCT6779D and NCT6102D/NCT6106D
+ Add detection of SMSC LPC47N217 and SIO10N268
+ Do not scan I2C adapters on graphics cards by default
+ Fix parent class discovery when multiplexer is present
+
+3.3.2 (2012-03-14)
+ libsensors: Added support for new sysfs attributes
+ Change sysfs detection to survive upcoming kernel changes
+ sensord: Fix memory leaks revealed by valgrind
+ Minor performance improvements
+ sensors: Added support for new sysfs attributes
+ Display both instantaneous and average power if available.
+ Report thermal sensor type 1 as CPU diode
+ Align power values better
+ Fix power interval output
+ fancontrol: Support setup where one PWM output controls several fans
+ Output error messages to stderr
+ sensors-detect: Stop calling for PIIX5 SMBus testers
+ Improve filtering of fake DMI data
+ Print DMI system/product version if available
+ Fix loading of the cpuid module
+ Make LM73 detection less problematic
+ Add detection of National Semiconductor LM96163
+ Add detection of GMT G781
+ Properly handle Super-I/O chips without logical device
+ Add detection of National Semiconductor LM96080
+ Add detection of ITE IT8771E
+ Add detection of ITE IT8781F, IT8782F and IT8783F
+ Add detection of ITE IT8510E/TE/G, IT8511E/TE/G,
+ IT8513E/F/G, and IT8518E
+ Add detection of ST Microelectronics STTS2002 and STTS3000
+ Add detection of IDT TSE2002GB2, TS3000GB2, Microchip MCP9804,
+ and Atmel AT30TS00
+
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
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/doc/developers/lm_sensors.lsm
^
|
@@ -1,7 +1,7 @@
Begin4
Title: lm_sensors
-Version: 3.3.1
-Entered-date: 2011-07-21
+Version: 3.3.3
+Entered-date: 2012-11-06
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: khali@linux-fr.org (Jean Delvare)
Maintained-by: khali@linux-fr.org (Jean Delvare)
Primary-site: http://dl.lm-sensors.org /lm-sensors/releases/
- lm_sensors-3.3.1.tar.bz2
- lm_sensors-3.3.1.tar.bz2.sig
+ lm_sensors-3.3.3.tar.bz2
+ lm_sensors-3.3.3.tar.bz2.sig
Alternate-site: ftp.netroedge.com /pub/lm-sensors/
Copying-policy: GPL/LGPL
End
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/doc/developers/release_checklist
^
|
@@ -7,16 +7,13 @@
(edit lib/Module.mk and change LIBMAINVER and/or LIBMINORVER)
Remember: update main number when interface changes, minor if new
functionality is added, and patch if only bugs are fixed.
- `svn diff -r Vx-y-z lib' is your friend.
- Update the CHANGES file (set version and release date)
-- Update lm_sensors.lsm (Version, Entered-date and Primary-site)
-- Update libsensors-API.txt and SENSORS_API_VERSION in lib/sensors.h
+- Update doc/developers/lm_sensors.lsm (Version, Entered-date and Primary-site)
+- Update doc/libsensors-API.txt and SENSORS_API_VERSION in lib/sensors.h
- Update version.h
- Commit
- Tag the release using SVN:
- svn copy http://lm-sensors.org/svn/lm-sensors/trunk \
- http://lm-sensors.org/svn/lm-sensors/tags/V3-x-x \
- -m "3.x.x release"
+ svn copy http://lm-sensors.org/svn/lm-sensors/trunk http://lm-sensors.org/svn/lm-sensors/tags/V3-x-x -m "3.x.x release"
- Move to a temporary directory and get a copy of the freshly tagged code:
svn export http://lm-sensors.org/svn/lm-sensors/tags/V3-x-x lm_sensors-3.x.x
@@ -25,23 +22,21 @@
- Sign it:
gpg -b lm_sensors-3.x.x.tar.bz2
- Post it:
- scp lm_sensors-3.x.x.tar.bz2{,.sig} \
- devel.atrpms.net:/srv/lm-sensors.org/dl/lm-sensors/releases
+ scp lm_sensors-3.x.x.tar.bz2{,.sig} devel.atrpms.net:/srv/lm-sensors.org/dl/lm-sensors/releases
- Set correct permissions:
- ssh devel.atrpms.net chmod 664 \
- '/srv/lm-sensors.org/dl/lm-sensors/releases/lm_sensors-3.x.x.tar.bz2{,.sig}'
+ ssh devel.atrpms.net chmod 664 '/srv/lm-sensors.org/dl/lm-sensors/releases/lm_sensors-3.x.x.tar.bz2{,.sig}'
After release, remember to:
- Copy to mirrors
- Update the Download page on lm-sensors.org, then add a news item
- Announce on the lm-sensors mailing list
-- Announce on Freshmeat
+- Announce on Freecode
- Add "+SVN" to version.h and commit
- Mark the corresponding release milestone as complete using trac-admin
- e.g. 'trac-admin /srv/lm-sensors.org/trac milestone completed 3.0.0 now'
+ e.g. 'trac-admin /srv/lm-sensors.org/trac milestone completed 3.x.x now'
- Create a new version for the bug tracking system using trac-admin
- e.g. 'trac-admin /srv/lm-sensors.org/trac version add 3.0.0 now'
+ e.g. 'trac-admin /srv/lm-sensors.org/trac version add 3.x.x now'
- Create a new release milestone using trac-admin
- e.g. 'trac-admin /srv/lm-sensors.org/trac milestone add 3.0.1 2008-02-15'
+ e.g. 'trac-admin /srv/lm-sensors.org/trac milestone add 3.x.x+1 2012-05-10'
- Send lm_sensors.lsm to the LSM by mailing it to lsm@qqx.org with the
subject `add' (no quotes)
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/doc/donations
^
|
@@ -96,6 +96,10 @@
ASUSTeK ASUS P5MT-S 2006-03
Platform for W83792D related development Rudolf Marek
+Winbond Asus P4P800-VM 2006-08
+ This board has a Winbond W83627THF hardware Jean Delvare
+ monitoring chip.
+
Winbond Asus P4P800-X, Pentium 4 2.8 GHz, 512 MB RAM 2006-08
This board has an (hidden) Intel 82801EB Jean Delvare
(ICH5) SMBus with SPD EEPROMs connected, and
@@ -124,3 +128,6 @@
and power supply. Guenter Roeck
Used to add support for NCT6775F (W83677HG-I)
to w83627ehf driver.
+
+AMD Asus EAH6450 Silent video card 2011-12
+ Jean Delvare
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/doc/fan-divisors
^
|
@@ -9,7 +9,39 @@
Look and see. Fans with tachometer outputs have at least 3 wires.
Fans with only 2 wires cannot, in general, report their speed.
-- Try experimenting with the fan divisor settings:
+- If your monitoring chip supports fan divisors, try experimenting
+ with the fan divisor settings.
+
+
+Does my monitoring chip use fan divisors?
+-----------------------------------------
+
+ Recent monitoring chips tend to store fan speed values on 12 or even
+ 16 bits, so divisors are no longer required. In that case, you won't
+ see "div" values in the output of sensors, and nothing needs to be
+ configured:
+
+ CPU1 Fan: 2160 RPM (min = 800 RPM)
+ CPU2 Fan: 0 RPM (min = 799 RPM) ALARM
+ Front3 Fan: 0 RPM (min = 0 RPM)
+ Front4 Fan: 779 RPM (min = 600 RPM)
+
+ If your "sensors" output looks like the above, stop reading here,
+ the explanations below do not apply to your case.
+
+ Older chips stored the fan speed values on 8 bits, which wasn't
+ sufficient to cover the full range from very slow fans to very
+ fast fans with good accuracy. This is where fan divisors came
+ into play:
+
+ Case Fan: 0 RPM (min = 998 RPM, div = 8) ALARM
+ CPU Fan: 2500 RPM (min = 1500 RPM, div = 4)
+
+ If your "sensors" output looks like the above, read below.
+
+ As a notable exception, the w83627ehf driver exposes fan divisor
+ values, but they are adjusted automatically by the driver, so you
+ shouldn't have to care.
Fan Divisor Settings
@@ -97,3 +129,4 @@
------------------
Copyright (c) 2000-2004 Mark D. Studebaker
+Copyright (c) 2006-2012 Jean Delvare
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/doc/libsensors-API.txt
^
|
@@ -6,6 +6,19 @@
authors can quickly figure out how to test for the availability of a
given new feature.
+0x432 lm-sensors 3.3.2 to 3.3.3
+* Added support for new sysfs attributes
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_IN_AVERAGE
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_IN_LOWEST
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_IN_HIGHEST
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_TEMP_LOWEST
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_TEMP_HIGHEST
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_AVERAGE
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_LOWEST
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_CURR_HIGHEST
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_FAN_MAX
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_FAN_MIN_ALARM
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_FAN_MAX_ALARM
0x431 lm-sensors 3.3.0 to 3.3.1
* Added support for intrusion detection
enum sensors_feature_type SENSORS_FEATURE_INTRUSION
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/etc/sensors.conf.default
^
|
@@ -12,7 +12,7 @@
# Such custom configuration files for specific mainboards can be found at
# http://www.lm-sensors.org/wiki/Configurations
-chip "lm78-*" "lm79-*" "lm80-*"
+chip "lm78-*" "lm79-*" "lm80-*" "lm96080-*"
label temp1 "M/B Temp"
@@ -323,7 +323,7 @@
set in7_min 3.3 * 0.90
set in7_max 3.3 * 1.10
set in8_min 3.0 * 0.90
- set in8_max 3.0 * 1.10
+ set in8_max 3.3 * 1.10
chip "w83627uhg-*"
@@ -340,7 +340,7 @@
set in7_min 5.0 * 0.90
set in7_max 5.0 * 1.10
set in8_min 3.0 * 0.90
- set in8_max 3.0 * 1.10
+ set in8_max 3.3 * 1.10
chip "f71805f-*"
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/lib/Module.mk
^
|
@@ -33,7 +33,7 @@
# changed in a backward incompatible way. The interface is defined by
# the public header files - in this case they are error.h and sensors.h.
LIBMAINVER := 4
-LIBMINORVER := 3.1
+LIBMINORVER := 3.2
LIBVER := $(LIBMAINVER).$(LIBMINORVER)
# The static lib name, the shared lib name, and the internal ('so') name of
@@ -144,10 +144,7 @@
echo ' Run the following command: rm /usr/lib/$(LIBSHBASENAME)*' ; \
echo '******************************************************************************' ; \
fi ; \
- grep -q '^$(LIBDIR)$$' /etc/ld.so.conf || \
- grep -q '^$(LIBDIR)[[:space:]:,=]' /etc/ld.so.conf || \
- grep -q '[[:space:]:,]$(LIBDIR)$$' /etc/ld.so.conf || \
- grep -q '[[:space:]:,]$(LIBDIR)[[:space:]:,=]' /etc/ld.so.conf || \
+ cat /etc/ld.so.conf /etc/ld.so.conf.d/*.conf 2>/dev/null | grep -q '\(^\|[[:space:]:,]\)$(LIBDIR)\([[:space:]:,=]\|$$\)' || \
( echo '******************************************************************************' ; \
echo 'Warning: Library directory $(LIBDIR) is not in /etc/ld.so.conf!' ; \
echo ' Add it and run /sbin/ldconfig for the userspace tools to work.' ; \
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/lib/sensors.h
^
|
@@ -31,7 +31,7 @@
when the API + ABI breaks), the third digit is incremented to track small
API additions like new flags / enum values. The second digit is for tracking
larger additions like new methods. */
-#define SENSORS_API_VERSION 0x431
+#define SENSORS_API_VERSION 0x432
#define SENSORS_CHIP_NAME_PREFIX_ANY NULL
#define SENSORS_CHIP_NAME_ADDR_ANY (-1)
@@ -157,6 +157,9 @@
SENSORS_SUBFEATURE_IN_MAX,
SENSORS_SUBFEATURE_IN_LCRIT,
SENSORS_SUBFEATURE_IN_CRIT,
+ SENSORS_SUBFEATURE_IN_AVERAGE,
+ SENSORS_SUBFEATURE_IN_LOWEST,
+ SENSORS_SUBFEATURE_IN_HIGHEST,
SENSORS_SUBFEATURE_IN_ALARM = (SENSORS_FEATURE_IN << 8) | 0x80,
SENSORS_SUBFEATURE_IN_MIN_ALARM,
SENSORS_SUBFEATURE_IN_MAX_ALARM,
@@ -166,11 +169,14 @@
SENSORS_SUBFEATURE_FAN_INPUT = SENSORS_FEATURE_FAN << 8,
SENSORS_SUBFEATURE_FAN_MIN,
+ SENSORS_SUBFEATURE_FAN_MAX,
SENSORS_SUBFEATURE_FAN_ALARM = (SENSORS_FEATURE_FAN << 8) | 0x80,
SENSORS_SUBFEATURE_FAN_FAULT,
SENSORS_SUBFEATURE_FAN_DIV,
SENSORS_SUBFEATURE_FAN_BEEP,
SENSORS_SUBFEATURE_FAN_PULSES,
+ SENSORS_SUBFEATURE_FAN_MIN_ALARM,
+ SENSORS_SUBFEATURE_FAN_MAX_ALARM,
SENSORS_SUBFEATURE_TEMP_INPUT = SENSORS_FEATURE_TEMP << 8,
SENSORS_SUBFEATURE_TEMP_MAX,
@@ -181,6 +187,8 @@
SENSORS_SUBFEATURE_TEMP_LCRIT,
SENSORS_SUBFEATURE_TEMP_EMERGENCY,
SENSORS_SUBFEATURE_TEMP_EMERGENCY_HYST,
+ SENSORS_SUBFEATURE_TEMP_LOWEST,
+ SENSORS_SUBFEATURE_TEMP_HIGHEST,
SENSORS_SUBFEATURE_TEMP_ALARM = (SENSORS_FEATURE_TEMP << 8) | 0x80,
SENSORS_SUBFEATURE_TEMP_MAX_ALARM,
SENSORS_SUBFEATURE_TEMP_MIN_ALARM,
@@ -215,6 +223,9 @@
SENSORS_SUBFEATURE_CURR_MAX,
SENSORS_SUBFEATURE_CURR_LCRIT,
SENSORS_SUBFEATURE_CURR_CRIT,
+ SENSORS_SUBFEATURE_CURR_AVERAGE,
+ SENSORS_SUBFEATURE_CURR_LOWEST,
+ SENSORS_SUBFEATURE_CURR_HIGHEST,
SENSORS_SUBFEATURE_CURR_ALARM = (SENSORS_FEATURE_CURR << 8) | 0x80,
SENSORS_SUBFEATURE_CURR_MIN_ALARM,
SENSORS_SUBFEATURE_CURR_MAX_ALARM,
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/lib/sysfs.c
^
|
@@ -24,6 +24,7 @@
#include <sys/types.h>
#include <sys/stat.h>
+#include <sys/vfs.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
@@ -40,6 +41,7 @@
/****************************************************************************/
#define ATTR_MAX 128
+#define SYSFS_MAGIC 0x62656572
/*
* Read an attribute from sysfs
@@ -233,6 +235,8 @@
{ "lcrit", SENSORS_SUBFEATURE_TEMP_LCRIT },
{ "emergency", SENSORS_SUBFEATURE_TEMP_EMERGENCY },
{ "emergency_hyst", SENSORS_SUBFEATURE_TEMP_EMERGENCY_HYST },
+ { "lowest", SENSORS_SUBFEATURE_TEMP_LOWEST },
+ { "highest", SENSORS_SUBFEATURE_TEMP_HIGHEST },
{ "alarm", SENSORS_SUBFEATURE_TEMP_ALARM },
{ "min_alarm", SENSORS_SUBFEATURE_TEMP_MIN_ALARM },
{ "max_alarm", SENSORS_SUBFEATURE_TEMP_MAX_ALARM },
@@ -252,6 +256,9 @@
{ "max", SENSORS_SUBFEATURE_IN_MAX },
{ "lcrit", SENSORS_SUBFEATURE_IN_LCRIT },
{ "crit", SENSORS_SUBFEATURE_IN_CRIT },
+ { "average", SENSORS_SUBFEATURE_IN_AVERAGE },
+ { "lowest", SENSORS_SUBFEATURE_IN_LOWEST },
+ { "highest", SENSORS_SUBFEATURE_IN_HIGHEST },
{ "alarm", SENSORS_SUBFEATURE_IN_ALARM },
{ "min_alarm", SENSORS_SUBFEATURE_IN_MIN_ALARM },
{ "max_alarm", SENSORS_SUBFEATURE_IN_MAX_ALARM },
@@ -264,9 +271,12 @@
static const struct subfeature_type_match fan_matches[] = {
{ "input", SENSORS_SUBFEATURE_FAN_INPUT },
{ "min", SENSORS_SUBFEATURE_FAN_MIN },
+ { "max", SENSORS_SUBFEATURE_FAN_MAX },
{ "div", SENSORS_SUBFEATURE_FAN_DIV },
{ "pulses", SENSORS_SUBFEATURE_FAN_PULSES },
{ "alarm", SENSORS_SUBFEATURE_FAN_ALARM },
+ { "min_alarm", SENSORS_SUBFEATURE_FAN_MIN_ALARM },
+ { "max_alarm", SENSORS_SUBFEATURE_FAN_MAX_ALARM },
{ "fault", SENSORS_SUBFEATURE_FAN_FAULT },
{ "beep", SENSORS_SUBFEATURE_FAN_BEEP },
{ NULL, 0 }
@@ -302,6 +312,9 @@
{ "max", SENSORS_SUBFEATURE_CURR_MAX },
{ "lcrit", SENSORS_SUBFEATURE_CURR_LCRIT },
{ "crit", SENSORS_SUBFEATURE_CURR_CRIT },
+ { "average", SENSORS_SUBFEATURE_CURR_AVERAGE },
+ { "lowest", SENSORS_SUBFEATURE_CURR_LOWEST },
+ { "highest", SENSORS_SUBFEATURE_CURR_HIGHEST },
{ "alarm", SENSORS_SUBFEATURE_CURR_ALARM },
{ "min_alarm", SENSORS_SUBFEATURE_CURR_MIN_ALARM },
{ "max_alarm", SENSORS_SUBFEATURE_CURR_MAX_ALARM },
@@ -585,11 +598,11 @@
/* returns !0 if sysfs filesystem was found, 0 otherwise */
int sensors_init_sysfs(void)
{
- struct stat statbuf;
+ struct statfs statfsbuf;
snprintf(sensors_sysfs_mount, NAME_MAX, "%s", "/sys");
- if (stat(sensors_sysfs_mount, &statbuf) < 0
- || statbuf.st_nlink <= 2) /* Empty directory */
+ if (statfs(sensors_sysfs_mount, &statfsbuf) < 0
+ || statfsbuf.f_type != SYSFS_MAGIC)
return 0;
return 1;
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/prog/detect/sensors-detect
^
|
@@ -2,7 +2,7 @@
#
# sensors-detect - Detect hardware monitoring chips
# Copyright (C) 1998 - 2002 Frodo Looijaard <frodol@dds.nl>
-# Copyright (C) 2004 - 2011 Jean Delvare <khali@linux-fr.org>
+# Copyright (C) 2004 - 2012 Jean Delvare <khali@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
@@ -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: 5984 $ ($Date: 2011-07-10 21:22:53 +0200 (dim. 10 juil. 2011) $)';
+$revision = '$Revision: 6085 $ ($Date: 2012-10-30 18:18:45 +0100 (mar. 30 oct. 2012) $)';
$revision =~ s/\$\w+: (.*?) \$/$1/g;
$revision =~ s/ \([^()]*\)//;
@@ -60,7 +60,7 @@
vendid => 0x8086,
devid => 0x7603,
procid => "Intel 82372FB PIIX5 ACPI",
- driver => "to-be-tested",
+ driver => "to-be-written",
}, {
vendid => 0x8086,
devid => 0x719b,
@@ -153,6 +153,26 @@
driver => "i2c-i801",
}, {
vendid => 0x8086,
+ devid => 0x1D22,
+ procid => "Intel Patsburg (PCH)",
+ driver => "i2c-i801",
+ }, {
+ vendid => 0x8086,
+ devid => 0x2330,
+ procid => "Intel DH89xxCC (PCH)",
+ driver => "i2c-i801",
+ }, {
+ vendid => 0x8086,
+ devid => 0x1E22,
+ procid => "Intel Panther Point (PCH)",
+ driver => "i2c-i801",
+ }, {
+ vendid => 0x8086,
+ devid => 0x8C22,
+ procid => "Intel Lynx Point (PCH)",
+ driver => "i2c-i801",
+ }, {
+ vendid => 0x8086,
devid => 0x8119,
procid => "Intel SCH",
driver => "i2c-isch",
@@ -520,7 +540,12 @@
name => "National Semiconductor LM80",
driver => "lm80",
i2c_addrs => [0x28..0x2f],
- i2c_detect => sub { lm80_detect(@_); },
+ i2c_detect => sub { lm80_detect(@_, 0); },
+ }, {
+ name => "National Semiconductor LM96080",
+ driver => "lm80",
+ i2c_addrs => [0x28..0x2f],
+ i2c_detect => sub { lm80_detect(@_, 1); },
}, {
name => "National Semiconductor LM85",
driver => "lm85",
@@ -657,7 +682,7 @@
i2c_addrs => [0x2c..0x2e],
i2c_detect => sub { lm93_detect(@_, 0); },
}, {
- name => "National Semiconductor LM94",
+ name => "National Semiconductor LM94 or LM96194",
driver => "lm93",
i2c_addrs => [0x2c..0x2e],
i2c_detect => sub { lm93_detect(@_, 1); },
@@ -818,6 +843,11 @@
i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e],
i2c_detect => sub { adm1021_detect(@_, 1); },
}, {
+ name => "Global Mixed-mode Technology G781",
+ driver => "lm90",
+ i2c_addrs => [0x4c, 0x4d],
+ i2c_detect => sub { lm90_detect(@_, 15); },
+ }, {
name => "Maxim MAX1617",
driver => "adm1021",
i2c_addrs => [0x18..0x1a, 0x29..0x2b, 0x4c..0x4e],
@@ -1023,6 +1053,11 @@
i2c_addrs => [0x18, 0x4e],
i2c_detect => sub { lm63_detect(@_, 3); },
}, {
+ name => "National Semiconductor LM96163",
+ driver => "lm63",
+ i2c_addrs => [0x4c],
+ i2c_detect => sub { lm63_detect(@_, 4); },
+ }, {
name => "Fintek F75363SG",
driver => "lm63", # Not yet
i2c_addrs => [0x4c],
@@ -1315,6 +1350,16 @@
i2c_addrs => [0x18..0x1f],
i2c_detect => sub { jedec_JC42_4_detect(@_, 10); },
}, {
+ name => "ST STTS2002",
+ driver => "jc42",
+ i2c_addrs => [0x18..0x1f],
+ i2c_detect => sub { jedec_JC42_4_detect(@_, 11); },
+ }, {
+ name => "ST STTS3000",
+ driver => "jc42",
+ i2c_addrs => [0x18..0x1f],
+ i2c_detect => sub { jedec_JC42_4_detect(@_, 12); },
+ }, {
name => "NXP SE97/SE97B",
driver => "jc42",
i2c_addrs => [0x18..0x1f],
@@ -1340,6 +1385,11 @@
i2c_addrs => [0x18..0x1f],
i2c_detect => sub { jedec_JC42_4_detect(@_, 5); },
}, {
+ name => "Microchip MCP9804",
+ driver => "jc42",
+ i2c_addrs => [0x18..0x1f],
+ i2c_detect => sub { jedec_JC42_4_detect(@_, 13); },
+ }, {
name => "Microchip MCP98242",
driver => "jc42",
i2c_addrs => [0x18..0x1f],
@@ -1359,6 +1409,11 @@
driver => "jc42",
i2c_addrs => [0x18..0x1f],
i2c_detect => sub { jedec_JC42_4_detect(@_, 9); },
+ }, {
+ name => "Atmel AT30TS00",
+ driver => "jc42",
+ i2c_addrs => [0x18..0x1f],
+ i2c_detect => sub { jedec_JC42_4_detect(@_, 14); },
}
);
@@ -1560,15 +1615,35 @@
logdev => 0x14,
features => FEAT_IN | FEAT_TEMP,
}, {
+ name => "ITE IT8510E/TE/G Super IO",
+ driver => "to-be-written",
+ devid => 0x8510,
+ features => FEAT_IN | FEAT_FAN,
+ }, {
+ name => "ITE IT8511E/TE/G Super IO",
+ driver => "to-be-written",
+ devid => 0x8511,
+ features => FEAT_IN | FEAT_FAN,
+ }, {
name => "ITE IT8512E/F/G Super IO",
driver => "to-be-written",
devid => 0x8512,
features => FEAT_IN | FEAT_FAN,
}, {
+ name => "ITE IT8513E/F/G Super IO",
+ driver => "to-be-written",
+ devid => 0x8513,
+ features => FEAT_IN | FEAT_FAN,
+ }, {
name => "ITE IT8516E/F/G Super IO",
driver => "to-be-written",
devid => 0x8516,
features => FEAT_IN | FEAT_FAN,
+ }, {
+ name => "ITE IT8518E Super IO",
+ driver => "to-be-written",
+ devid => 0x8518,
+ features => FEAT_IN | FEAT_FAN,
}
);
@@ -1829,6 +1904,10 @@
driver => "not-a-sensor",
devid => 0x28,
}, {
+ name => "SMSC LPC47N217 Super IO",
+ driver => "not-a-sensor",
+ devid => 0x7a,
+ }, {
name => "SMSC LPC47N227 Super IO",
driver => "not-a-sensor",
devid => 0x5a,
@@ -1836,6 +1915,10 @@
name => "SMSC LPC47N237 Super IO",
driver => "not-a-sensor",
devid => 0x13,
+ }, {
+ name => "SMSC SIO10N268 Notebook IO",
+ driver => "not-a-sensor",
+ devid => 0x5b,
}
);
@@ -1908,7 +1991,7 @@
logdev => 0x0b,
features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
}, {
- name => "Winbond W83627DHG-P Super IO Sensors",
+ name => "Winbond W83627DHG-P/W83527HG Super IO Sensors",
driver => "w83627ehf",
devid => 0xB070,
devid_mask => 0xFFF0,
@@ -1959,6 +2042,18 @@
logdev => 0x0b,
features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
}, {
+ name => "Nuvoton NCT6779D Super IO Sensors",
+ driver => "to-be-written", # nct6775, new driver
+ devid => 0xC562,
+ logdev => 0x0b,
+ features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
+ }, {
+ name => "Nuvoton NCT6102D/NCT6106D Super IO Sensors",
+ driver => "to-be-written", # nct6775, new driver
+ devid => 0x1061,
+ logdev => 0x0b,
+ features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
+ }, {
name => "Fintek F71805F/FG Super IO Sensors",
driver => "f71805f",
devid => 0x0406,
@@ -2120,16 +2215,40 @@
features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
}, {
name => "ITE IT8728F Super IO Sensors",
- driver => "to-be-written", # it87
+ driver => "it87",
devid => 0x8728,
logdev => 0x04,
features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
}, {
+ name => "ITE IT8771E Super IO Sensors",
+ driver => "to-be-written", # it87
+ devid => 0x8771,
+ 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,
+ }, {
+ name => "ITE IT8781F Super IO Sensors",
+ driver => "to-be-written", # it87
+ devid => 0x8781,
+ logdev => 0x04,
+ features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
+ }, {
+ name => "ITE IT8782F Super IO Sensors",
+ driver => "to-be-written", # it87
+ devid => 0x8782,
+ logdev => 0x04,
+ features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
+ }, {
+ name => "ITE IT8783F Super IO Sensors",
+ driver => "to-be-written", # it87
+ devid => 0x8783,
+ logdev => 0x04,
+ features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
}
);
@@ -2577,14 +2696,15 @@
} elsif ($link =~ m/^(.*)\/i2c-$nr$/) {
$entry->{path} = "${base_dir}/i2c-$nr/device";
$entry->{parent} = "${base_dir}/i2c-$nr/$1";
- } else {
- $entry->{path} = "${base_dir}/i2c-$nr";
- $entry->{parent} = "$entry->{path}/device";
}
- } else {
+ }
+
+ # This works for all recent kernels (with or without
+ # CONFIG_I2C_COMPAT)
+ if (!defined $entry->{path}) {
my $link = readlink("${base_dir}/i2c-$nr");
- $link =~ s/\/i2c-$nr$//;
$entry->{path} = "${base_dir}/i2c-$nr";
+ $link =~ s/(\/i2c-[0-9]+)+$//; # Handle multiplexers too
$entry->{parent} = "${base_dir}/$link";
}
@@ -2764,8 +2884,11 @@
);
# 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,
+ 'system version' => 1,
+ 'to be filled by o.e.m.' => 1,
);
my $dmi_id_dir;
@@ -2794,7 +2917,7 @@
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})};
}
}
@@ -2810,6 +2933,7 @@
if (defined $system) {
print "# System: $system";
+ print " [$dmi{product_version}]" if defined $dmi{product_version};
print " (laptop)" if (is_laptop());
print "\n";
}
@@ -2893,7 +3017,7 @@
my ($dev, @pci_list);
opendir(local *DEVICES, "$devices")
- or die "$devices: $!";
+ or return \@pci_list;
while (defined($dev = readdir(DEVICES))) {
my %record;
@@ -2970,16 +3094,8 @@
next unless exists $pci_list{$key};
$device = $pci_list{$key};
- if ($try->{driver} eq "to-be-tested") {
- print "\nWe are currently looking for testers for this adapter!\n".
- "Please check http://www.lm-sensors.org/wiki/Devices\n".
- "and/or contact us if you want to help.\n\n".
- "Continue... ";
- <STDIN>;
- print "\n";
- }
- if ($try->{driver} =~ m/^to-be-/) {
+ if ($try->{driver} eq "to-be-written") {
printf "No known driver for device \%s: \%s\n",
pci_busid($device), $try->{procid};
} else {
@@ -3537,8 +3653,8 @@
my ($funcs, $chip, $addr, $class, $default, $input, @not_to_scan);
$class = get_pci_class($i2c_adapters[$adapter_nr]->{parent});
- if (($class & 0xff00) == 0x0400) {
- # Do not probe adapters on PCI multimedia cards by default
+ # Do not probe adapters on multimedia and graphics cards by default
+ if (($class & 0xff00) == 0x0400 || ($class & 0xff00) == 0x0300) {
$default = 0;
} elsif ($class == 0x0c01 || $class == 0x0c05
|| find_i2c_adapter_driver($i2c_adapters[$adapter_nr]->{name})) {
@@ -3565,6 +3681,9 @@
$input = <STDIN>;
chomp($input);
@not_to_scan = parse_not_to_scan(0x03, 0x77, $input);
+ } elsif (($class & 0xff00) == 0x0300) {
+ # Skip EDID addresses by default on graphics adapters
+ @not_to_scan = parse_not_to_scan(0x03, 0x77, "0x50-0x57");
}
open(local *FILE, "$dev_i2c$adapter_nr") or
@@ -3741,6 +3860,10 @@
print "\n (hardware monitoring capabilities accessible via SMBus only)\n";
return FEAT_SMBUS;
}
+ if (!exists $chip->{logdev}) {
+ print "\n (no support yet)\n";
+ return 0;
+ }
# Switch to the sensor logical device
outb($addrreg, $superio{logdevreg});
@@ -4049,7 +4172,9 @@
# Bits that always return 0
return if ($conf & 0x0c) or ($status & 0x10);
- return if i2c_smbus_read_word_data($file, 0x07) != 0x9001;
+ # Test with byte read first to avoid confusing other chips
+ return if i2c_smbus_read_byte_data($file, 0x07) != 0x01
+ or i2c_smbus_read_word_data($file, 0x07) != 0x9001;
# Make sure the chip supports SMBus read word transactions
my $cur = i2c_smbus_read_word_data($file, 0x00);
@@ -4228,11 +4353,15 @@
return ($slope == 0x10 && $counter <= $slope) ? 3 : 2;
}
+# Chip to detect: 0 = LM80, 1 = LM96080
# Registers used:
# 0x00: Configuration register
# 0x02: Interrupt state register
-# 0x2a-0x3d: Limits registers
-# This one is easily misdetected since it doesn't provide identification
+# 0x07: Converstion rate register (LM96080 only)
+# 0x2a-0x3d: Limits registers (LM80 only)
+# 0x3e: Manufacturer's ID register (LM96080 only)
+# 0x3f: Stepping/die revision ID register (LM96080 only)
+# The LM80 is easily misdetected since it doesn't provide identification
# registers. So we have to use some tricks:
# - 6-bit addressing, so limits readings modulo 0x40 should be unchanged
# - positive temperature limits
@@ -4245,44 +4374,51 @@
# to loose comparisons did not change the score.
sub lm80_detect
{
- my ($file, $addr) = @_;
+ my ($file, $addr, $chip) = @_;
my ($i, $reg);
return if (i2c_smbus_read_byte_data($file, 0x00) & 0x80) != 0;
return if (i2c_smbus_read_byte_data($file, 0x02) & 0xc0) != 0;
- for ($i = 0x2a; $i <= 0x3d; $i++) {
- $reg = i2c_smbus_read_byte_data($file, $i);
- return if i2c_smbus_read_byte_data($file, $i+0x40) != $reg;
- return if i2c_smbus_read_byte_data($file, $i+0x80) != $reg;
- return if i2c_smbus_read_byte_data($file, $i+0xc0) != $reg;
- }
-
- # Refine a bit by checking whether limits are in the correct order
- # (min<max for voltages, hyst<max for temperature). Since it is still
- # possible that the chip is an LM80 with limits not properly set,
- # a few "errors" are tolerated.
- my $confidence = 0;
- for ($i = 0x2a; $i <= 0x3a; $i++) {
+ if ($chip == 0) {
+ for ($i = 0x2a; $i <= 0x3d; $i++) {
+ $reg = i2c_smbus_read_byte_data($file, $i);
+ return if i2c_smbus_read_byte_data($file, $i+0x40) != $reg;
+ return if i2c_smbus_read_byte_data($file, $i+0x80) != $reg;
+ return if i2c_smbus_read_byte_data($file, $i+0xc0) != $reg;
+ }
+
+ # Refine a bit by checking whether limits are in the correct order
+ # (min<max for voltages, hyst<max for temperature). Since it is still
+ # possible that the chip is an LM80 with limits not properly set,
+ # a few "errors" are tolerated.
+ my $confidence = 0;
+ for ($i = 0x2a; $i <= 0x3a; $i++) {
+ $confidence++
+ if i2c_smbus_read_byte_data($file, $i) < i2c_smbus_read_byte_data($file, $i+1);
+ }
+ # hot temp<OS temp
$confidence++
- if i2c_smbus_read_byte_data($file, $i) < i2c_smbus_read_byte_data($file, $i+1);
- }
- # hot temp<OS temp
- $confidence++
- if i2c_smbus_read_byte_data($file, 0x38) < i2c_smbus_read_byte_data($file, 0x3a);
+ if i2c_smbus_read_byte_data($file, 0x38) < i2c_smbus_read_byte_data($file, 0x3a);
- # Negative temperature limits are unlikely.
- for ($i = 0x3a; $i <= 0x3d; $i++) {
- $confidence++ if (i2c_smbus_read_byte_data($file, $i) & 0x80) == 0;
- }
+ # Negative temperature limits are unlikely.
+ for ($i = 0x3a; $i <= 0x3d; $i++) {
+ $confidence++ if (i2c_smbus_read_byte_data($file, $i) & 0x80) == 0;
+ }
- # $confidence is between 0 and 14
- $confidence = ($confidence >> 1) - 4;
- # $confidence is now between -4 and 3
+ # $confidence is between 0 and 14
+ $confidence = ($confidence >> 1) - 4;
+ # $confidence is now between -4 and 3
- return unless $confidence > 0;
+ return unless $confidence > 0;
+ return $confidence;
+ } elsif ($chip == 1) {
+ return if (i2c_smbus_read_byte_data($file, 0x07) & 0xfe) != 0;
+ return if i2c_smbus_read_byte_data($file, 0x3e) != 0x01;
+ return if i2c_smbus_read_byte_data($file, 0x3f) != 0x08;
- return $confidence;
+ return 6;
+ }
}
# Registers used:
@@ -4362,7 +4498,8 @@
# 6 = MAX6646/MAX6647/MAX6648/MAX6649/MAX6692,
# 8 = W83L771W/G, 9 = TMP401, 10 = TMP411,
# 11 = W83L771AWG/ASG, 12 = MAX6690,
-# 13 = ADT7461A/NCT1008, 14 = SA56004
+# 13 = ADT7461A/NCT1008, 14 = SA56004,
+# 15 = G781
# Registers used:
# 0x03: Configuration
# 0x04: Conversion rate
@@ -4474,6 +4611,12 @@
return if $mid != 0xa1; # NXP Semiconductor/Philips
return 6 if $cid == 0x00; # SA56004
}
+ if ($chip == 15) {
+ return if ($conf & 0x3f) != 0;
+ return if $rate > 0x08;
+ return if $mid != 0x47; # GMT
+ return 8 if $cid == 0x01; # G781
+ }
return;
}
@@ -4602,7 +4745,7 @@
return 6;
}
-# Chip to detect: 1 = LM63, 2 = F75363SG, 3 = LM64
+# Chip to detect: 1 = LM63, 2 = F75363SG, 3 = LM64, 4 = LM96163
# Registers used:
# 0xfe: Manufacturer ID
# 0xff: Chip ID / die revision
@@ -4632,6 +4775,11 @@
|| $cid != 0x51; # LM64
return if ($conf & 0x18) != 0x00
|| ($mask & 0xa4) != 0xa4;
+ } elsif ($chip == 4) {
+ return if $mid != 0x01 # National Semiconductor
+ || $cid != 0x49; # LM96163
+ return if ($conf & 0x18) != 0x00
+ || ($mask & 0xa4) != 0xa4;
}
return 6;
@@ -5881,7 +6029,8 @@
# Chip to detect: 0 = STTS424, 1 = SE97/SE97B, 2 = SE98, 3 = ADT7408,
# 4 = TS3000/TSE2002, 5 = MAX6604, 6 = MCP98242,
# 7 = MCP98243, 8 = MCP9843, 9 = CAT6095 / CAT34TS02,
-# 10 = STTS424E
+# 10 = STTS424E, 11 = STTS2002, 12 = STTS3000
+# 13 = MCP9804, 14 = AT30TS00
# Registers used:
# 0x00: Capabilities
# 0x01: Configuration
@@ -5938,6 +6087,18 @@
} elsif ($chip == 10) {
return unless $manid == 0x10; # STMicrolectronics
return unless $devid == 0x00; # STTS424E02
+ } elsif ($chip == 11) {
+ return unless $manid == 0x10; # STMicrolectronics
+ return unless $devid == 0x03; # STTS2002
+ } elsif ($chip == 12) {
+ return unless $manid == 0x10; # STMicrolectronics
+ return unless $devid == 0x02; # STTS3000
+ } elsif ($chip == 13) {
+ return unless $manid == 0x00; # MCP
+ return unless $devid == 02; # MCP9804
+ } elsif ($chip == 14) {
+ return unless $manid == 0x00; # Atmel
+ return unless $devid == 0x82; # AT30TS00
}
# Now, do it all again with words. Note that we get
@@ -5964,7 +6125,7 @@
return unless $devid == 0x0108; # ADT7408
} elsif ($chip == 4) {
return unless $manid == 0xb300; # IDT
- return unless $devid == 0x0329; # TS3000/TSE2002
+ return unless $devid == 0x0329 || $devid == 0x1229; # TS3000/TSE2002
} elsif ($chip == 5) {
return unless $manid == 0x4d00; # MAXIM
return unless $devid == 0x003e; # MAX6604
@@ -5983,6 +6144,18 @@
} elsif ($chip == 10) {
return unless $manid == 0x4a10; # STMicrolectronics
return unless ($devid & 0xfeff) == 0x0000; # STTS424E02
+ } elsif ($chip == 11) {
+ return unless $manid == 0x4a10; # STMicrolectronics
+ return unless ($devid & 0xfeff) == 0x0003; # STTS2002
+ } elsif ($chip == 12) {
+ return unless $manid == 0x4a10; # STMicrolectronics
+ return unless ($devid & 0xfeff) == 0x0002; # STTS3000
+ } elsif ($chip == 13) {
+ return unless $manid == 0x5400; # MCP
+ return unless ($devid & 0xfcff) == 0x0002; # MCP9804
+ } elsif ($chip == 14) {
+ return unless $manid == 0x1f00; # Atmel
+ return unless ($devid & 0xfeff) == 0x0082; # AT30TS00
}
return 5;
@@ -6620,7 +6793,7 @@
"Do you want to scan for them? This is totally safe. (YES/no): ";
unless (<STDIN> =~ /^\s*n/i) {
# Load the cpuid driver if needed
- unless (-e "/dev/cpu/$cpu[0]->{nr}/cpuid") {
+ unless (-e "$sysfs_root/class/cpuid") {
load_module("cpuid");
udev_settle();
}
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/prog/pwm/fancontrol
^
|
@@ -49,7 +49,7 @@
echo "Loading configuration from $1 ..."
if [ ! -r "$1" ]
then
- echo "Error: Can't read configuration file"
+ echo "Error: Can't read configuration file" >&2
exit 1
fi
@@ -70,13 +70,13 @@
# Check whether all mandatory settings are set
if [[ -z ${INTERVAL} || -z ${FCTEMPS} || -z ${MINTEMP} || -z ${MAXTEMP} || -z ${MINSTART} || -z ${MINSTOP} ]]
then
- echo "Some mandatory settings missing, please check your config file!"
+ echo "Some mandatory settings missing, please check your config file!" >&2
exit 1
fi
if [ "$INTERVAL" -le 0 ]
then
- echo "Error in configuration file:"
- echo "INTERVAL must be at least 1"
+ echo "Error in configuration file:" >&2
+ echo "INTERVAL must be at least 1" >&2
exit 1
fi
@@ -90,8 +90,8 @@
do
if ! echo $fcv | egrep -q '='
then
- echo "Error in configuration file:"
- echo "FCTEMPS value is improperly formatted"
+ echo "Error in configuration file:" >&2
+ echo "FCTEMPS value is improperly formatted" >&2
exit 1
fi
@@ -110,32 +110,32 @@
# verify the validity of the settings
if [ "${AFCMINTEMP[$fcvcount]}" -ge "${AFCMAXTEMP[$fcvcount]}" ]
then
- echo "Error in configuration file (${AFCPWM[$fcvcount]}):"
- echo "MINTEMP must be less than MAXTEMP"
+ echo "Error in configuration file (${AFCPWM[$fcvcount]}):" >&2
+ echo "MINTEMP must be less than MAXTEMP" >&2
exit 1
fi
if [ "${AFCMAXPWM[$fcvcount]}" -gt 255 ]
then
- echo "Error in configuration file (${AFCPWM[$fcvcount]}):"
- echo "MAXPWM must be at most 255"
+ echo "Error in configuration file (${AFCPWM[$fcvcount]}):" >&2
+ echo "MAXPWM must be at most 255" >&2
exit 1
fi
if [ "${AFCMINSTOP[$fcvcount]}" -ge "${AFCMAXPWM[$fcvcount]}" ]
then
- echo "Error in configuration file (${AFCPWM[$fcvcount]}):"
- echo "MINSTOP must be less than MAXPWM"
+ echo "Error in configuration file (${AFCPWM[$fcvcount]}):" >&2
+ echo "MINSTOP must be less than MAXPWM" >&2
exit 1
fi
if [ "${AFCMINSTOP[$fcvcount]}" -lt "${AFCMINPWM[$fcvcount]}" ]
then
- echo "Error in configuration file (${AFCPWM[$fcvcount]}):"
- echo "MINSTOP must be greater than or equal to MINPWM"
+ echo "Error in configuration file (${AFCPWM[$fcvcount]}):" >&2
+ echo "MINSTOP must be greater than or equal to MINPWM" >&2
exit 1
fi
if [ "${AFCMINPWM[$fcvcount]}" -lt 0 ]
then
- echo "Error in configuration file (${AFCPWM[$fcvcount]}):"
- echo "MINPWM must be at least 0"
+ echo "Error in configuration file (${AFCPWM[$fcvcount]}):" >&2
+ echo "MINPWM must be at least 0" >&2
exit 1
fi
@@ -185,7 +185,7 @@
if [ "`DevicePath "$device"`" != "$path" ]
then
- echo "Device path of $device has changed"
+ echo "Device path of $device has changed" >&2
outdated=1
fi
done
@@ -197,7 +197,7 @@
if [ "`DeviceName "$device"`" != "$name" ]
then
- echo "Device name of $device has changed"
+ echo "Device name of $device has changed" >&2
outdated=1
fi
done
@@ -215,7 +215,7 @@
pwmo=${AFCPWM[$fcvcount]}
if [ ! -w $pwmo ]
then
- echo "Error: file $pwmo doesn't exist"
+ echo "Error: file $pwmo doesn't exist" >&2
outdated=1
fi
let fcvcount=$fcvcount+1
@@ -227,7 +227,7 @@
tsen=${AFCTEMP[$fcvcount]}
if [ ! -r $tsen ]
then
- echo "Error: file $tsen doesn't exist"
+ echo "Error: file $tsen doesn't exist" >&2
outdated=1
fi
let fcvcount=$fcvcount+1
@@ -236,21 +236,24 @@
let fcvcount=0
while (( $fcvcount < ${#AFCFAN[@]} )) # go through all fan inputs
do
- fan=${AFCFAN[$fcvcount]}
- if [ ! -r $fan ]
- then
- echo "Error: file $fan doesn't exist"
- outdated=1
- fi
+ # A given PWM output can control several fans
+ for fan in $(echo ${AFCFAN[$fcvcount]} | sed -e 's/+/ /')
+ do
+ if [ ! -r $fan ]
+ then
+ echo "Error: file $fan doesn't exist" >&2
+ outdated=1
+ fi
+ done
let fcvcount=$fcvcount+1
done
if [ $outdated -eq 1 ]
then
- echo
- echo "At least one referenced file is missing. Either some required kernel"
- echo "modules haven't been loaded, or your configuration file is outdated."
- echo "In the latter case, you should run pwmconfig again."
+ echo >&2
+ echo "At least one referenced file is missing. Either some required kernel" >&2
+ echo "modules haven't been loaded, or your configuration file is outdated." >&2
+ echo "In the latter case, you should run pwmconfig again." >&2
fi
return $outdated
@@ -274,13 +277,13 @@
then
DIR=/sys/bus/i2c/devices
else
- echo "$0: Invalid path to sensors"
+ echo "$0: Invalid path to sensors" >&2
exit 1
fi
if [ ! -d $DIR ]
then
- echo $0: 'No sensors found! (did you load the necessary modules?)'
+ echo $0: 'No sensors found! (did you load the necessary modules?)' >&2
exit 1
fi
cd $DIR
@@ -288,19 +291,19 @@
# Check for configuration change
if [ -z "$DEVPATH" -o -z "$DEVNAME" ]
then
- echo "Configuration is too old, please run pwmconfig again"
+ echo "Configuration is too old, please run pwmconfig again" >&2
exit 1
fi
if ! ValidateDevices "$DEVPATH" "$DEVNAME"
then
- echo "Configuration appears to be outdated, please run pwmconfig again"
+ echo "Configuration appears to be outdated, please run pwmconfig again" >&2
exit 1
fi
CheckFiles || exit 1
if [ -f "$PIDFILE" ]
then
- echo "File $PIDFILE exists, is fancontrol already running?"
+ echo "File $PIDFILE exists, is fancontrol already running?" >&2
exit 1
fi
echo $$ > "$PIDFILE"
@@ -405,12 +408,31 @@
# If fanspeed-sensor output shall be used, do it
if [[ -n ${fan} ]]
then
- read fanval < ${fan}
- if [ $? -ne 0 ]
- then
- echo "Error reading Fan value from $DIR/$fan"
- restorefans 1
- fi
+ min_fanval=100000
+ fanval=
+ # A given PWM output can control several fans
+ for one_fan in $(echo $fan | sed -e 's/+/ /')
+ do
+ read one_fanval < ${one_fan}
+ if [ $? -ne 0 ]
+ then
+ echo "Error reading Fan value from $DIR/$one_fan" >&2
+ restorefans 1
+ fi
+
+ # Remember the minimum, it only matters if it is 0
+ if [ $one_fanval -lt $min_fanval ]
+ then
+ min_fanval=$one_fanval
+ fi
+
+ if [ -z "$fanval" ]
+ then
+ fanval=$one_fanval
+ else
+ fanval="$fanval/$one_fanval"
+ fi
+ done
else
fanval=1 # set it to a non zero value, so the rest of the script still works
fi
@@ -430,6 +452,7 @@
echo "tval=$tval"
echo "pwmpval=$pwmpval"
echo "fanval=$fanval"
+ echo "min_fanval=$min_fanval"
fi
if (( $tval <= $mint ))
@@ -439,7 +462,7 @@
else
# calculate the new value from temperature and settings
pwmval="(${tval}-${mint})*(${maxpwm}-${minso})/(${maxt}-${mint})+${minso}"
- if [ $pwmpval -eq 0 -o $fanval -eq 0 ]
+ if [ $pwmpval -eq 0 -o $min_fanval -eq 0 ]
then # if fan was stopped start it using a safe value
echo $minsa > $pwmo
# Sleep while still handling signals
@@ -450,7 +473,7 @@
echo $pwmval > $pwmo # write new value to pwm output
if [ $? -ne 0 ]
then
- echo "Error writing PWM value to $DIR/$pwmo"
+ echo "Error writing PWM value to $DIR/$pwmo" >&2
restorefans 1
fi
if [ "$DEBUG" != "" ]
@@ -469,7 +492,7 @@
pwmenable $pwmo
if [ $? -ne 0 ]
then
- echo "Error enabling PWM on $DIR/$pwmo"
+ echo "Error enabling PWM on $DIR/$pwmo" >&2
restorefans 1
fi
let fcvcount=$fcvcount+1
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/prog/sensord/sense.c
^
|
@@ -82,13 +82,21 @@
return (int) (val + 0.5);
}
-static int get_features(const sensors_chip_name *chip,
- const FeatureDescriptor *feature, int action,
- char *label, int alrm, int beep)
+static int do_features(const sensors_chip_name *chip,
+ const FeatureDescriptor *feature, int action)
{
- int i, ret;
+ char *label;
+ const char *formatted;
+ int i, alrm, beep, ret;
double val[MAX_DATA];
+ /* If only scanning, take a quick exit if alarm is off */
+ alrm = get_flag(chip, feature->alarmNumber);
+ if (alrm == -1)
+ return -1;
+ if (action == DO_SCAN && !alrm)
+ return 0;
+
for (i = 0; feature->dataNumbers[i] >= 0; i++) {
ret = sensors_get_value(chip, feature->dataNumbers[i],
val + i);
@@ -101,39 +109,32 @@
}
}
+ /* For RRD, we don't need anything else */
if (action == DO_RRD) {
if (feature->rrd) {
const char *rrded = feature->rrd(val);
- /* FIXME: Jean's review comment:
- * sprintf would me more efficient.
- */
- strcat(strcat (rrdBuff, ":"), rrded ? rrded : "U");
+ sprintf(rrdBuff + strlen(rrdBuff), ":%s",
+ rrded ? rrded : "U");
}
- } else {
- const char *formatted = feature->format(val, alrm, beep);
- if (!formatted) {
- sensorLog(LOG_ERR, "Error formatting sensor data");
- return -1;
- }
-
- if (action == DO_READ) {
- sensorLog(LOG_INFO, " %s: %s", label, formatted);
- } else {
- sensorLog(LOG_ALERT, "Sensor alarm: Chip %s: %s: %s",
- chipName(chip), label, formatted);
- }
+ return 0;
}
- return 0;
-}
-static int do_features(const sensors_chip_name *chip,
- const FeatureDescriptor *feature, int action)
-{
- char *label;
- int alrm, beep;
+ /* For scanning and logging, we need extra information */
+ beep = get_flag(chip, feature->beepNumber);
+ if (beep == -1)
+ return -1;
+
+ formatted = feature->format(val, alrm, beep);
+ if (!formatted) {
+ sensorLog(LOG_ERR, "Error formatting sensor data");
+ return -1;
+ }
+ /* FIXME: It would be more efficient to store the label at
+ * initialization time.
+ */
label = sensors_get_label(chip, feature->feature);
if (!label) {
sensorLog(LOG_ERR, "Error getting sensor label: %s/%s",
@@ -141,17 +142,15 @@
return -1;
}
- alrm = get_flag(chip, feature->alarmNumber);
- if (alrm == -1)
- return -1;
- else if (action == DO_SCAN && !alrm)
- return 0;
+ if (action == DO_READ)
+ sensorLog(LOG_INFO, " %s: %s", label, formatted);
+ else
+ sensorLog(LOG_ALERT, "Sensor alarm: Chip %s: %s: %s",
+ chipName(chip), label, formatted);
- beep = get_flag(chip, feature->beepNumber);
- if (beep == -1)
- return -1;
+ free(label);
- return get_features(chip, feature, action, label, alrm, beep);
+ return 0;
}
static int doKnownChip(const sensors_chip_name *chip,
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/prog/sensord/sensord.8
^
|
@@ -347,7 +347,6 @@
echo OK.
echo -n "Starting sensord: "
daemon sensord
-...
.fi
.PP
Ignore the platform-specific shell functions; the general idea
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/prog/sensord/sensord.c
^
|
@@ -204,7 +204,11 @@
} else if (pid != 0) {
fprintf(file, "%d\n", pid);
fclose(file);
- unloadLib();
+
+ freeChips();
+ if (unloadLib())
+ exit(EXIT_FAILURE);
+
exit(EXIT_SUCCESS);
}
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/prog/sensors/Module.mk
^
|
@@ -37,7 +37,7 @@
REMOVESENSORSBIN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(BINDIR)/%,$(PROGSENSORSTARGETS))
REMOVESENSORSMAN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(PROGSENSORSMAN1DIR)/%,$(PROGSENSORSMAN1FILES))
-LIBICONV := $(shell if /sbin/ldconfig -p | grep -q libiconv\\.so ; then echo \-liconv; else echo; fi)
+LIBICONV := $(shell if /sbin/ldconfig -p | grep -q '/libiconv\.so$$' ; then echo \-liconv; else echo; fi)
$(PROGSENSORSTARGETS): $(PROGSENSORSSOURCES:.c=.ro) lib/$(LIBSHBASENAME)
$(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) $(LIBICONV) -Llib -lsensors
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/prog/sensors/chips.c
^
|
@@ -201,10 +201,8 @@
const sensors_feature *feature,
const struct sensor_subfeature_list *sfl,
struct sensor_subfeature_data *limits,
- int max_limits,
int *num_limits,
struct sensor_subfeature_data *alarms,
- int max_alarms,
int *num_alarms)
{
const sensors_subfeature *sf;
@@ -219,33 +217,21 @@
* (it is implied to be active if queued).
*/
if (get_value(name, sf)) {
- if (*num_alarms >= max_alarms) {
- fprintf(stderr,
- "Not enough %s buffers (%d)\n",
- "alarm", max_alarms);
- } else {
- alarms[*num_alarms].name = sfl->name;
- (*num_alarms)++;
- }
+ alarms[*num_alarms].name = sfl->name;
+ (*num_alarms)++;
}
} else {
/*
* Always queue limit subfeatures with their value.
*/
- if (*num_limits >= max_limits) {
- fprintf(stderr,
- "Not enough %s buffers (%d)\n",
- "limit", max_limits);
- } else {
- limits[*num_limits].value = get_value(name, sf);
- limits[*num_limits].name = sfl->name;
- (*num_limits)++;
- }
+ limits[*num_limits].value = get_value(name, sf);
+ limits[*num_limits].name = sfl->name;
+ (*num_limits)++;
}
if (sfl->exists) {
get_sensor_limit_data(name, feature, sfl->exists,
- limits, max_limits, num_limits,
- alarms, max_alarms, num_alarms);
+ limits, num_limits,
+ alarms, num_alarms);
}
}
}
@@ -280,15 +266,24 @@
{ SENSORS_SUBFEATURE_TEMP_CRIT, temp_crit_sensors, 0, "crit" },
{ SENSORS_SUBFEATURE_TEMP_EMERGENCY, temp_emergency_sensors, 0,
"emerg" },
+ { SENSORS_SUBFEATURE_TEMP_LOWEST, NULL, 0, "lowest" },
+ { SENSORS_SUBFEATURE_TEMP_HIGHEST, NULL, 0, "highest" },
{ -1, NULL, 0, NULL }
};
+#define NUM_TEMP_ALARMS 6
+#define NUM_TEMP_SENSORS (ARRAY_SIZE(temp_sensors) \
+ + ARRAY_SIZE(temp_max_sensors) \
+ + ARRAY_SIZE(temp_crit_sensors) \
+ + ARRAY_SIZE(temp_emergency_sensors) \
+ - NUM_TEMP_ALARMS - 4)
+
static void print_chip_temp(const sensors_chip_name *name,
const sensors_feature *feature,
int label_size)
{
- struct sensor_subfeature_data sensors[8];
- struct sensor_subfeature_data alarms[5];
+ struct sensor_subfeature_data sensors[NUM_TEMP_SENSORS];
+ struct sensor_subfeature_data alarms[NUM_TEMP_ALARMS];
int sensor_count, alarm_count;
const sensors_subfeature *sf;
double val;
@@ -321,8 +316,7 @@
sensor_count = alarm_count = 0;
get_sensor_limit_data(name, feature, temp_sensors,
- sensors, ARRAY_SIZE(sensors), &sensor_count,
- alarms, ARRAY_SIZE(alarms), &alarm_count);
+ sensors, &sensor_count, alarms, &alarm_count);
for (i = 0; i < sensor_count; i++) {
if (fahrenheit)
@@ -345,7 +339,7 @@
sens = 4;
printf(" sensor = %s", sens == 0 ? "disabled" :
- sens == 1 ? "diode" :
+ sens == 1 ? "CPU diode" :
sens == 2 ? "transistor" :
sens == 3 ? "thermal diode" :
sens == 4 ? "thermistor" :
@@ -365,17 +359,23 @@
{ SENSORS_SUBFEATURE_IN_MIN, NULL, 0, "min" },
{ SENSORS_SUBFEATURE_IN_MAX, NULL, 0, "max" },
{ SENSORS_SUBFEATURE_IN_CRIT, NULL, 0, "crit max" },
+ { SENSORS_SUBFEATURE_IN_AVERAGE, NULL, 0, "avg" },
+ { SENSORS_SUBFEATURE_IN_LOWEST, NULL, 0, "lowest" },
+ { SENSORS_SUBFEATURE_IN_HIGHEST, NULL, 0, "highest" },
{ -1, NULL, 0, NULL }
};
+#define NUM_IN_ALARMS 5
+#define NUM_IN_SENSORS (ARRAY_SIZE(voltage_sensors) - NUM_IN_ALARMS - 1)
+
static void print_chip_in(const sensors_chip_name *name,
const sensors_feature *feature,
int label_size)
{
const sensors_subfeature *sf;
char *label;
- struct sensor_subfeature_data sensors[4];
- struct sensor_subfeature_data alarms[4];
+ struct sensor_subfeature_data sensors[NUM_IN_SENSORS];
+ struct sensor_subfeature_data alarms[NUM_IN_ALARMS];
int sensor_count, alarm_count;
double val;
@@ -396,8 +396,7 @@
sensor_count = alarm_count = 0;
get_sensor_limit_data(name, feature, voltage_sensors,
- sensors, ARRAY_SIZE(sensors), &sensor_count,
- alarms, ARRAY_SIZE(alarms), &alarm_count);
+ sensors, &sensor_count, alarms, &alarm_count);
print_limits(sensors, sensor_count, alarms, alarm_count, label_size,
"%s = %+6.2f V");
@@ -409,7 +408,7 @@
const sensors_feature *feature,
int label_size)
{
- const sensors_subfeature *sf, *sfmin, *sfdiv;
+ const sensors_subfeature *sf, *sfmin, *sfmax, *sfdiv;
double val;
char *label;
@@ -436,24 +435,36 @@
sfmin = sensors_get_subfeature(name, feature,
SENSORS_SUBFEATURE_FAN_MIN);
+ sfmax = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_FAN_MAX);
sfdiv = sensors_get_subfeature(name, feature,
SENSORS_SUBFEATURE_FAN_DIV);
- if (sfmin && sfdiv)
- printf(" (min = %4.0f RPM, div = %1.0f)",
- get_value(name, sfmin),
- get_value(name, sfdiv));
- else if (sfmin)
- printf(" (min = %4.0f RPM)",
- get_value(name, sfmin));
- else if (sfdiv)
- printf(" (div = %1.0f)",
- get_value(name, sfdiv));
+ if (sfmin || sfmax || sfdiv) {
+ printf(" (");
+ if (sfmin)
+ printf("min = %4.0f RPM",
+ get_value(name, sfmin));
+ if (sfmax)
+ printf("%smax = %4.0f RPM",
+ sfmin ? ", " : "",
+ get_value(name, sfmax));
+ if (sfdiv)
+ printf("%sdiv = %1.0f",
+ (sfmin || sfmax) ? ", " : "",
+ get_value(name, sfdiv));
+ printf(")");
+ }
sf = sensors_get_subfeature(name, feature,
SENSORS_SUBFEATURE_FAN_ALARM);
- if (sf && get_value(name, sf)) {
+ sfmin = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_FAN_MIN_ALARM);
+ sfmax = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_FAN_MAX_ALARM);
+ if ((sf && get_value(name, sf)) ||
+ (sfmin && get_value(name, sfmin)) ||
+ (sfmax && get_value(name, sfmax)))
printf(" ALARM");
- }
printf("\n");
}
@@ -506,6 +517,11 @@
static const struct sensor_subfeature_list power_inst_sensors[] = {
{ SENSORS_SUBFEATURE_POWER_INPUT_LOWEST, NULL, 0, "lowest" },
{ SENSORS_SUBFEATURE_POWER_INPUT_HIGHEST, NULL, 0, "highest" },
+ { SENSORS_SUBFEATURE_POWER_AVERAGE, NULL, 0, "avg" },
+ { SENSORS_SUBFEATURE_POWER_AVERAGE_LOWEST, NULL, 0, "avg lowest" },
+ { SENSORS_SUBFEATURE_POWER_AVERAGE_HIGHEST, NULL, 0, "avg highest" },
+ { SENSORS_SUBFEATURE_POWER_AVERAGE_INTERVAL, NULL, 0,
+ "interval" },
{ -1, NULL, 0, NULL }
};
@@ -517,14 +533,19 @@
{ -1, NULL, 0, NULL }
};
+#define NUM_POWER_ALARMS 4
+#define NUM_POWER_SENSORS (ARRAY_SIZE(power_common_sensors) \
+ + ARRAY_SIZE(power_inst_sensors) \
+ - NUM_POWER_ALARMS - 2)
+
static void print_chip_power(const sensors_chip_name *name,
const sensors_feature *feature,
int label_size)
{
double val;
const sensors_subfeature *sf;
- struct sensor_subfeature_data sensors[6];
- struct sensor_subfeature_data alarms[3];
+ struct sensor_subfeature_data sensors[NUM_POWER_SENSORS];
+ struct sensor_subfeature_data alarms[NUM_POWER_ALARMS];
int sensor_count, alarm_count;
char *label;
const char *unit;
@@ -540,35 +561,50 @@
sensor_count = alarm_count = 0;
- /* Power sensors come in 2 flavors: instantaneous and averaged.
- To keep things simple, we assume that each sensor only implements
- one flavor. */
+ /*
+ * Power sensors come in 2 flavors: instantaneous and averaged.
+ * Most devices only support one flavor, so we try to display the
+ * average power if the instantaneous power attribute does not exist.
+ * If both instantaneous power and average power are supported,
+ * average power is displayed as limit.
+ */
sf = sensors_get_subfeature(name, feature,
SENSORS_SUBFEATURE_POWER_INPUT);
get_sensor_limit_data(name, feature,
sf ? power_inst_sensors : power_avg_sensors,
- sensors, ARRAY_SIZE(sensors), &sensor_count,
- alarms, ARRAY_SIZE(alarms), &alarm_count);
+ sensors, &sensor_count, alarms, &alarm_count);
/* Add sensors common to both flavors. */
- get_sensor_limit_data(name, feature,
- power_common_sensors,
- sensors, ARRAY_SIZE(sensors), &sensor_count,
- alarms, ARRAY_SIZE(alarms), &alarm_count);
+ get_sensor_limit_data(name, feature, power_common_sensors,
+ sensors, &sensor_count, alarms, &alarm_count);
if (!sf)
sf = sensors_get_subfeature(name, feature,
SENSORS_SUBFEATURE_POWER_AVERAGE);
if (sf && get_input_value(name, sf, &val) == 0) {
scale_value(&val, &unit);
- printf("%6.2f %sW ", val, unit);
+ printf("%6.2f %sW%*s", val, unit, 2 - (int)strlen(unit), "");
} else
printf(" N/A ");
- for (i = 0; i < sensor_count; i++)
- scale_value(&sensors[i].value, &sensors[i].unit);
-
+ for (i = 0; i < sensor_count; i++) {
+ /*
+ * Unit is W and needs to be scaled for all attributes except
+ * interval, which does not need to be scaled and is reported in
+ * seconds.
+ */
+ if (strcmp(sensors[i].name, "interval")) {
+ char *tmpstr;
+
+ tmpstr = alloca(4);
+ scale_value(&sensors[i].value, &unit);
+ snprintf(tmpstr, 4, "%sW", unit);
+ sensors[i].unit = tmpstr;
+ } else {
+ sensors[i].unit = "s";
+ }
+ }
print_limits(sensors, sensor_count, alarms, alarm_count,
- label_size, "%s = %6.2f %sW");
+ label_size, "%s = %6.2f %s");
printf("\n");
}
@@ -622,6 +658,27 @@
free(label);
}
+static void print_chip_humidity(const sensors_chip_name *name,
+ const sensors_feature *feature,
+ int label_size)
+{
+ char *label;
+ const sensors_subfeature *subfeature;
+ double humidity;
+
+ subfeature = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_HUMIDITY_INPUT);
+ if (!subfeature)
+ return;
+
+ if ((label = sensors_get_label(name, feature))
+ && !sensors_get_value(name, subfeature->number, &humidity)) {
+ print_label(label, label_size);
+ printf("%6.1f %%RH\n", humidity);
+ }
+ free(label);
+}
+
static void print_chip_beep_enable(const sensors_chip_name *name,
const sensors_feature *feature,
int label_size)
@@ -653,9 +710,15 @@
{ SENSORS_SUBFEATURE_CURR_MIN, NULL, 0, "min" },
{ SENSORS_SUBFEATURE_CURR_MAX, NULL, 0, "max" },
{ SENSORS_SUBFEATURE_CURR_CRIT, NULL, 0, "crit max" },
+ { SENSORS_SUBFEATURE_CURR_AVERAGE, NULL, 0, "avg" },
+ { SENSORS_SUBFEATURE_CURR_LOWEST, NULL, 0, "lowest" },
+ { SENSORS_SUBFEATURE_CURR_HIGHEST, NULL, 0, "highest" },
{ -1, NULL, 0, NULL }
};
+#define NUM_CURR_ALARMS 5
+#define NUM_CURR_SENSORS (ARRAY_SIZE(current_sensors) - NUM_CURR_ALARMS - 1)
+
static void print_chip_curr(const sensors_chip_name *name,
const sensors_feature *feature,
int label_size)
@@ -663,8 +726,8 @@
const sensors_subfeature *sf;
double val;
char *label;
- struct sensor_subfeature_data sensors[4];
- struct sensor_subfeature_data alarms[4];
+ struct sensor_subfeature_data sensors[NUM_CURR_SENSORS];
+ struct sensor_subfeature_data alarms[NUM_CURR_ALARMS];
int sensor_count, alarm_count;
if (!(label = sensors_get_label(name, feature))) {
@@ -684,8 +747,7 @@
sensor_count = alarm_count = 0;
get_sensor_limit_data(name, feature, current_sensors,
- sensors, ARRAY_SIZE(sensors), &sensor_count,
- alarms, ARRAY_SIZE(alarms), &alarm_count);
+ sensors, &sensor_count, alarms, &alarm_count);
print_limits(sensors, sensor_count, alarms, alarm_count, label_size,
"%s = %+6.2f A");
@@ -751,6 +813,9 @@
case SENSORS_FEATURE_INTRUSION:
print_chip_intrusion(name, feature, label_size);
break;
+ case SENSORS_FEATURE_HUMIDITY:
+ print_chip_humidity(name, feature, label_size);
+ break;
default:
continue;
}
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/prog/sensors/sensors.1
^
|
@@ -49,23 +49,23 @@
is used to generate bus statements suitable for the configuration file.
.SH OPTIONS
-.IP "-c config-file"
+.IP "-c, --config-file config-file"
Specify a configuration file. If no file is specified, the libsensors
default configuration file is used. Use `-c /dev/null' to temporarily
disable this default configuration file.
-.IP -h
+.IP "-h, --help"
Print a help text and exit.
-.IP -s
+.IP "-s, --set"
Evaluate all `set' statements in the configuration file and exit. You must
be `root' to do this. If this parameter is not specified, no `set' statement
is evaluated.
-.IP -A
+.IP "-A, --no-adapter"
Do not show the adapter for each chip.
.IP -u
Raw output. This mode is only meant for debugging.
-.IP -v
+.IP "-v, --version"
Print the program version and exit.
-.IP -f
+.IP "-f, --fahrenheit"
Print the temperatures in degrees Fahrenheit instead of Celsius.
.IP --bus-list
Generate bus statements suitable for using in sensors.conf. Such bus statements
|
[-]
[+]
|
Changed |
lm_sensors-3.3.3.tar.bz2/version.h
^
|
@@ -1 +1 @@
-#define LM_VERSION "3.3.1"
+#define LM_VERSION "3.3.3"
|