mirror of
https://github.com/lm-sensors/lm-sensors
synced 2025-09-02 23:35:57 +00:00
adm1026 and auto-sensors.h patch from P.P.
git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@1777 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
22
CHANGES
22
CHANGES
@@ -25,12 +25,13 @@ ask CVS about it:
|
|||||||
File doc/chips/fscscy: Add watchdog documentation
|
File doc/chips/fscscy: Add watchdog documentation
|
||||||
File sensors.conf.eg: Fix vt1211/vt8231 thermistor calculations
|
File sensors.conf.eg: Fix vt1211/vt8231 thermistor calculations
|
||||||
Library: Add support for exponents and logarithms for vt1211/vt8235 temps;
|
Library: Add support for exponents and logarithms for vt1211/vt8235 temps;
|
||||||
add lm85 support; add w83791d support
|
add adm1026, lm85, w83791d support
|
||||||
Makefiles: Generate warnings if new library won't be found by ld.so;
|
Makefiles: Generate warnings if new library won't be found by ld.so;
|
||||||
Modules now install in kernel/drivers/i2c/[busses,chips];
|
Modules now install in kernel/drivers/i2c/[busses,chips];
|
||||||
Ensure that headers in /usr/local/include are used first;
|
Ensure that headers in /usr/local/include are used first;
|
||||||
Don't use /usr/include headers for modules;
|
Don't use /usr/include headers for modules;
|
||||||
Handle multiple UTS_RELEASE definitions in linux/version.h
|
Handle multiple UTS_RELEASE definitions in linux/version.h;
|
||||||
|
Automatically generate kernel/include/sensors.h
|
||||||
Modules (all): Cleanups including
|
Modules (all): Cleanups including
|
||||||
- Add #include <i2c-proc.h>
|
- Add #include <i2c-proc.h>
|
||||||
- C99 initializers
|
- C99 initializers
|
||||||
@@ -49,32 +50,39 @@ ask CVS about it:
|
|||||||
Modules (several): Add support for AMD Opteron VRM (VID) encoding
|
Modules (several): Add support for AMD Opteron VRM (VID) encoding
|
||||||
Module adm1021: Set alarm on failed reads and report old value;
|
Module adm1021: Set alarm on failed reads and report old value;
|
||||||
merge changes from kernel 2.5.54
|
merge changes from kernel 2.5.54
|
||||||
|
Module adm1026: New
|
||||||
Module bmcsensors: Fix compile when DEBUG=1
|
Module bmcsensors: Fix compile when DEBUG=1
|
||||||
Modules ddcmon, eeprom: Use i2c block reads if possible;
|
Modules ddcmon, eeprom: Use i2c block reads if possible;
|
||||||
better error handling
|
better error handling
|
||||||
|
Module ds1307: Add to Makefile
|
||||||
Module gl520sm: Fix temperature over/hyst writes
|
Module gl520sm: Fix temperature over/hyst writes
|
||||||
Module lm75: merge changes from kernel 2.5.54
|
Module lm75: merge changes from kernel 2.5.54
|
||||||
Module lm85: New
|
Module lm85: New
|
||||||
Module i2c-amd756: merge changes from kernel 2.5.54
|
Module i2c-amd756: merge changes from kernel 2.5.54
|
||||||
Module i2c-amd8111: merge changes from kernel 2.5.54
|
Module i2c-amd8111: merge changes from kernel 2.5.54
|
||||||
Module i2c-i810.c: Fix for some chips
|
Module i2c-i801: Add support for 82801EB (ICH5)
|
||||||
Module i2c-nforce2.c: New
|
Module i2c-i810: Fix for some chips
|
||||||
|
Module i2c-nforce2: New
|
||||||
Module i2c-sis645: Add support for SiS651, SiS961, SiS745
|
Module i2c-sis645: Add support for SiS651, SiS961, SiS745
|
||||||
Modules mtp008, smsc47m1, vt1211, vt8231, w83781d: Standardize and improve
|
Modules mtp008, smsc47m1, vt1211, vt8231, w83781d: Standardize and improve
|
||||||
pwm and pwm enable support; update docs
|
pwm and pwm enable support; update docs
|
||||||
|
Module w83781d: Add support for w83791d
|
||||||
Module w83627hf: New
|
Module w83627hf: New
|
||||||
Program decode-dimms.pl: Recognize DDR and Rambus
|
Program decode-dimms.pl: Recognize DDR and Rambus
|
||||||
Program eeprom: Fix writes for small eeproms
|
Program eeprom: Fix writes for small eeproms
|
||||||
Program eeprom, eepromer: Use local i2c-dev.h for build
|
Program eeprom, eepromer: Use local i2c-dev.h for build
|
||||||
Program lm_sensors.init: Call sensors -s in start()
|
Program lm_sensors.init: Call sensors -s in start()
|
||||||
Program mkpatch: Fix vt8231 compile; keep tsunami from menu on non-alpha
|
Program mkpatch: Fix vt8231 compile; keep tsunami from menu on non-alpha;
|
||||||
|
add adm1026,lm85 support
|
||||||
Program p4b_smbus: Fix 'make install', install in same place as other modules
|
Program p4b_smbus: Fix 'make install', install in same place as other modules
|
||||||
Program pwmtest: New
|
Program pwmtest: New
|
||||||
Program sensors: add lm85 support; add w83791d support
|
Program sensors: add adm1026, lm85, w83791d support
|
||||||
Program sensors-detect: Add super i/o detection (smsc47m1, vt1211,
|
Program sensors-detect: Add super i/o detection (smsc47m1, vt1211,
|
||||||
w83627hf, w83697hf);
|
w83627hf, w83697hf);
|
||||||
Add support for SiS651, SiS961, SiS745, nForce2;
|
Add support for SiS651, SiS961, SiS745, nForce2;
|
||||||
Support dmidecode 2.0 and later
|
Support dmidecode 2.0 and later;
|
||||||
|
Fix "C" format error;
|
||||||
|
Add support for adm1026, 82801EB (ICH5)
|
||||||
|
|
||||||
2.7.0 (20021208)
|
2.7.0 (20021208)
|
||||||
NOTE: Requires i2c-2.7.0 or newer.
|
NOTE: Requires i2c-2.7.0 or newer.
|
||||||
|
@@ -85,3 +85,4 @@ problems.
|
|||||||
Added support for amd8111 SMBus 1.0 controller to i2c-amd756.
|
Added support for amd8111 SMBus 1.0 controller to i2c-amd756.
|
||||||
* Philip Pokorny <ppokorny@penguincomputing.com>
|
* Philip Pokorny <ppokorny@penguincomputing.com>
|
||||||
Author of the LM85 chip driver.
|
Author of the LM85 chip driver.
|
||||||
|
Author of the ADM1026 chip driver.
|
||||||
|
10
Makefile
10
Makefile
@@ -171,6 +171,8 @@ AR := ar
|
|||||||
INSTALL := install
|
INSTALL := install
|
||||||
LN := ln -sfn
|
LN := ln -sfn
|
||||||
GREP := grep
|
GREP := grep
|
||||||
|
AWK := awk
|
||||||
|
SED := sed
|
||||||
|
|
||||||
# Determine the default compiler flags
|
# Determine the default compiler flags
|
||||||
# Set CFLAGS or CPPFLAGS above to add your own flags to all.
|
# Set CFLAGS or CPPFLAGS above to add your own flags to all.
|
||||||
@@ -286,7 +288,7 @@ version:
|
|||||||
|
|
||||||
%.d: %.c
|
%.d: %.c
|
||||||
$(CC) -M -MG $(MODCPPFLAGS) $(MODCFLAGS) $< | \
|
$(CC) -M -MG $(MODCPPFLAGS) $(MODCFLAGS) $< | \
|
||||||
sed -e 's@^\(.*\)\.o:@$*.d $*.o: Makefile '`dirname $*.d`/Module.mk' @' > $@
|
$(SED) -e 's@^\(.*\)\.o:@$*.d $*.o: Makefile '`dirname $*.d`/Module.mk' @' > $@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -296,7 +298,7 @@ version:
|
|||||||
|
|
||||||
%.rd: %.c
|
%.rd: %.c
|
||||||
$(CC) -M -MG $(PROGCPPFLAGS) $(PROGCFLAGS) $< | \
|
$(CC) -M -MG $(PROGCPPFLAGS) $(PROGCFLAGS) $< | \
|
||||||
sed -e 's@^\(.*\)\.o:@$*.rd $*.ro: Makefile '`dirname $*.rd`/Module.mk' @' > $@
|
$(SED) -e 's@^\(.*\)\.o:@$*.rd $*.ro: Makefile '`dirname $*.rd`/Module.mk' @' > $@
|
||||||
|
|
||||||
|
|
||||||
%: %.ro
|
%: %.ro
|
||||||
@@ -309,7 +311,7 @@ version:
|
|||||||
|
|
||||||
%.ad: %.c
|
%.ad: %.c
|
||||||
$(CC) -M -MG $(ARCPPFLAGS) $(ARCFLAGS) $< | \
|
$(CC) -M -MG $(ARCPPFLAGS) $(ARCFLAGS) $< | \
|
||||||
sed -e 's@^\(.*\)\.o:@$*.ad $*.ao: Makefile '`dirname $*.ad`/Module.mk' @' > $@
|
$(SED) -e 's@^\(.*\)\.o:@$*.ad $*.ao: Makefile '`dirname $*.ad`/Module.mk' @' > $@
|
||||||
|
|
||||||
|
|
||||||
# .lo files are used for shared libraries
|
# .lo files are used for shared libraries
|
||||||
@@ -318,7 +320,7 @@ version:
|
|||||||
|
|
||||||
%.ld: %.c
|
%.ld: %.c
|
||||||
$(CC) -M -MG $(LIBCPPFLAGS) $(LIBCFLAGS) $< | \
|
$(CC) -M -MG $(LIBCPPFLAGS) $(LIBCFLAGS) $< | \
|
||||||
sed -e 's@^\(.*\)\.o:@$*.ld $*.lo: Makefile '`dirname $*.ld`/Module.mk' @' > $@
|
$(SED) -e 's@^\(.*\)\.o:@$*.ld $*.lo: Makefile '`dirname $*.ld`/Module.mk' @' > $@
|
||||||
|
|
||||||
|
|
||||||
# Flex and Bison
|
# Flex and Bison
|
||||||
|
19
README
19
README
@@ -8,10 +8,10 @@
|
|||||||
|
|
||||||
OVERVIEW OF THE LM_SENSORS PACKAGE AND SUMMARY OF SUPPORTED DEVICES
|
OVERVIEW OF THE LM_SENSORS PACKAGE AND SUMMARY OF SUPPORTED DEVICES
|
||||||
|
|
||||||
!!! THIS PACKAGE REQUIRES i2c-2.7.0 or later!!!
|
!!! THIS PACKAGE REQUIRES i2c-2.8.0 or later!!!
|
||||||
|
|
||||||
FOR 2.5 KERNELS, we do not recommend attempting to compile this package.
|
FOR 2.5 KERNELS, we do not recommend attempting to compile this package.
|
||||||
Use kernel patches linked from our download page instead!!!
|
Use the drivers already in the 2.5 kernel development tree.
|
||||||
|
|
||||||
=============================================================================
|
=============================================================================
|
||||||
|
|
||||||
@@ -19,15 +19,16 @@ This is the completely rewritten version 2 of lm_sensors, a collection of
|
|||||||
modules for general SMBus access and hardware monitoring.
|
modules for general SMBus access and hardware monitoring.
|
||||||
Version 1 is now officially unsupported.
|
Version 1 is now officially unsupported.
|
||||||
|
|
||||||
WARNING! This package will compile for 2.2 and 2.4 kernels only.
|
WARNING! This package will kernels 2.4.9 - 2.4.xx only.
|
||||||
Use lm_sensors-2.4.5 for 2.0 kernels.
|
Use lm_sensors-2.4.5 for 2.0 kernels.
|
||||||
|
Use lm_sensors-2.7.0 for 2.2, 2.3, and 2.4.0 - 2.4.8 kernels.
|
||||||
Use the kernel patches linked from our download page for 2.5 kernels.
|
Use the kernel patches linked from our download page for 2.5 kernels.
|
||||||
|
|
||||||
WARNING! You must get the latest i2c package, i2c-2.7.0,
|
WARNING! You must get the latest i2c package, i2c-2.8.0,
|
||||||
EVEN IF your kernel does contain i2c support!!!!!!!!!
|
EVEN IF your kernel does contain i2c support!!!!!!!!!
|
||||||
|
|
||||||
Kernels 2.3.34 and later, and all 2.4.x kernels, contain the
|
Kernels 2.3.34 and later, and all 2.4.x kernels, contain the
|
||||||
I2C package. Kernels 2.4.13 - 2.4.19 contain i2c-2.6.1,
|
I2C package. Kernels 2.4.13 - 2.4.20 contain i2c-2.6.1,
|
||||||
which is NOT sufficient for compilation of this package.
|
which is NOT sufficient for compilation of this package.
|
||||||
|
|
||||||
See the lm_sensors download page for guidance:
|
See the lm_sensors download page for guidance:
|
||||||
@@ -46,7 +47,7 @@ At least the following I2C/SMBus adapters are supported:
|
|||||||
AMD 8111 SMBus 2.0
|
AMD 8111 SMBus 2.0
|
||||||
Apple Hydra (used on some PPC machines)
|
Apple Hydra (used on some PPC machines)
|
||||||
DEC 21272/21274 (Tsunami/Typhoon - on Alpha boards)
|
DEC 21272/21274 (Tsunami/Typhoon - on Alpha boards)
|
||||||
Intel I801 ICH/ICH0/ICH2/ICH3 (used in Intel 810, 810E, 815E, 820, 840 chipsets)
|
Intel I801 ICH/ICH0/ICH2/ICH3/ICH4/ICH5
|
||||||
Intel PIIX4 (used in many Intel chipsets)
|
Intel PIIX4 (used in many Intel chipsets)
|
||||||
Intel I810/I815 GMCH
|
Intel I810/I815 GMCH
|
||||||
Intel 82443MX (440MX)
|
Intel 82443MX (440MX)
|
||||||
@@ -60,8 +61,8 @@ At least the following I2C/SMBus adapters are supported:
|
|||||||
|
|
||||||
|
|
||||||
At least the following hardware sensor chips are supported:
|
At least the following hardware sensor chips are supported:
|
||||||
Analog Devices ADM1021, ADM1021A, ADM1022, ADM1023
|
Analog Devices ADM1021, ADM1021A, ADM1022, ADM1023, ADM1024,
|
||||||
ADM1024, ADM1025, ADM1027 and ADM9240
|
ADM1025, ADM1026, ADM1027 and ADM9240
|
||||||
ADT7463
|
ADT7463
|
||||||
Asus AS99127F, ASB100 Bach
|
Asus AS99127F, ASB100 Bach
|
||||||
Dallas Semiconductor DS75, DS1621, DS1625, DS1775, and DS1780
|
Dallas Semiconductor DS75, DS1621, DS1625, DS1775, and DS1780
|
||||||
@@ -77,7 +78,7 @@ At least the following hardware sensor chips are supported:
|
|||||||
LM80, LM81, LM84, LM85, LM87, and LM92
|
LM80, LM81, LM84, LM85, LM87, and LM92
|
||||||
Philips NE1617, NE1617A
|
Philips NE1617, NE1617A
|
||||||
SiS 5595, 950 embedded sensors
|
SiS 5595, 950 embedded sensors
|
||||||
SMSC 47M1xx embedded sensors
|
SMSC 47M1xx embedded sensors, EMC6D100, EMC6D101
|
||||||
TI THMC10 and THMC50
|
TI THMC10 and THMC50
|
||||||
VIA Technologies VT1211 and VT82C686A/B embedded sensors
|
VIA Technologies VT1211 and VT82C686A/B embedded sensors
|
||||||
Winbond W83781D, W83782D, W83783S, W83627HF, and W83697HF
|
Winbond W83781D, W83782D, W83783S, W83627HF, and W83697HF
|
||||||
|
@@ -63,6 +63,9 @@ adm1024
|
|||||||
adm1025
|
adm1025
|
||||||
adm1025 2 6 - - yes no
|
adm1025 2 6 - - yes no
|
||||||
|
|
||||||
|
adm1026
|
||||||
|
adm1026 3 17 8 2 pwm+dac yes no
|
||||||
|
|
||||||
adm9240
|
adm9240
|
||||||
adm9240 1 6 2 1 dac yes no
|
adm9240 1 6 2 1 dac yes no
|
||||||
ds1780 1 6 2 1 dac yes no
|
ds1780 1 6 2 1 dac yes no
|
||||||
|
217
doc/chips/adm1026
Normal file
217
doc/chips/adm1026
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
Kernel driver `adm1026.o'
|
||||||
|
======================
|
||||||
|
|
||||||
|
Status: In development
|
||||||
|
|
||||||
|
Supported chips:
|
||||||
|
* Analog Devices ADM1026
|
||||||
|
Prefix `adm1026'
|
||||||
|
Addresses scanned: I2C 0x2c, 0x2d, 0x2e
|
||||||
|
|
||||||
|
Author: Philip Pokorny <ppokorny@penguincomputing.com>
|
||||||
|
for Penguin Computing
|
||||||
|
|
||||||
|
|
||||||
|
Module Parameters
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
* force: short array (min = 1, max = 48)
|
||||||
|
List of adapter,address pairs to boldly assume to be present
|
||||||
|
* force_adm1026: short array (min = 1, max = 48)
|
||||||
|
List of adapter,address pairs which are unquestionably assumed to contain
|
||||||
|
an `adm1026' chip
|
||||||
|
* ignore: short array (min = 1, max = 48)
|
||||||
|
List of adapter,address pairs not to scan
|
||||||
|
* ignore_range: short array (min = 1, max = 48)
|
||||||
|
List of adapter,start-addr,end-addr triples not to scan
|
||||||
|
* probe: short array (min = 1, max = 48)
|
||||||
|
List of adapter,address pairs to scan additionally
|
||||||
|
* probe_range: short array (min = 1, max = 48)
|
||||||
|
List of adapter,start-addr,end-addr triples to scan additionally
|
||||||
|
|
||||||
|
The following only apply to the first ADM1026 detected. These are a
|
||||||
|
workaround for if your BIOS hasn't setup your chip.
|
||||||
|
|
||||||
|
* gpio_input: int array (min = 1, max = 17)
|
||||||
|
List of GPIO pins (0-16) to program as inputs
|
||||||
|
* gpio_output: int array (min = 1, max = 17)
|
||||||
|
List of GPIO pins (0-16) to program as outputs
|
||||||
|
* gpio_inverted: int array (min = 1, max = 17)
|
||||||
|
List of GPIO pins (0-16) to program as inverted
|
||||||
|
* gpio_normal: int array (min = 1, max = 17)
|
||||||
|
List of GPIO pins (0-16) to program as normal/non-inverted
|
||||||
|
* gpio_fan: int array (min = 1, max = 8)
|
||||||
|
List of GPIO pins (0-7) to program as fan tachs
|
||||||
|
|
||||||
|
|
||||||
|
Description
|
||||||
|
-----------
|
||||||
|
|
||||||
|
This driver implements support for the Analog Devices ADM1026. Analog
|
||||||
|
Devices calls it a "complete thermal system management controller."
|
||||||
|
|
||||||
|
The ADM1026 implements three (3) temperature sensors, 17 voltage
|
||||||
|
sensors, 16 general purpose digital I/O lines, eight (8) fan speed
|
||||||
|
sensors (8-bit), an analog output and a PWM output along with limit,
|
||||||
|
alarm and mask bits for all of the above. There is even 8k bytes of
|
||||||
|
EEPROM memory on chip.
|
||||||
|
|
||||||
|
Temperatures are measured in degrees Celcius. There are two external
|
||||||
|
sensor inputs and one internal sensor. Each sensor has a high and low
|
||||||
|
limit. If the limit is exceeded, an interrupt (#SMBALERT) can be
|
||||||
|
generated. The interrupts can be masked. In addition, there are
|
||||||
|
over-temp limits for each sensor. If this limit is exceeded, the
|
||||||
|
#THERM output will be asserted. The current temperature and limits
|
||||||
|
have a resolution of 1 degree.
|
||||||
|
|
||||||
|
FAN rotation speeds are reported in RPM (rotations per minute) but
|
||||||
|
measured in counts of a 22.5kHz internal clock. Each fan has a high
|
||||||
|
limit which corresponds to a minimum fan speed. If the limit is
|
||||||
|
exceeded, an interrupt can be generated. Each fan can be programmed
|
||||||
|
to divide the reference clock by 1, 2, 4 or 8. Not all RPM values can
|
||||||
|
accurately be represented, so some rounding is done. With a divider of
|
||||||
|
8, the slowest measureable speed of a one pulse per rev fan is 1323
|
||||||
|
RPM. Two pulse per rev fans can be measured as slow as 661 RPM.
|
||||||
|
|
||||||
|
Voltage sensors (in0 to in16) report their values in volts. An alarm
|
||||||
|
is triggered if the voltage has crossed a programmable minimum or
|
||||||
|
maximum limit. Note that minimum in this case always means 'closest
|
||||||
|
to zero'; this is important for negative voltage measurements.
|
||||||
|
Several inputs have integrated attenuators so they can measure higher
|
||||||
|
voltages directly. 3.3V, 5V, 12V, -12V and battery voltage all have
|
||||||
|
dedicated inputs. There are several inputs scaled to 0-3V full-scale
|
||||||
|
range for SCSI terminator power. The remaining inputs are not scaled
|
||||||
|
and have a 0-2.5V full-scale range. A 2.5V or 1.82V reference voltage
|
||||||
|
is provided for negative voltage measurements.
|
||||||
|
|
||||||
|
If an alarm triggers, it will remain triggered until the hardware
|
||||||
|
register is read at least once. This means that the cause for the
|
||||||
|
alarm may already have disappeared! Note that in the current
|
||||||
|
implementation, all hardware registers are read whenever any data is
|
||||||
|
read (unless it is less than 2.0 seconds since the last update). This
|
||||||
|
means that you can easily miss once-only alarms.
|
||||||
|
|
||||||
|
The ADM1026 measures continuously. Analog inputs are measured about 4
|
||||||
|
times a second. Fan speed measurement time depends on fan speed and
|
||||||
|
divisor. It can take as long as 1.5 seconds to measure all fan
|
||||||
|
speeds.
|
||||||
|
|
||||||
|
The ADM1026 has the ability to automaticaly control fan speed based on
|
||||||
|
the temperature sensor inputs. Both the PWM output and the DAC output
|
||||||
|
can be used to control fan speed. Usually only one of these two
|
||||||
|
outputs will be used. Write the minimum PWM or DAC value to the
|
||||||
|
appropriate control register. Then set the low temperature limit in
|
||||||
|
the tmin values for each temperature sensor. The range of control is
|
||||||
|
fixed at 20 degC, and the largest difference between current and tmin
|
||||||
|
of the temperature sensors sets the control output. See the datasheet
|
||||||
|
for several example circuits for controlling fan speed with the PWM
|
||||||
|
and DAC outputs. The fan speed sensors do not have PWM compensation,
|
||||||
|
so it is probably best to control the fan voltage from the power
|
||||||
|
lead rather than on the ground lead.
|
||||||
|
|
||||||
|
The datasheet shows an example application with VID signals attached
|
||||||
|
to GPIO lines. Unfortunately, the chip may not be connected to the
|
||||||
|
VID lines in this way. The driver assumes that the chips *is*
|
||||||
|
connected this way to get a vid voltage. If the VID value is wrong or
|
||||||
|
not wired as shown in the example, then you will need to write the
|
||||||
|
correct VID value to the driver either based on the GPIO values or
|
||||||
|
setting it directly. The value written to VID should be the *raw* VID
|
||||||
|
value (0 to 0x3f) or -1 (to restore the default value). When read,
|
||||||
|
the vid interface returns the scaled voltage according to the VRM spec
|
||||||
|
selected.
|
||||||
|
|
||||||
|
Example sensors.conf
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Here is an example sensors.conf configuration section for the ADM1026.
|
||||||
|
|
||||||
|
--------- cut here ---------
|
||||||
|
chip "adm1026-*"
|
||||||
|
|
||||||
|
# Voltage inputs
|
||||||
|
label in0 "V2.25_0" # Scaled for "SCSI terminator"?
|
||||||
|
label in1 "V2.25_1" # supply voltage?
|
||||||
|
label in2 "V2.25_2"
|
||||||
|
label in3 "V2.25_3"
|
||||||
|
label in4 "V2.25_4"
|
||||||
|
label in5 "V2.25_5"
|
||||||
|
|
||||||
|
label in6 "V1.875_0" # Unscaled inputs
|
||||||
|
label in7 "V1.875_1"
|
||||||
|
|
||||||
|
# If temp3 is enabled, in8 and in9 are disabled.
|
||||||
|
# label in8 "V1.875_2"
|
||||||
|
# label in9 "V1.875_3"
|
||||||
|
ignore in8
|
||||||
|
ignore in9
|
||||||
|
|
||||||
|
# Dedicated voltage inputs
|
||||||
|
label in10 "Vbat"
|
||||||
|
label in11 "V3.3STBY"
|
||||||
|
label in12 "V3.3MAIN"
|
||||||
|
label in13 "V5"
|
||||||
|
label in14 "Vccp"
|
||||||
|
label in15 "V12"
|
||||||
|
label in16 "V-12"
|
||||||
|
|
||||||
|
# Temperature inputs
|
||||||
|
label temp1 "Board"
|
||||||
|
label temp2 "CPU0"
|
||||||
|
label temp3 "CPU1"
|
||||||
|
|
||||||
|
# Fan inputs
|
||||||
|
label fan0 "CPU_Fan"
|
||||||
|
label fan1 "Fan1"
|
||||||
|
label fan2 "Fan2"
|
||||||
|
label fan3 "Fan3"
|
||||||
|
label fan4 "Fan4"
|
||||||
|
label fan5 "Fan5"
|
||||||
|
label fan6 "Fan6"
|
||||||
|
label fan7 "Fan7"
|
||||||
|
|
||||||
|
# PWM Outputs
|
||||||
|
label pwm "PWM"
|
||||||
|
|
||||||
|
# Voltage scaling is done on-chip. No 'compute' directive
|
||||||
|
# should be necessary. If in0-in9 have external scaling,
|
||||||
|
# set it here.
|
||||||
|
|
||||||
|
# compute in0 @ * 2.5, @ / 2.5
|
||||||
|
|
||||||
|
# Adjust fans speeds for actual pulses per rev
|
||||||
|
# compute fan0 @ / 2, @ * 2 # 2 pulse per rev
|
||||||
|
# compute fan1 @ / 3, @ * 3 # 3 pulse per rev
|
||||||
|
# compute fan2 @ / 4, @ * 4 # 4 pulse per rev
|
||||||
|
# compute fan3 @ / 8, @ * 8 # 8 pulse per rev
|
||||||
|
|
||||||
|
# Set VRM version
|
||||||
|
set vrm 9.1
|
||||||
|
# set vid 1.580
|
||||||
|
|
||||||
|
# Set voltage limits
|
||||||
|
set in10_min 3.0 * 0.95
|
||||||
|
set in10_max 3.0 * 1.05
|
||||||
|
set in11_min 3.3 * 0.95
|
||||||
|
set in11_max 3.3 * 1.05
|
||||||
|
set in12_min 3.3 * 0.95
|
||||||
|
set in12_max 3.3 * 1.05
|
||||||
|
set in13_min 5.0 * 0.95
|
||||||
|
set in13_max 5.0 * 1.05
|
||||||
|
# Uncomment if VID is wired or set above
|
||||||
|
# set in14_min vid * 0.95
|
||||||
|
# set in14_max vid * 1.05
|
||||||
|
set in15_min 12 * 0.95
|
||||||
|
set in15_max 12 * 1.05
|
||||||
|
set in16_min -12 * 0.95
|
||||||
|
set in16_max -12 * 1.05
|
||||||
|
|
||||||
|
# Set Fan limits
|
||||||
|
set fan0_min 7000
|
||||||
|
set fan1_min 7000
|
||||||
|
set fan2_min 7000
|
||||||
|
set fan3_min 7000
|
||||||
|
set fan4_min 3000
|
||||||
|
set fan5_min 3000
|
||||||
|
set fan6_min 3000
|
||||||
|
set fan7_min 3000
|
||||||
|
|
@@ -46,6 +46,9 @@ endif
|
|||||||
ifneq ($(shell if grep -q '^CONFIG_SENSORS_ADM1025=y' $(LINUX)/.config; then echo 1; fi),1)
|
ifneq ($(shell if grep -q '^CONFIG_SENSORS_ADM1025=y' $(LINUX)/.config; then echo 1; fi),1)
|
||||||
KERNELCHIPSTARGETS += $(MODULE_DIR)/adm1025.o
|
KERNELCHIPSTARGETS += $(MODULE_DIR)/adm1025.o
|
||||||
endif
|
endif
|
||||||
|
ifneq ($(shell if grep -q '^CONFIG_SENSORS_ADM1026=y' $(LINUX)/.config; then echo 1; fi),1)
|
||||||
|
KERNELCHIPSTARGETS += $(MODULE_DIR)/adm1026.o
|
||||||
|
endif
|
||||||
ifneq ($(shell if grep -q '^CONFIG_SENSORS_ADM9240=y' $(LINUX)/.config; then echo 1; fi),1)
|
ifneq ($(shell if grep -q '^CONFIG_SENSORS_ADM9240=y' $(LINUX)/.config; then echo 1; fi),1)
|
||||||
KERNELCHIPSTARGETS += $(MODULE_DIR)/adm9240.o
|
KERNELCHIPSTARGETS += $(MODULE_DIR)/adm9240.o
|
||||||
endif
|
endif
|
||||||
|
1757
kernel/chips/adm1026.c
Normal file
1757
kernel/chips/adm1026.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -483,6 +483,9 @@ static struct i2c_driver lm85_driver = {
|
|||||||
.detach_client = &lm85_detach_client,
|
.detach_client = &lm85_detach_client,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Unique ID assigned to each LM85 detected */
|
||||||
|
static int lm85_id = 0;
|
||||||
|
|
||||||
/* -- SENSORS SYSCTL START -- */
|
/* -- SENSORS SYSCTL START -- */
|
||||||
/* Common parameters */
|
/* Common parameters */
|
||||||
#define LM85_SYSCTL_IN0 1000
|
#define LM85_SYSCTL_IN0 1000
|
||||||
@@ -552,9 +555,6 @@ static struct i2c_driver lm85_driver = {
|
|||||||
#define LM85_ALARM_TEMP3_FAULT 0x08000
|
#define LM85_ALARM_TEMP3_FAULT 0x08000
|
||||||
/* -- SENSORS SYSCTL END -- */
|
/* -- SENSORS SYSCTL END -- */
|
||||||
|
|
||||||
/* Unique ID assigned to each LM85 detected */
|
|
||||||
static int lm85_id = 0;
|
|
||||||
|
|
||||||
/* The /proc/sys entries */
|
/* The /proc/sys entries */
|
||||||
/* These files are created for each detected LM85. This is just a template;
|
/* These files are created for each detected LM85. This is just a template;
|
||||||
* The actual list is built from this and additional per-chip
|
* The actual list is built from this and additional per-chip
|
||||||
@@ -1567,6 +1567,7 @@ void lm85_pwm_config(struct i2c_client *client, int operation, int ctl_name,
|
|||||||
*nrels_mag = 5;
|
*nrels_mag = 5;
|
||||||
} else if (operation == SENSORS_PROC_REAL_WRITE) {
|
} else if (operation == SENSORS_PROC_REAL_WRITE) {
|
||||||
int old_config ;
|
int old_config ;
|
||||||
|
|
||||||
down(&data->update_lock);
|
down(&data->update_lock);
|
||||||
old_config = data->autofan[nr].config ;
|
old_config = data->autofan[nr].config ;
|
||||||
if (*nrels_mag > 4) {
|
if (*nrels_mag > 4) {
|
||||||
@@ -1929,7 +1930,7 @@ void adt7463_therm_signal(struct i2c_client *client, int operation,
|
|||||||
|
|
||||||
static int __init sm_lm85_init(void)
|
static int __init sm_lm85_init(void)
|
||||||
{
|
{
|
||||||
printk("lm85 version %s (%s)\n", LM_VERSION, LM_DATE);
|
printk("lm85: Version %s (%s)\n", LM_VERSION, LM_DATE);
|
||||||
printk("lm85: See http://www.penguincomputing.com/lm_sensors for more info.\n" );
|
printk("lm85: See http://www.penguincomputing.com/lm_sensors for more info.\n" );
|
||||||
return i2c_add_driver(&lm85_driver);
|
return i2c_add_driver(&lm85_driver);
|
||||||
}
|
}
|
||||||
|
@@ -60,7 +60,7 @@ static void lm92_alarms (struct i2c_client *client,int operation,int ctl_name,in
|
|||||||
|
|
||||||
/* -- SENSORS SYSCTL START -- */
|
/* -- SENSORS SYSCTL START -- */
|
||||||
#define LM92_SYSCTL_ALARMS 2001 /* high, low, critical */
|
#define LM92_SYSCTL_ALARMS 2001 /* high, low, critical */
|
||||||
#define LM92_SYSCTL_TEMP 1200 /* high, low, critical, hysterisis, input */
|
#define LM92_SYSCTL_TEMP 1200 /* high, low, critical, hysteresis, input */
|
||||||
|
|
||||||
#define LM92_ALARM_TEMP_HIGH 0x01
|
#define LM92_ALARM_TEMP_HIGH 0x01
|
||||||
#define LM92_ALARM_TEMP_LOW 0x02
|
#define LM92_ALARM_TEMP_LOW 0x02
|
||||||
|
@@ -26,6 +26,19 @@ ifneq ($(shell if grep -q '^CONFIG_SENSORS=y' $(LINUX)/.config; then echo 1; fi)
|
|||||||
KERNELINCLUDEFILES += $(MODULE_DIR)/sensors.h
|
KERNELINCLUDEFILES += $(MODULE_DIR)/sensors.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
$(KERNELINCLUDEDIR)/sensors.h: $(KERNELINCLUDEDIR)/sensors.h.template
|
||||||
|
( cat $@.template ; \
|
||||||
|
$(AWK) '/SENSORS SYSCTL START/,/SENSORS SYSCTL END/' $(KERNELCHIPSDIR)/*.c ;\
|
||||||
|
echo '#endif' \
|
||||||
|
) > $@
|
||||||
|
|
||||||
|
$(KERNELINCLUDEDIR)/sensors.hd:
|
||||||
|
( $(GREP) 'SENSORS SYSCTL START' /dev/null $(KERNELCHIPSDIR)/*.c | \
|
||||||
|
$(SED) -e 's/:.*//' -e 's#^#$(KERNELINCLUDEDIR)/sensors.h: #' ) > $@
|
||||||
|
|
||||||
|
# Get dependancies of sensors.h
|
||||||
|
INCLUDEFILES += $(MODULE_DIR)/sensors.hd
|
||||||
|
|
||||||
install-all-kernel-include:
|
install-all-kernel-include:
|
||||||
if [ -n "$(KERNELINCLUDEFILES)" ] ; then \
|
if [ -n "$(KERNELINCLUDEFILES)" ] ; then \
|
||||||
$(MKDIR) $(DESTDIR)$(SYSINCLUDEDIR) ; \
|
$(MKDIR) $(DESTDIR)$(SYSINCLUDEDIR) ; \
|
||||||
@@ -35,6 +48,6 @@ install-all-kernel-include:
|
|||||||
install :: install-all-kernel-include
|
install :: install-all-kernel-include
|
||||||
|
|
||||||
clean-all-kernel-include:
|
clean-all-kernel-include:
|
||||||
$(RM) $(KERNELINCLUDEDIR)/*.h.install
|
$(RM) $(KERNELINCLUDEDIR)/*.h.install $(KERNELINCLUDEDIR)/sensors.h $(KERNELINCLUDEDIR)/sensors.hd
|
||||||
|
|
||||||
clean :: clean-all-kernel-include
|
clean :: clean-all-kernel-include
|
||||||
|
53
kernel/include/sensors.h.template
Normal file
53
kernel/include/sensors.h.template
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
sensors.h - Part of lm_sensors, Linux kernel modules for hardware
|
||||||
|
monitoring
|
||||||
|
Copyright (c) 1998, 1999 Frodo Looijaard <frodol@dds.nl>
|
||||||
|
|
||||||
|
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
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LIB_SENSORS_H
|
||||||
|
#define LIB_SENSORS_H
|
||||||
|
|
||||||
|
/* This file is intended to be included from userland utilities only.
|
||||||
|
*
|
||||||
|
* Individual drivers define their own SYSCTL and ALARM values in
|
||||||
|
* the driver itself surrounded by the following 'trigger' lines:
|
||||||
|
*
|
||||||
|
* -- SENSORS SYSCTL START --
|
||||||
|
* -- SENSORS SYSCTL END --
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* From linux/i2c-proc.h */
|
||||||
|
|
||||||
|
/* Sysctl IDs */
|
||||||
|
#ifdef DEV_HWMON
|
||||||
|
#define DEV_SENSORS DEV_HWMON
|
||||||
|
#else /* ndef DEV_HWMOM */
|
||||||
|
#define DEV_SENSORS 2 /* The id of the lm_sensors directory within the
|
||||||
|
dev table */
|
||||||
|
#endif /* def DEV_HWMON */
|
||||||
|
|
||||||
|
/* The maximum length of the prefix */
|
||||||
|
#define SENSORS_PREFIX_MAX 20
|
||||||
|
|
||||||
|
#define SENSORS_CHIPS 1
|
||||||
|
struct i2c_chips_data {
|
||||||
|
int sysctl_id;
|
||||||
|
char name[SENSORS_PREFIX_MAX + 13];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
319
lib/chips.c
319
lib/chips.c
@@ -2081,7 +2081,323 @@ static sensors_chip_feature adm1025_features[] =
|
|||||||
SENSORS_MODE_R, ADM1025_SYSCTL_ALARMS, VALUE(1), 0 },
|
SENSORS_MODE_R, ADM1025_SYSCTL_ALARMS, VALUE(1), 0 },
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static sensors_chip_feature adm1026_features[] = {
|
||||||
|
{ SENSORS_ADM1026_ALARMS, "alarms",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_ALARMS, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_ALARM_MASK, "alarm_mask",
|
||||||
|
SENSORS_ADM1026_ALARMS, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_ALARM_MASK, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_GPIO, "gpio",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_GPIO, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_GPIO_MASK, "gpio_mask",
|
||||||
|
SENSORS_ADM1026_GPIO, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_GPIO_MASK, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_VID, "vid",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_VID, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_VRM, "vrm",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_VRM, VALUE(1), 1 },
|
||||||
|
{ SENSORS_ADM1026_PWM, "pwm",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_PWM, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_AFC_PWM, "afc_pwm",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_PWM, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_DAC, "analog_out",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_AFC_DAC, "afc_analog_out",
|
||||||
|
SENSORS_ADM1026_DAC, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_AFC, VALUE(2), 0 },
|
||||||
|
|
||||||
|
{ SENSORS_ADM1026_IN0, "in0",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN0, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN0_MIN, "in0_min",
|
||||||
|
SENSORS_ADM1026_IN0, SENSORS_ADM1026_IN0, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN0, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN0_MAX, "in0_max",
|
||||||
|
SENSORS_ADM1026_IN0, SENSORS_ADM1026_IN0, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN0, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN1, "in1",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN1, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN1_MIN, "in1_min",
|
||||||
|
SENSORS_ADM1026_IN1, SENSORS_ADM1026_IN1, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN1, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN1_MAX, "in1_max",
|
||||||
|
SENSORS_ADM1026_IN1, SENSORS_ADM1026_IN1, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN1, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN2, "in2",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN2, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN2_MIN, "in2_min",
|
||||||
|
SENSORS_ADM1026_IN2, SENSORS_ADM1026_IN2, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN2, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN2_MAX, "in2_max",
|
||||||
|
SENSORS_ADM1026_IN2, SENSORS_ADM1026_IN2, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN2, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN3, "in3",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN3, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN3_MIN, "in3_min",
|
||||||
|
SENSORS_ADM1026_IN3, SENSORS_ADM1026_IN3, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN3, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN3_MAX, "in3_max",
|
||||||
|
SENSORS_ADM1026_IN3, SENSORS_ADM1026_IN3, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN3, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN4, "in4",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN4, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN4_MIN, "in4_min",
|
||||||
|
SENSORS_ADM1026_IN4, SENSORS_ADM1026_IN4, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN4, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN4_MAX, "in4_max",
|
||||||
|
SENSORS_ADM1026_IN4, SENSORS_ADM1026_IN4, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN4, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN5, "in5",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN5, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN5_MIN, "in5_min",
|
||||||
|
SENSORS_ADM1026_IN5, SENSORS_ADM1026_IN5, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN5, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN5_MAX, "in5_max",
|
||||||
|
SENSORS_ADM1026_IN5, SENSORS_ADM1026_IN5, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN5, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN6, "in6",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN6, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN6_MIN, "in6_min",
|
||||||
|
SENSORS_ADM1026_IN6, SENSORS_ADM1026_IN6, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN6, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN6_MAX, "in6_max",
|
||||||
|
SENSORS_ADM1026_IN6, SENSORS_ADM1026_IN6, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN6, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN7, "in7",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN7, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN7_MIN, "in7_min",
|
||||||
|
SENSORS_ADM1026_IN7, SENSORS_ADM1026_IN7, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN7, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN7_MAX, "in7_max",
|
||||||
|
SENSORS_ADM1026_IN7, SENSORS_ADM1026_IN7, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN7, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN8, "in8",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN8, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN8_MIN, "in8_min",
|
||||||
|
SENSORS_ADM1026_IN8, SENSORS_ADM1026_IN8, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN8, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN8_MAX, "in8_max",
|
||||||
|
SENSORS_ADM1026_IN8, SENSORS_ADM1026_IN8, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN8, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN9, "in9",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN9, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN9_MIN, "in9_min",
|
||||||
|
SENSORS_ADM1026_IN9, SENSORS_ADM1026_IN9, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN9, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN9_MAX, "in9_max",
|
||||||
|
SENSORS_ADM1026_IN9, SENSORS_ADM1026_IN9, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN9, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN10, "in10",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN10, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN10_MIN, "in10_min",
|
||||||
|
SENSORS_ADM1026_IN10, SENSORS_ADM1026_IN10, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN10, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN10_MAX, "in10_max",
|
||||||
|
SENSORS_ADM1026_IN10, SENSORS_ADM1026_IN10, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN10, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN11, "in11",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN11, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN11_MIN, "in11_min",
|
||||||
|
SENSORS_ADM1026_IN11, SENSORS_ADM1026_IN11, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN11, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN11_MAX, "in11_max",
|
||||||
|
SENSORS_ADM1026_IN11, SENSORS_ADM1026_IN11, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN11, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN12, "in12",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN12, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN12_MIN, "in12_min",
|
||||||
|
SENSORS_ADM1026_IN12, SENSORS_ADM1026_IN12, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN12, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN12_MAX, "in12_max",
|
||||||
|
SENSORS_ADM1026_IN12, SENSORS_ADM1026_IN12, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN12, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN13, "in13",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN13, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN13_MIN, "in13_min",
|
||||||
|
SENSORS_ADM1026_IN13, SENSORS_ADM1026_IN13, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN13, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN13_MAX, "in13_max",
|
||||||
|
SENSORS_ADM1026_IN13, SENSORS_ADM1026_IN13, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN13, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN14, "in14",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN14, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN14_MIN, "in14_min",
|
||||||
|
SENSORS_ADM1026_IN14, SENSORS_ADM1026_IN14, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN14, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN14_MAX, "in14_max",
|
||||||
|
SENSORS_ADM1026_IN14, SENSORS_ADM1026_IN14, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN14, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN15, "in15",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN15, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN15_MIN, "in15_min",
|
||||||
|
SENSORS_ADM1026_IN15, SENSORS_ADM1026_IN15, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN15, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN15_MAX, "in15_max",
|
||||||
|
SENSORS_ADM1026_IN15, SENSORS_ADM1026_IN15, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN15, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN16, "in16",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_IN16, VALUE(3), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN16_MIN, "in16_min",
|
||||||
|
SENSORS_ADM1026_IN16, SENSORS_ADM1026_IN16, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN16, VALUE(1), 3 },
|
||||||
|
{ SENSORS_ADM1026_IN16_MAX, "in16_max",
|
||||||
|
SENSORS_ADM1026_IN16, SENSORS_ADM1026_IN16, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_IN16, VALUE(2), 3 },
|
||||||
|
{ SENSORS_ADM1026_FAN0, "fan0",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_FAN0, VALUE(2), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN0_MIN, "fan0_min",
|
||||||
|
SENSORS_ADM1026_FAN0, SENSORS_ADM1026_FAN0, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN0, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN0_DIV, "fan0_div",
|
||||||
|
SENSORS_ADM1026_FAN0, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN_DIV, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN1, "fan1",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_FAN1, VALUE(2), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN1_MIN, "fan1_min",
|
||||||
|
SENSORS_ADM1026_FAN1, SENSORS_ADM1026_FAN1, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN1, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN1_DIV, "fan1_div",
|
||||||
|
SENSORS_ADM1026_FAN1, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN_DIV, VALUE(2), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN2, "fan2",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_FAN2, VALUE(2), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN2_MIN, "fan2_min",
|
||||||
|
SENSORS_ADM1026_FAN2, SENSORS_ADM1026_FAN2, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN2, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN2_DIV, "fan2_div",
|
||||||
|
SENSORS_ADM1026_FAN2, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN_DIV, VALUE(3), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN3, "fan3",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_FAN3, VALUE(2), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN3_MIN, "fan3_min",
|
||||||
|
SENSORS_ADM1026_FAN3, SENSORS_ADM1026_FAN3, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN3, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN3_DIV, "fan3_div",
|
||||||
|
SENSORS_ADM1026_FAN3, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN_DIV, VALUE(4), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN4, "fan4",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_FAN4, VALUE(2), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN4_MIN, "fan4_min",
|
||||||
|
SENSORS_ADM1026_FAN4, SENSORS_ADM1026_FAN4, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN4, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN4_DIV, "fan4_div",
|
||||||
|
SENSORS_ADM1026_FAN4, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN_DIV, VALUE(5), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN5, "fan5",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_FAN5, VALUE(2), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN5_MIN, "fan5_min",
|
||||||
|
SENSORS_ADM1026_FAN5, SENSORS_ADM1026_FAN5, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN5, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN5_DIV, "fan5_div",
|
||||||
|
SENSORS_ADM1026_FAN5, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN_DIV, VALUE(6), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN6, "fan6",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_FAN6, VALUE(2), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN6_MIN, "fan6_min",
|
||||||
|
SENSORS_ADM1026_FAN6, SENSORS_ADM1026_FAN6, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN6, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN6_DIV, "fan6_div",
|
||||||
|
SENSORS_ADM1026_FAN6, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN_DIV, VALUE(7), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN7, "fan7",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_FAN7, VALUE(2), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN7_MIN, "fan7_min",
|
||||||
|
SENSORS_ADM1026_FAN7, SENSORS_ADM1026_FAN7, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN7, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_FAN7_DIV, "fan7_div",
|
||||||
|
SENSORS_ADM1026_FAN7, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_FAN_DIV, VALUE(8), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP1, "temp1",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_TEMP1, VALUE(3), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP1_MIN, "temp1_min",
|
||||||
|
SENSORS_ADM1026_TEMP1, SENSORS_ADM1026_TEMP1, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP1, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP1_MAX, "temp1_max",
|
||||||
|
SENSORS_ADM1026_TEMP1, SENSORS_ADM1026_TEMP1, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP1, VALUE(2), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP1_OFFSET, "temp1_offset",
|
||||||
|
SENSORS_ADM1026_TEMP1, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP_OFFSET1, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP1_TMIN, "temp1_tmin",
|
||||||
|
SENSORS_ADM1026_TEMP1, SENSORS_ADM1026_TEMP1, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP_TMIN1, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP1_THERM, "temp1_therm",
|
||||||
|
SENSORS_ADM1026_TEMP1, SENSORS_ADM1026_TEMP1, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP_THERM1, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP2, "temp2",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_TEMP2, VALUE(3), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP2_MIN, "temp2_min",
|
||||||
|
SENSORS_ADM1026_TEMP2, SENSORS_ADM1026_TEMP2, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP2, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP2_MAX, "temp2_max",
|
||||||
|
SENSORS_ADM1026_TEMP2, SENSORS_ADM1026_TEMP2, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP2, VALUE(2), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP2_OFFSET, "temp2_offset",
|
||||||
|
SENSORS_ADM1026_TEMP2, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP_OFFSET2, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP2_TMIN, "temp2_tmin",
|
||||||
|
SENSORS_ADM1026_TEMP2, SENSORS_ADM1026_TEMP2, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP_TMIN2, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP2_THERM, "temp2_therm",
|
||||||
|
SENSORS_ADM1026_TEMP2, SENSORS_ADM1026_TEMP2, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP_THERM2, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP3, "temp3",
|
||||||
|
SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R,
|
||||||
|
ADM1026_SYSCTL_TEMP3, VALUE(3), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP3_MIN, "temp3_min",
|
||||||
|
SENSORS_ADM1026_TEMP3, SENSORS_ADM1026_TEMP3, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP3, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP3_MAX, "temp3_max",
|
||||||
|
SENSORS_ADM1026_TEMP3, SENSORS_ADM1026_TEMP3, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP3, VALUE(2), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP3_OFFSET, "temp3_offset",
|
||||||
|
SENSORS_ADM1026_TEMP3, SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP_OFFSET3, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP3_TMIN, "temp3_tmin",
|
||||||
|
SENSORS_ADM1026_TEMP3, SENSORS_ADM1026_TEMP3, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP_TMIN3, VALUE(1), 0 },
|
||||||
|
{ SENSORS_ADM1026_TEMP3_THERM, "temp3_therm",
|
||||||
|
SENSORS_ADM1026_TEMP3, SENSORS_ADM1026_TEMP3, SENSORS_MODE_RW,
|
||||||
|
ADM1026_SYSCTL_TEMP_THERM3, VALUE(1), 0 },
|
||||||
|
{ 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static sensors_chip_feature via686a_features[] =
|
static sensors_chip_feature via686a_features[] =
|
||||||
{
|
{
|
||||||
{ SENSORS_VIA686A_IN0, "2.0V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
{ SENSORS_VIA686A_IN0, "2.0V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
||||||
@@ -3966,6 +4282,7 @@ sensors_chip_features sensors_chip_features_list[] =
|
|||||||
/* Cheat on ADM1022 for now - no separate #defines */
|
/* Cheat on ADM1022 for now - no separate #defines */
|
||||||
{ SENSORS_ADM1022_PREFIX, thmc50_features },
|
{ SENSORS_ADM1022_PREFIX, thmc50_features },
|
||||||
{ SENSORS_ADM1025_PREFIX, adm1025_features },
|
{ SENSORS_ADM1025_PREFIX, adm1025_features },
|
||||||
|
{ SENSORS_ADM1026_PREFIX, adm1026_features },
|
||||||
{ SENSORS_VIA686A_PREFIX, via686a_features },
|
{ SENSORS_VIA686A_PREFIX, via686a_features },
|
||||||
{ SENSORS_DDCMON_PREFIX, ddcmon_features },
|
{ SENSORS_DDCMON_PREFIX, ddcmon_features },
|
||||||
{ SENSORS_EEPROM_PREFIX, eeprom_features },
|
{ SENSORS_EEPROM_PREFIX, eeprom_features },
|
||||||
|
112
lib/chips.h
112
lib/chips.h
@@ -945,6 +945,118 @@
|
|||||||
#define SENSORS_ADM1025_ALARMS 81 /* R */
|
#define SENSORS_ADM1025_ALARMS 81 /* R */
|
||||||
|
|
||||||
|
|
||||||
|
#define SENSORS_ADM1026_PREFIX "adm1026"
|
||||||
|
/* NOTE: print_adm1026 (sensors) depends on the ordering
|
||||||
|
* of these entries in each group. For example
|
||||||
|
* fan#, fan#_div, fan#_min
|
||||||
|
* temp#, temp#_max, temp#_min, temp#_offset
|
||||||
|
* and the ordering of the groups
|
||||||
|
* in0, in1, ... in9, in10, in11
|
||||||
|
*/
|
||||||
|
#define SENSORS_ADM1026_AFC_DAC 1 /* RW -- afc_analog_out */
|
||||||
|
#define SENSORS_ADM1026_AFC_PWM 2 /* RW -- afc_pwm */
|
||||||
|
#define SENSORS_ADM1026_ALARMS 3 /* R -- alarms */
|
||||||
|
#define SENSORS_ADM1026_ALARM_MASK 4 /* R -- alarm_mask */
|
||||||
|
#define SENSORS_ADM1026_DAC 5 /* RW -- analog_out */
|
||||||
|
#define SENSORS_ADM1026_GPIO 6 /* R -- gpio */
|
||||||
|
#define SENSORS_ADM1026_GPIO_MASK 7 /* R -- gpio_mask */
|
||||||
|
#define SENSORS_ADM1026_PWM 8 /* RW -- pwm */
|
||||||
|
#define SENSORS_ADM1026_VID 9 /* RW -- vid */
|
||||||
|
#define SENSORS_ADM1026_VRM 10 /* RW -- vrm */
|
||||||
|
#define SENSORS_ADM1026_FAN0 11 /* R -- fan0 */
|
||||||
|
#define SENSORS_ADM1026_FAN0_DIV 12 /* RW -- fan0_div */
|
||||||
|
#define SENSORS_ADM1026_FAN0_MIN 13 /* RW -- fan0_min */
|
||||||
|
#define SENSORS_ADM1026_FAN1 14 /* R -- fan1 */
|
||||||
|
#define SENSORS_ADM1026_FAN1_DIV 15 /* RW -- fan1_div */
|
||||||
|
#define SENSORS_ADM1026_FAN1_MIN 16 /* RW -- fan1_min */
|
||||||
|
#define SENSORS_ADM1026_FAN2 17 /* R -- fan2 */
|
||||||
|
#define SENSORS_ADM1026_FAN2_DIV 18 /* RW -- fan2_div */
|
||||||
|
#define SENSORS_ADM1026_FAN2_MIN 19 /* RW -- fan2_min */
|
||||||
|
#define SENSORS_ADM1026_FAN3 20 /* R -- fan3 */
|
||||||
|
#define SENSORS_ADM1026_FAN3_DIV 21 /* RW -- fan3_div */
|
||||||
|
#define SENSORS_ADM1026_FAN3_MIN 22 /* RW -- fan3_min */
|
||||||
|
#define SENSORS_ADM1026_FAN4 23 /* R -- fan4 */
|
||||||
|
#define SENSORS_ADM1026_FAN4_DIV 24 /* RW -- fan4_div */
|
||||||
|
#define SENSORS_ADM1026_FAN4_MIN 25 /* RW -- fan4_min */
|
||||||
|
#define SENSORS_ADM1026_FAN5 26 /* R -- fan5 */
|
||||||
|
#define SENSORS_ADM1026_FAN5_DIV 27 /* RW -- fan5_div */
|
||||||
|
#define SENSORS_ADM1026_FAN5_MIN 28 /* RW -- fan5_min */
|
||||||
|
#define SENSORS_ADM1026_FAN6 29 /* R -- fan6 */
|
||||||
|
#define SENSORS_ADM1026_FAN6_DIV 30 /* RW -- fan6_div */
|
||||||
|
#define SENSORS_ADM1026_FAN6_MIN 31 /* RW -- fan6_min */
|
||||||
|
#define SENSORS_ADM1026_FAN7 32 /* R -- fan7 */
|
||||||
|
#define SENSORS_ADM1026_FAN7_DIV 33 /* RW -- fan7_div */
|
||||||
|
#define SENSORS_ADM1026_FAN7_MIN 34 /* RW -- fan7_min */
|
||||||
|
#define SENSORS_ADM1026_IN0 35 /* R -- in0 */
|
||||||
|
#define SENSORS_ADM1026_IN0_MAX 36 /* RW -- in0_max */
|
||||||
|
#define SENSORS_ADM1026_IN0_MIN 37 /* RW -- in0_min */
|
||||||
|
#define SENSORS_ADM1026_IN1 38 /* R -- in1 */
|
||||||
|
#define SENSORS_ADM1026_IN1_MAX 39 /* RW -- in1_max */
|
||||||
|
#define SENSORS_ADM1026_IN1_MIN 40 /* RW -- in1_min */
|
||||||
|
#define SENSORS_ADM1026_IN2 41 /* R -- in2 */
|
||||||
|
#define SENSORS_ADM1026_IN2_MAX 42 /* RW -- in2_max */
|
||||||
|
#define SENSORS_ADM1026_IN2_MIN 43 /* RW -- in2_min */
|
||||||
|
#define SENSORS_ADM1026_IN3 44 /* R -- in3 */
|
||||||
|
#define SENSORS_ADM1026_IN3_MAX 45 /* RW -- in3_max */
|
||||||
|
#define SENSORS_ADM1026_IN3_MIN 46 /* RW -- in3_min */
|
||||||
|
#define SENSORS_ADM1026_IN4 47 /* R -- in4 */
|
||||||
|
#define SENSORS_ADM1026_IN4_MAX 48 /* RW -- in4_max */
|
||||||
|
#define SENSORS_ADM1026_IN4_MIN 49 /* RW -- in4_min */
|
||||||
|
#define SENSORS_ADM1026_IN5 50 /* R -- in5 */
|
||||||
|
#define SENSORS_ADM1026_IN5_MAX 51 /* RW -- in5_max */
|
||||||
|
#define SENSORS_ADM1026_IN5_MIN 52 /* RW -- in5_min */
|
||||||
|
#define SENSORS_ADM1026_IN6 53 /* R -- in6 */
|
||||||
|
#define SENSORS_ADM1026_IN6_MAX 54 /* RW -- in6_max */
|
||||||
|
#define SENSORS_ADM1026_IN6_MIN 55 /* RW -- in6_min */
|
||||||
|
#define SENSORS_ADM1026_IN7 56 /* R -- in7 */
|
||||||
|
#define SENSORS_ADM1026_IN7_MAX 57 /* RW -- in7_max */
|
||||||
|
#define SENSORS_ADM1026_IN7_MIN 58 /* RW -- in7_min */
|
||||||
|
#define SENSORS_ADM1026_IN8 59 /* R -- in8 */
|
||||||
|
#define SENSORS_ADM1026_IN8_MAX 60 /* RW -- in8_max */
|
||||||
|
#define SENSORS_ADM1026_IN8_MIN 61 /* RW -- in8_min */
|
||||||
|
#define SENSORS_ADM1026_IN9 62 /* R -- in9 */
|
||||||
|
#define SENSORS_ADM1026_IN9_MAX 63 /* RW -- in9_max */
|
||||||
|
#define SENSORS_ADM1026_IN9_MIN 64 /* RW -- in9_min */
|
||||||
|
#define SENSORS_ADM1026_IN10 65 /* R -- in10 */
|
||||||
|
#define SENSORS_ADM1026_IN10_MAX 66 /* RW -- in10_max */
|
||||||
|
#define SENSORS_ADM1026_IN10_MIN 67 /* RW -- in10_min */
|
||||||
|
#define SENSORS_ADM1026_IN11 68 /* R -- in11 */
|
||||||
|
#define SENSORS_ADM1026_IN11_MAX 69 /* RW -- in11_max */
|
||||||
|
#define SENSORS_ADM1026_IN11_MIN 70 /* RW -- in11_min */
|
||||||
|
#define SENSORS_ADM1026_IN12 71 /* R -- in12 */
|
||||||
|
#define SENSORS_ADM1026_IN12_MAX 72 /* RW -- in12_max */
|
||||||
|
#define SENSORS_ADM1026_IN12_MIN 73 /* RW -- in12_min */
|
||||||
|
#define SENSORS_ADM1026_IN13 74 /* R -- in13 */
|
||||||
|
#define SENSORS_ADM1026_IN13_MAX 75 /* RW -- in13_max */
|
||||||
|
#define SENSORS_ADM1026_IN13_MIN 76 /* RW -- in13_min */
|
||||||
|
#define SENSORS_ADM1026_IN14 77 /* R -- in14 */
|
||||||
|
#define SENSORS_ADM1026_IN14_MAX 78 /* RW -- in14_max */
|
||||||
|
#define SENSORS_ADM1026_IN14_MIN 79 /* RW -- in14_min */
|
||||||
|
#define SENSORS_ADM1026_IN15 80 /* R -- in15 */
|
||||||
|
#define SENSORS_ADM1026_IN15_MAX 81 /* RW -- in15_max */
|
||||||
|
#define SENSORS_ADM1026_IN15_MIN 82 /* RW -- in15_min */
|
||||||
|
#define SENSORS_ADM1026_IN16 83 /* R -- in16 */
|
||||||
|
#define SENSORS_ADM1026_IN16_MAX 84 /* RW -- in16_max */
|
||||||
|
#define SENSORS_ADM1026_IN16_MIN 85 /* RW -- in16_min */
|
||||||
|
#define SENSORS_ADM1026_TEMP1 86 /* R -- temp1 */
|
||||||
|
#define SENSORS_ADM1026_TEMP1_MAX 87 /* RW -- temp1_max */
|
||||||
|
#define SENSORS_ADM1026_TEMP1_MIN 88 /* RW -- temp1_min */
|
||||||
|
#define SENSORS_ADM1026_TEMP1_OFFSET 89 /* RW -- temp1_offset */
|
||||||
|
#define SENSORS_ADM1026_TEMP1_THERM 90 /* RW -- temp1_therm */
|
||||||
|
#define SENSORS_ADM1026_TEMP1_TMIN 91 /* RW -- temp1_tmin */
|
||||||
|
#define SENSORS_ADM1026_TEMP2 92 /* R -- temp2 */
|
||||||
|
#define SENSORS_ADM1026_TEMP2_MAX 93 /* RW -- temp2_max */
|
||||||
|
#define SENSORS_ADM1026_TEMP2_MIN 94 /* RW -- temp2_min */
|
||||||
|
#define SENSORS_ADM1026_TEMP2_OFFSET 95 /* RW -- temp2_offset */
|
||||||
|
#define SENSORS_ADM1026_TEMP2_THERM 96 /* RW -- temp2_therm */
|
||||||
|
#define SENSORS_ADM1026_TEMP2_TMIN 97 /* RW -- temp2_tmin */
|
||||||
|
#define SENSORS_ADM1026_TEMP3 98 /* R -- temp3 */
|
||||||
|
#define SENSORS_ADM1026_TEMP3_MAX 99 /* RW -- temp3_max */
|
||||||
|
#define SENSORS_ADM1026_TEMP3_MIN 100 /* RW -- temp3_min */
|
||||||
|
#define SENSORS_ADM1026_TEMP3_OFFSET 101 /* RW -- temp3_offset */
|
||||||
|
#define SENSORS_ADM1026_TEMP3_THERM 102 /* RW -- temp3_therm */
|
||||||
|
#define SENSORS_ADM1026_TEMP3_TMIN 103 /* RW -- temp3_tmin */
|
||||||
|
|
||||||
|
|
||||||
#define SENSORS_VIA686A_PREFIX "via686a"
|
#define SENSORS_VIA686A_PREFIX "via686a"
|
||||||
|
|
||||||
|
@@ -183,6 +183,7 @@ int sensors_write_proc(sensors_chip_name name, int feature, double value)
|
|||||||
sysctl_name[3] = the_feature->sysctl;
|
sysctl_name[3] = the_feature->sysctl;
|
||||||
if (sysctl(sysctl_name, 4, buf, &buflen, NULL, 0))
|
if (sysctl(sysctl_name, 4, buf, &buflen, NULL, 0))
|
||||||
return -SENSORS_ERR_PROC;
|
return -SENSORS_ERR_PROC;
|
||||||
|
if (sysctl_name[0] != CTL_DEV) { sysctl_name[0] = CTL_DEV ; }
|
||||||
for (mag = the_feature->scaling; mag > 0; mag --)
|
for (mag = the_feature->scaling; mag > 0; mag --)
|
||||||
value *= 10.0;
|
value *= 10.0;
|
||||||
for (; mag < 0; mag ++)
|
for (; mag < 0; mag ++)
|
||||||
|
@@ -15,6 +15,7 @@ if [ "$CONFIG_I2C_PROC" = "m" -o "$CONFIG_I2C_PROC" = "y" ] ; then
|
|||||||
dep_tristate ' Analog Devices ADM1021 and compatibles' CONFIG_SENSORS_ADM1021 $CONFIG_I2C $CONFIG_I2C_PROC
|
dep_tristate ' Analog Devices ADM1021 and compatibles' CONFIG_SENSORS_ADM1021 $CONFIG_I2C $CONFIG_I2C_PROC
|
||||||
dep_tristate ' Analog Devices ADM1024' CONFIG_SENSORS_ADM1024 $CONFIG_I2C $CONFIG_I2C_PROC
|
dep_tristate ' Analog Devices ADM1024' CONFIG_SENSORS_ADM1024 $CONFIG_I2C $CONFIG_I2C_PROC
|
||||||
dep_tristate ' Analog Devices ADM1025' CONFIG_SENSORS_ADM1025 $CONFIG_I2C $CONFIG_I2C_PROC
|
dep_tristate ' Analog Devices ADM1025' CONFIG_SENSORS_ADM1025 $CONFIG_I2C $CONFIG_I2C_PROC
|
||||||
|
dep_tristate ' Analog Devices ADM1026' CONFIG_SENSORS_ADM1026 $CONFIG_I2C $CONFIG_I2C_PROC
|
||||||
dep_tristate ' Analog Devices ADM9240 and compatibles' CONFIG_SENSORS_ADM9240 $CONFIG_I2C $CONFIG_I2C_PROC
|
dep_tristate ' Analog Devices ADM9240 and compatibles' CONFIG_SENSORS_ADM9240 $CONFIG_I2C $CONFIG_I2C_PROC
|
||||||
dep_tristate ' Dallas DS1621 and DS1625' CONFIG_SENSORS_DS1621 $CONFIG_I2C $CONFIG_I2C_PROC
|
dep_tristate ' Dallas DS1621 and DS1625' CONFIG_SENSORS_DS1621 $CONFIG_I2C $CONFIG_I2C_PROC
|
||||||
dep_tristate ' Fujitsu-Siemens Poseidon' CONFIG_SENSORS_FSCPOS $CONFIG_I2C $CONFIG_I2C_PROC
|
dep_tristate ' Fujitsu-Siemens Poseidon' CONFIG_SENSORS_FSCPOS $CONFIG_I2C $CONFIG_I2C_PROC
|
||||||
|
@@ -21,6 +21,7 @@ kernel/sensors.c drivers/sensors/sensors.c
|
|||||||
kernel/chips/adm1021.c drivers/sensors/adm1021.c
|
kernel/chips/adm1021.c drivers/sensors/adm1021.c
|
||||||
kernel/chips/adm1024.c drivers/sensors/adm1024.c
|
kernel/chips/adm1024.c drivers/sensors/adm1024.c
|
||||||
kernel/chips/adm1025.c drivers/sensors/adm1025.c
|
kernel/chips/adm1025.c drivers/sensors/adm1025.c
|
||||||
|
kernel/chips/adm1026.c drivers/sensors/adm1026.c
|
||||||
kernel/chips/adm9240.c drivers/sensors/adm9240.c
|
kernel/chips/adm9240.c drivers/sensors/adm9240.c
|
||||||
kernel/chips/bt869.c drivers/sensors/bt869.c
|
kernel/chips/bt869.c drivers/sensors/bt869.c
|
||||||
kernel/chips/ddcmon.c drivers/sensors/ddcmon.c
|
kernel/chips/ddcmon.c drivers/sensors/ddcmon.c
|
||||||
|
@@ -94,6 +94,7 @@ sub gen_Documentation_Configure_help
|
|||||||
m@Analog Devices ADM1021 and compatibles@ or
|
m@Analog Devices ADM1021 and compatibles@ or
|
||||||
m@Analog Devices ADM1024@ or
|
m@Analog Devices ADM1024@ or
|
||||||
m@Analog Devices ADM1025@ or
|
m@Analog Devices ADM1025@ or
|
||||||
|
m@Analog Devices ADM1026@ or
|
||||||
m@Analog Devices ADM9240 and compatibles@ or
|
m@Analog Devices ADM9240 and compatibles@ or
|
||||||
m@Dallas DS1621 and DS1625@ or
|
m@Dallas DS1621 and DS1625@ or
|
||||||
m@Fujitsu-Siemens Poseidon@ or
|
m@Fujitsu-Siemens Poseidon@ or
|
||||||
@@ -106,6 +107,7 @@ sub gen_Documentation_Configure_help
|
|||||||
m@National Semiconductors LM75 and compatibles@ or
|
m@National Semiconductors LM75 and compatibles@ or
|
||||||
m@National Semiconductors LM78@ or
|
m@National Semiconductors LM78@ or
|
||||||
m@National Semiconductors LM80@ or
|
m@National Semiconductors LM80@ or
|
||||||
|
m@National Semiconductors LM85 and compatibles@ or
|
||||||
m@National Semiconductors LM87@ or
|
m@National Semiconductors LM87@ or
|
||||||
m@Silicon Integrated Systems Corp. SiS5595 Sensor@ or
|
m@Silicon Integrated Systems Corp. SiS5595 Sensor@ or
|
||||||
m@Texas Instruments THMC50 / Analog Devices ADM1022@ or
|
m@Texas Instruments THMC50 / Analog Devices ADM1022@ or
|
||||||
@@ -283,6 +285,16 @@ CONFIG_SENSORS_ADM1025
|
|||||||
in the lm_sensors package, which you can download at
|
in the lm_sensors package, which you can download at
|
||||||
http://www.lm-sensors.nu
|
http://www.lm-sensors.nu
|
||||||
|
|
||||||
|
Analog Devices ADM1026
|
||||||
|
CONFIG_SENSORS_ADM1026
|
||||||
|
If you say yes here you get support for Analog Devices ADM1026 sensor
|
||||||
|
chips. This can also be built as a module which can be inserted and
|
||||||
|
removed while the kernel is running.
|
||||||
|
|
||||||
|
You will also need the latest user-space utilties: you can find them
|
||||||
|
in the lm_sensors package, which you can download at
|
||||||
|
http://www.lm-sensors.nu
|
||||||
|
|
||||||
Analog Devices ADM9240 and compatibles
|
Analog Devices ADM9240 and compatibles
|
||||||
CONFIG_SENSORS_ADM9240
|
CONFIG_SENSORS_ADM9240
|
||||||
If you say yes here you get support for Analog Devices ADM9240
|
If you say yes here you get support for Analog Devices ADM9240
|
||||||
@@ -406,6 +418,18 @@ CONFIG_SENSORS_LM80
|
|||||||
in the lm_sensors package, which you can download at
|
in the lm_sensors package, which you can download at
|
||||||
http://www.lm-sensors.nu
|
http://www.lm-sensors.nu
|
||||||
|
|
||||||
|
National Semiconductor LM85
|
||||||
|
CONFIG_SENSORS_LM85
|
||||||
|
If you say yes here you get support for National Semiconductor LM85
|
||||||
|
sensor chips and compatibles. Compatible chips include the Analog
|
||||||
|
Devices ADM1027 and ADT7463 and SMSC EMC6D100 and EMC6D101. This
|
||||||
|
can also be built as a module which can be inserted and removed
|
||||||
|
while the kernel is running.
|
||||||
|
|
||||||
|
You will also need the latest user-space utilties: you can find them
|
||||||
|
in the lm_sensors package, which you can download at
|
||||||
|
http://www.lm-sensors.nu
|
||||||
|
|
||||||
National Semiconductor LM87
|
National Semiconductor LM87
|
||||||
CONFIG_SENSORS_LM87
|
CONFIG_SENSORS_LM87
|
||||||
If you say yes here you get support for National Semiconductor LM87
|
If you say yes here you get support for National Semiconductor LM87
|
||||||
@@ -873,6 +897,7 @@ obj-$(CONFIG_SENSORS) += sensors.o
|
|||||||
obj-$(CONFIG_SENSORS_ADM1021) += adm1021.o
|
obj-$(CONFIG_SENSORS_ADM1021) += adm1021.o
|
||||||
obj-$(CONFIG_SENSORS_ADM1024) += adm1024.o
|
obj-$(CONFIG_SENSORS_ADM1024) += adm1024.o
|
||||||
obj-$(CONFIG_SENSORS_ADM1025) += adm1025.o
|
obj-$(CONFIG_SENSORS_ADM1025) += adm1025.o
|
||||||
|
obj-$(CONFIG_SENSORS_ADM1026) += adm1026.o
|
||||||
obj-$(CONFIG_SENSORS_ADM9240) += adm9240.o
|
obj-$(CONFIG_SENSORS_ADM9240) += adm9240.o
|
||||||
obj-$(CONFIG_SENSORS_BT869) += bt869.o
|
obj-$(CONFIG_SENSORS_BT869) += bt869.o
|
||||||
obj-$(CONFIG_SENSORS_DDCMON) += ddcmon.o
|
obj-$(CONFIG_SENSORS_DDCMON) += ddcmon.o
|
||||||
@@ -957,6 +982,14 @@ else
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_SENSORS_ADM1026),y)
|
||||||
|
L_OBJS += adm1026.o
|
||||||
|
else
|
||||||
|
ifeq ($(CONFIG_SENSORS_ADM1026),m)
|
||||||
|
M_OBJS += adm1026.o
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_SENSORS_ADM9240),y)
|
ifeq ($(CONFIG_SENSORS_ADM9240),y)
|
||||||
L_OBJS += adm9240.o
|
L_OBJS += adm9240.o
|
||||||
else
|
else
|
||||||
@@ -1053,6 +1086,14 @@ else
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_SENSORS_LM85),y)
|
||||||
|
L_OBJS += lm85.o
|
||||||
|
else
|
||||||
|
ifeq ($(CONFIG_SENSORS_LM85),m)
|
||||||
|
M_OBJS += lm85.o
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_SENSORS_LM87),y)
|
ifeq ($(CONFIG_SENSORS_LM87),y)
|
||||||
L_OBJS += lm87.o
|
L_OBJS += lm87.o
|
||||||
else
|
else
|
||||||
|
@@ -761,7 +761,8 @@ use subs qw(mtp008_detect lm78_detect lm78_isa_detect lm78_alias_detect
|
|||||||
lm87_detect ite_detect ite_isa_detect ite_alias_detect
|
lm87_detect ite_detect ite_isa_detect ite_alias_detect
|
||||||
ddcmonitor_detect ds1621_detect adm1024_detect fscpos_detect
|
ddcmonitor_detect ds1621_detect adm1024_detect fscpos_detect
|
||||||
fscscy_detect pcf8591_detect arp_detect ipmi_kcs_detect
|
fscscy_detect pcf8591_detect arp_detect ipmi_kcs_detect
|
||||||
ipmi_smic_detect via8231_isa_detect lm85_detect smartbatt_detect);
|
ipmi_smic_detect via8231_isa_detect lm85_detect smartbatt_detect
|
||||||
|
adm1026_detect);
|
||||||
|
|
||||||
# This is a list of all recognized chips.
|
# This is a list of all recognized chips.
|
||||||
# Each entry must have the following fields:
|
# Each entry must have the following fields:
|
||||||
@@ -955,6 +956,12 @@ use subs qw(mtp008_detect lm78_detect lm78_isa_detect lm78_alias_detect
|
|||||||
i2c_addrs => [0x2c..0x2f],
|
i2c_addrs => [0x2c..0x2f],
|
||||||
i2c_detect => sub { adm9240_detect 2, @_ }
|
i2c_detect => sub { adm9240_detect 2, @_ }
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name => "Analog Devices ADM1026",
|
||||||
|
driver => "adm1026",
|
||||||
|
i2c_addrs => [0x2c,0x2d,0x2e],
|
||||||
|
i2c_detect => sub { adm1026_detect 0, @_ }
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name => "Analog Devices ADM1025",
|
name => "Analog Devices ADM1025",
|
||||||
driver => "adm1025",
|
driver => "adm1025",
|
||||||
@@ -2525,6 +2532,24 @@ sub adm1025_detect
|
|||||||
return (8);
|
return (8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# $_[0]: Chip to detect (0 = ADM1026)
|
||||||
|
# $_[1]: A reference to the file descriptor to access this chip.
|
||||||
|
# We may assume an i2c_set_slave_addr was already done.
|
||||||
|
# $_[2]: Address
|
||||||
|
# Returns: undef if not detected, (8) if detected.
|
||||||
|
# Registers used:
|
||||||
|
# 0x16: Company ID
|
||||||
|
# 0x17: Revision
|
||||||
|
sub adm1026_detect
|
||||||
|
{
|
||||||
|
my $reg;
|
||||||
|
my ($chip, $file,$addr) = @_;
|
||||||
|
$reg = i2c_smbus_read_byte_data($file,0x16);
|
||||||
|
return unless ($reg == 0x41);
|
||||||
|
return unless (i2c_smbus_read_byte_data($file,0x17) & 0xf0) == 0x40;
|
||||||
|
return (8);
|
||||||
|
}
|
||||||
|
|
||||||
# $_[0]: Chip to detect (0 = ADM1024)
|
# $_[0]: Chip to detect (0 = ADM1024)
|
||||||
# $_[1]: A reference to the file descriptor to access this chip.
|
# $_[1]: A reference to the file descriptor to access this chip.
|
||||||
# We may assume an i2c_set_slave_addr was already done.
|
# We may assume an i2c_set_slave_addr was already done.
|
||||||
|
@@ -3967,6 +3967,112 @@ void print_bmc(const sensors_chip_name *name)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static long adm1026_alarms_in[] = {
|
||||||
|
ADM1026_ALARM_IN0, ADM1026_ALARM_IN1, ADM1026_ALARM_IN2,
|
||||||
|
ADM1026_ALARM_IN3, ADM1026_ALARM_IN4, ADM1026_ALARM_IN5,
|
||||||
|
ADM1026_ALARM_IN6, ADM1026_ALARM_IN7, ADM1026_ALARM_IN8,
|
||||||
|
ADM1026_ALARM_IN9, ADM1026_ALARM_IN10, ADM1026_ALARM_IN11,
|
||||||
|
ADM1026_ALARM_IN12, ADM1026_ALARM_IN13, ADM1026_ALARM_IN14,
|
||||||
|
ADM1026_ALARM_IN15, ADM1026_ALARM_IN16
|
||||||
|
};
|
||||||
|
static long adm1026_alarms_temp[] = {
|
||||||
|
ADM1026_ALARM_TEMP1, ADM1026_ALARM_TEMP2, ADM1026_ALARM_TEMP3
|
||||||
|
};
|
||||||
|
|
||||||
|
void print_adm1026(const sensors_chip_name *name)
|
||||||
|
{
|
||||||
|
char *label = NULL;
|
||||||
|
double cur,min,max;
|
||||||
|
long alarms, gpio;
|
||||||
|
int valid, i;
|
||||||
|
|
||||||
|
if (!sensors_get_feature(*name,SENSORS_ADM1026_ALARMS,&cur)) {
|
||||||
|
alarms = cur + 0.5;
|
||||||
|
} else {
|
||||||
|
printf("ERROR: Can't get alarm data!\n");
|
||||||
|
alarms = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Seventeen voltage sensors */
|
||||||
|
for (i = 0; i <= 16 ; ++i) {
|
||||||
|
int feat_base = SENSORS_ADM1026_IN0 + (3 * i);
|
||||||
|
int feat_max = feat_base +1, feat_min = feat_base +2;
|
||||||
|
if (!sensors_get_label_and_valid(*name,feat_base,&label,&valid) &&
|
||||||
|
!sensors_get_feature(*name,feat_base,&cur) &&
|
||||||
|
!sensors_get_feature(*name,feat_min,&min) &&
|
||||||
|
!sensors_get_feature(*name,feat_max,&max)) {
|
||||||
|
if (valid) {
|
||||||
|
print_label(label,10);
|
||||||
|
printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n",
|
||||||
|
cur,min,max,(alarms&adm1026_alarms_in[i])?"ALARM":"");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
printf("ERROR: Can't get IN%d data!\n",i);
|
||||||
|
}
|
||||||
|
free_the_label(&label);
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Eight fan sensors */
|
||||||
|
for (i = 0; i <= 7 ; ++i) {
|
||||||
|
int feat_base = SENSORS_ADM1026_FAN0 + (3 * i);
|
||||||
|
int feat_div = feat_base +1, feat_min = feat_base +2;
|
||||||
|
if (!sensors_get_label_and_valid(*name,feat_base,&label,&valid) &&
|
||||||
|
!sensors_get_feature(*name,feat_base,&cur) &&
|
||||||
|
!sensors_get_feature(*name,feat_min,&min) &&
|
||||||
|
!sensors_get_feature(*name,feat_div,&max)) {
|
||||||
|
if (valid) {
|
||||||
|
print_label(label,10);
|
||||||
|
printf("%4.0f RPM (min = %4.0f RPM, div = %1.0f) %s\n",
|
||||||
|
cur,min,max,(alarms&(ADM1026_ALARM_FAN0<<i))?"ALARM":"");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
printf("ERROR: Can't get FAN%d data!\n",i);
|
||||||
|
}
|
||||||
|
free_the_label(&label);
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Three temperature sensors
|
||||||
|
* NOTE: 6 config values per temperature
|
||||||
|
* 0 current
|
||||||
|
* 1 max
|
||||||
|
* 2 min
|
||||||
|
* 3 offset (to current)
|
||||||
|
* 4 therm (SMBAlert)
|
||||||
|
* 5 tmin (AFC)
|
||||||
|
*/
|
||||||
|
for (i = 0; i <= 2 ; ++i) {
|
||||||
|
int feat_base = SENSORS_ADM1026_TEMP1 + (6 * i);
|
||||||
|
int feat_max = feat_base +1;
|
||||||
|
int feat_min = feat_base +2;
|
||||||
|
|
||||||
|
if (!sensors_get_label_and_valid(*name,feat_base,&label,&valid) &&
|
||||||
|
!sensors_get_feature(*name,feat_base,&cur) &&
|
||||||
|
!sensors_get_feature(*name,feat_min,&min) &&
|
||||||
|
!sensors_get_feature(*name,feat_max,&max)) {
|
||||||
|
if (valid) {
|
||||||
|
print_label(label,10);
|
||||||
|
print_temp_info( cur, max, min, MINMAX, 0, 0);
|
||||||
|
puts( (alarms&adm1026_alarms_temp[i])?" ALARM":"" );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
printf("ERROR: Can't get TEMP%d data!\n",i+1);
|
||||||
|
}
|
||||||
|
free_the_label(&label);
|
||||||
|
};
|
||||||
|
|
||||||
|
/* VID/VRM */
|
||||||
|
if (!sensors_get_label_and_valid(*name,SENSORS_ADM1026_VID,&label,&valid)
|
||||||
|
&& !sensors_get_feature(*name,SENSORS_ADM1026_VID,&cur)
|
||||||
|
&& !sensors_get_feature(*name,SENSORS_ADM1026_VRM,&min) ) {
|
||||||
|
if (valid) {
|
||||||
|
print_label(label,10);
|
||||||
|
printf("%+6.3f V (VRM Version %4.1f)\n",cur,min);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free_the_label(&label);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void print_unknown_chip(const sensors_chip_name *name)
|
void print_unknown_chip(const sensors_chip_name *name)
|
||||||
{
|
{
|
||||||
int a,b,valid;
|
int a,b,valid;
|
||||||
|
@@ -28,8 +28,9 @@ extern void print_ds1621(const sensors_chip_name *name);
|
|||||||
extern void print_mtp008(const sensors_chip_name *name);
|
extern void print_mtp008(const sensors_chip_name *name);
|
||||||
extern void print_lm75(const sensors_chip_name *name);
|
extern void print_lm75(const sensors_chip_name *name);
|
||||||
extern void print_adm1021(const sensors_chip_name *name);
|
extern void print_adm1021(const sensors_chip_name *name);
|
||||||
extern void print_adm1025(const sensors_chip_name *name);
|
|
||||||
extern void print_adm1024(const sensors_chip_name *name);
|
extern void print_adm1024(const sensors_chip_name *name);
|
||||||
|
extern void print_adm1025(const sensors_chip_name *name);
|
||||||
|
extern void print_adm1026(const sensors_chip_name *name);
|
||||||
extern void print_adm9240(const sensors_chip_name *name);
|
extern void print_adm9240(const sensors_chip_name *name);
|
||||||
extern void print_lm78(const sensors_chip_name *name);
|
extern void print_lm78(const sensors_chip_name *name);
|
||||||
extern void print_sis5595(const sensors_chip_name *name);
|
extern void print_sis5595(const sensors_chip_name *name);
|
||||||
|
@@ -366,6 +366,8 @@ void do_a_print(sensors_chip_name name)
|
|||||||
print_vt8231(&name);
|
print_vt8231(&name);
|
||||||
else if (!strcmp(name.prefix,"bmc"))
|
else if (!strcmp(name.prefix,"bmc"))
|
||||||
print_bmc(&name);
|
print_bmc(&name);
|
||||||
|
else if (!strcmp(name.prefix,"adm1026"))
|
||||||
|
print_adm1026(&name);
|
||||||
else
|
else
|
||||||
print_unknown_chip(&name);
|
print_unknown_chip(&name);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
Reference in New Issue
Block a user