mirror of
https://github.com/lm-sensors/lm-sensors
synced 2025-09-02 07:15:39 +00:00
Documentation updates, small bug fixes
I am trying to create a more-or-less standard documentation format for doc/chips/* files. I am not quite satisfied with the lm75 and lm78 docs yet, but it is starting to come. Basically, I want as much information in it as possible, and to generate most of it automatically. But that is harder than I though it would be. Also, a small library bugfix (class problem) and a doc-features fix. git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@210 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
@@ -1,24 +1,29 @@
|
|||||||
This file documents the lm75 directories.
|
Kernel driver `lm75.o'
|
||||||
|
|
||||||
There will be one directory created for each detected LM75 chip. As LM75
|
Prefixes: lm75 (LM75, I2C)
|
||||||
chips can only be on a SMBus, they will be called lm75-i2c-?-??, with
|
|
||||||
the first question mark being the number of the i2c bus (see /proc/bus/i2c
|
|
||||||
for a list of them, if i2c-proc is loaded), and the SMBus (I2C) address
|
|
||||||
of the chip at the end. An LM75 is uniquely characterised with these
|
|
||||||
two numbers. /proc/sys/dev/sensors/chips contains the SYSCTL values for
|
|
||||||
all chip directories.
|
|
||||||
|
|
||||||
Within each LM75 directory, you can find the following files:
|
This driver implements support for the National Semiconductor LM75, a
|
||||||
* temp (LM75_SYSCTL_TEMP)
|
`Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface'.
|
||||||
A list of three numbers. The first number is the Overtemperature Shutdown
|
|
||||||
value, the second number is Hysteris value, and the third number is the
|
|
||||||
current temperature. The first two values can be modified. Each value can
|
|
||||||
be set and read to half-degree accuracy. All values are in degrees Celcius.
|
|
||||||
An alarm is issued (usually to a connected LM78) when the temperature
|
|
||||||
gets higher then the Overtemperature Shutdown value; it stays on until
|
|
||||||
the temperature falls below the Hysteris value.
|
|
||||||
If accessed through sysctl, this is a list of longs, each being the
|
|
||||||
temperature times 10.
|
|
||||||
|
|
||||||
The data for each LM75 is updated each 1.5 seconds, but only if it is actually
|
The LM75 implements one temperature sensor. Limits can be set through the
|
||||||
read.
|
Overtemperature Shutdown register and Hysteris register. Each value can be
|
||||||
|
set and read to half-degree accuracy.
|
||||||
|
An alarm is issued (usually to a connected LM78) when the temperature
|
||||||
|
gets higher then the Overtemperature Shutdown value; it stays on until
|
||||||
|
the temperature falls below the Hysteris value.
|
||||||
|
All temperatures are in degrees Celcius.
|
||||||
|
|
||||||
|
The LM75 only updates its values each 1.5 seconds; reading it more often
|
||||||
|
will do no harm, but will return 'old' values.
|
||||||
|
|
||||||
|
|
||||||
|
/proc and sysctl interface files:
|
||||||
|
* temp (LM75_SYSCTL_TEMP)
|
||||||
|
Overtemperature Shutdown Value (RW,1), Hysteris Value (RW,1) and Current
|
||||||
|
Temperature (R,1).
|
||||||
|
|
||||||
|
configuration file features:
|
||||||
|
NAME LABEL CLASS COMPUTE CLASS RW
|
||||||
|
temp: R
|
||||||
|
temp_hyst: temp temp RW
|
||||||
|
temp_over: temp temp RW
|
||||||
|
204
doc/chips/lm78
204
doc/chips/lm78
@@ -1,89 +1,121 @@
|
|||||||
This file documents the lm78 directories.
|
Kernel driver `lm78.o'
|
||||||
|
|
||||||
There will be one directory created for each detected LM78, LM78-J or LM79
|
Prefixes: lm78 (LM78, I2C and ISA)
|
||||||
chip. Each chip can both be on the ISA bus and the SMBus. Directories
|
lm78-j (LM78-J, I2C and ISA)
|
||||||
are called things like lm78-isa-0290, lm78-j-i2c-3-4e or lm79-isa-0280.
|
lm79 (LM79, I2C and ISA)
|
||||||
/proc/sys/dev/sensors/chips contains the SYSCTL values for all chip
|
|
||||||
directories.
|
|
||||||
|
|
||||||
Within each LM78 directory, you can find the following files:
|
This driver implements support for the National Semiconductor LM78, LM78-J
|
||||||
* alarms (LM78_SYSCTL_ALARMS)
|
and LM79. They are described as `Microprocessor System Hardware Monitors'.
|
||||||
A number which indicates which alarms are on. An alarm gets triggered when
|
|
||||||
some limit has been crossed. Even if the cause of the alarm is over, it
|
|
||||||
stays triggered until it has been read at least once. Because the LM78
|
|
||||||
values are updated at most once every 1.5 seconds, this means the alarm
|
|
||||||
can be read several times before it is erased.
|
|
||||||
This file can not be written to.
|
|
||||||
The number is the logical OR of the following components:
|
|
||||||
- LM78_ALARM_IN[0-6]
|
|
||||||
Gets triggered when the corresponding in value is higher or lower than
|
|
||||||
its limits
|
|
||||||
- LM78_ALARM_FAN[1-3]
|
|
||||||
Gets triggered when the corresponding fan value is lower than its limit
|
|
||||||
- LM78_ALARM_TEMP
|
|
||||||
Gets triggered when the temp value has crossed its limits. See the
|
|
||||||
description under temp.
|
|
||||||
- LM78_ALARM_BTI
|
|
||||||
Gets triggered if some other chip which is connected to it has crossed
|
|
||||||
its limits. Usually, it is connected to all LM75 chips; if at least one
|
|
||||||
crosses its limits, this bit gets set.
|
|
||||||
- LM78_ALARM_CHAS
|
|
||||||
Gets triggered if someone opens your computer case (if connected at all).
|
|
||||||
- LM78_ALARM_FIFO
|
|
||||||
Gets triggered if something is very wrong with our LM78 driver. Ignore.
|
|
||||||
- LM78_ALARM_SMI_IN
|
|
||||||
Gets triggered if some other chip has triggered a SMI interrupt. Can be
|
|
||||||
ignored.
|
|
||||||
If accessed through sysctl, this value is a long.
|
|
||||||
* fan[1-3] (LM78_SYSCTL_FAN[1-3])
|
|
||||||
A list of two numbers. The first is the minimum fan rotation limit; the
|
|
||||||
second is the current fan rotation speed. Both are in RPM (rotation per
|
|
||||||
minute). An alarm is triggered if the rotation speed drops below the
|
|
||||||
limit. The first value can be changed. Not all RPM values can accurately
|
|
||||||
be represented, so some rounding is done.
|
|
||||||
If accessed through sysctl, this is a list of longs.
|
|
||||||
* fan_div (LM78_SYSCTL_FAN_DIV)
|
|
||||||
A list of three numbers, one for each fan. Each number can be either 1, 2,
|
|
||||||
4 or 8. It is the internal scaling factor used for the FAN rotations. If
|
|
||||||
you change this number, the FAN readings get more or less detailed, but
|
|
||||||
the range in which they can be read too. Higher numbers give better
|
|
||||||
resolution, but less range. The first two numbers can be changed, the
|
|
||||||
third not.
|
|
||||||
If accessed through sysctl, this is a list of longs.
|
|
||||||
* in[0-6] (LM78_SYSCTL_IN[0-6])
|
|
||||||
A list of three numbers. The first is the minimum limit, the second is the
|
|
||||||
maximum limit, and the third is the current value. If you have a weird
|
|
||||||
mainboard, all values may be off because some other scaling factor has
|
|
||||||
to be used; user-space programs should compensate for this. Note that
|
|
||||||
minimum means 'closest to zero'; so if the normal value equals -10, a
|
|
||||||
minimum could equal -9, and a maximum -11. IN0 and IN1 reflect core
|
|
||||||
voltages; they are by default set from the vid values, or set to 2.80V
|
|
||||||
if the vid lines seem to be unconnected. IN2 should equal +3.30V,
|
|
||||||
IN3 +5.00V, IN4 +12.00V, IN5 -12.00V and IN6 -5V. Not all voltage values
|
|
||||||
can be accurately represented, so some rounding is done.
|
|
||||||
The first two numbers can be changed, the third not.
|
|
||||||
If accessed through sysctl, this is a list of longs, each being the voltage
|
|
||||||
times 100.
|
|
||||||
* temp
|
|
||||||
A list of three numbers. The first number is the Overtemperature Shutdown
|
|
||||||
value; the second is the Hysteris value and the third number is the
|
|
||||||
current value. The first two values can be modified. All values are in
|
|
||||||
degrees Celcius. An alarm is issued when the temperature first gets above
|
|
||||||
the Overtemperature Shutdown value; no more alarms are issued until the
|
|
||||||
temperature gets below the Hysteris value, at which moment another alarm
|
|
||||||
is issued, and the state is reset. A more useful behaviour can be found
|
|
||||||
by setting the Hysteris value to +127 degrees Celcius; in this case,
|
|
||||||
alarms are issued during all the time when the actual temperature is
|
|
||||||
above the Overtemperature Shutdown value.
|
|
||||||
The first two numbers can be changed, the third not.
|
|
||||||
If accessed through sysctl, this is a list of longs, each being the
|
|
||||||
temperature in degrees Celcius times 10.
|
|
||||||
* vid
|
|
||||||
The core voltage value (the voltage level your processor should work with),
|
|
||||||
in volts. This is the value IN0 and IN1 are initialized to. If unconnected,
|
|
||||||
it usually reads 3.50V.
|
|
||||||
This number can not be changed.
|
|
||||||
If accessed through sysctl, this is a long, being the voltage times 100.
|
|
||||||
|
|
||||||
The data for each LM78 is updated each 1.5 seconds, but only if it is actually
|
There is almost no difference between these three chips. Functionally, the
|
||||||
read.
|
LM78 and LM78-J are exactly identical. The LM79 has one more VID line,
|
||||||
|
which is used to report the lower voltages newer Pentium processors use.
|
||||||
|
From now on, LM7* means either of these three types.
|
||||||
|
|
||||||
|
The LM7* implements one temperatur sensor, three FAN rotation speed sensors,
|
||||||
|
seven voltage sensors, VID lines, alarms, and some miscellaneous stuff.
|
||||||
|
|
||||||
|
Temperatures are measured in degrees Celcius. An alarm is triggered once
|
||||||
|
when the Overtemperature Shutdown limit is crossed; it is triggered again
|
||||||
|
as soon as it drops below the Hysteris value. A more useful behaviour
|
||||||
|
can be found by setting the Hysteris value to +127 degrees Celcius; in
|
||||||
|
this case, alarms are issued during all the time when the actual temperature \
|
||||||
|
is above the Overtemperature Shutdown value.
|
||||||
|
|
||||||
|
FAN rotation speeds are reported in RPM (rotations per minute). An alarm is
|
||||||
|
triggered if the rotation speed has dropped below a programmable limit. FAN
|
||||||
|
readings can be divided by a programmable divider (1, 2, 4 or 8) to give
|
||||||
|
the readings more range or accuracy. This is imporatant because some FANs
|
||||||
|
report only one 'tick' each rotation, while others report two - making
|
||||||
|
all readings twice as high. Not all RPM values can accurately be represented,
|
||||||
|
so some rounding is done.
|
||||||
|
|
||||||
|
Voltage sensors (also known as IN sensors) 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.
|
||||||
|
|
||||||
|
The VID lines encode the core voltage value: the voltage level your processor
|
||||||
|
should work with. This is hardcoded by the mainboard and/or processor itself.
|
||||||
|
It is a value in volts.
|
||||||
|
|
||||||
|
In addition to the alarms described above, there are a couple of additional
|
||||||
|
ones. There is a BTI alarm, which gets triggered when an external chip has
|
||||||
|
crossed its limits. Usually, this is connected to all LM75 chips; if at
|
||||||
|
least one crosses its limits, this bit gets set. The CHAS alarm triggers
|
||||||
|
if your computer case is open. The FIFO alarms should never trigger; it
|
||||||
|
indicates an internal error. The SMI_IN alarm indicates some other chip
|
||||||
|
has triggered an SMI interrupt. As we do not use SMI interrupts at all,
|
||||||
|
this condition usually indicates there is a problem with some other
|
||||||
|
device.
|
||||||
|
|
||||||
|
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 1.5 seconds since the last update). This means that you can easily
|
||||||
|
miss once-only alarms.
|
||||||
|
|
||||||
|
The LM7* only updates its values each 1.5 seconds; reading it more often
|
||||||
|
will do no harm, but will return 'old' values.
|
||||||
|
|
||||||
|
|
||||||
|
/proc and sysctl interface files:
|
||||||
|
* alarms (LM78_SYSCTL_ALARMS)
|
||||||
|
A single number (R,0) which indicates which alarms are currently
|
||||||
|
triggered. It is a logical OR of the following bit values:
|
||||||
|
LM78_ALARM_BTI, LM78_ALARM_CHAS, LM78_ALARM_FIFO, LM78_ALARM_SMI_IN,
|
||||||
|
LM78_ALARMS_IN[0-6], LM78_ALARM_FAN[1-3], LM78_ALARM_TEMP
|
||||||
|
* fan[1-3] (LM78_SYSCTL_FAN[1-3])
|
||||||
|
The Fan Low Limit (RW,0) and Current Fan Reading (R,0).
|
||||||
|
* fan_div (LM78_SYSCTL_FAN_DIV)
|
||||||
|
The FAN1 Scaling Factor (RW,0), FAN2 Scaling Factor (RW,0) and FAN3 Scaling
|
||||||
|
Factor (RW,0).
|
||||||
|
* in[0-6] (LM78_SYSCTL_IN[0-6])
|
||||||
|
The Voltage Low Limit (RW,2), Voltage High Limit (RW,2) and Current
|
||||||
|
Voltage Reading (R,2).
|
||||||
|
* temp
|
||||||
|
The Overtemperature Shutdown Value (RW,1), Hysteris Value (RW,1) and
|
||||||
|
Current Temperature (R,1).
|
||||||
|
* vid
|
||||||
|
The Core Voltage Value (R,2).
|
||||||
|
|
||||||
|
|
||||||
|
configuration file features:
|
||||||
|
|
||||||
|
NAME LABEL CLASS COMPUTE CLASS RW
|
||||||
|
alarms: R
|
||||||
|
fan1: R
|
||||||
|
fan1_div: fan1 RW
|
||||||
|
fan1_min: fan1 RW
|
||||||
|
fan2: R
|
||||||
|
fan2_div: fan2 RW
|
||||||
|
fan2_min: fan2 RW
|
||||||
|
fan3: R
|
||||||
|
fan3_div: fan3 R
|
||||||
|
fan3_min: fan3 RW
|
||||||
|
in0: R
|
||||||
|
in0_max: in0 in0 RW
|
||||||
|
in0_min: in0 in0 RW
|
||||||
|
in1: R
|
||||||
|
in1_max: in1 in1 RW
|
||||||
|
in1_min: in1 in1 RW
|
||||||
|
in2: R
|
||||||
|
in2_max: in2 in2 RW
|
||||||
|
in2_min: in2 in2 RW
|
||||||
|
in3: R
|
||||||
|
in3_max: in3 in3 RW
|
||||||
|
in3_min: in3 in3 RW
|
||||||
|
in4: R
|
||||||
|
in4_max: in4 in4 RW
|
||||||
|
in4_min: in4 in4 RW
|
||||||
|
in5: R
|
||||||
|
in5_max: in5 in5 RW
|
||||||
|
in5_min: in5 in5 RW
|
||||||
|
in6: R
|
||||||
|
in6_max: in6 in6 RW
|
||||||
|
in6_min: in6 in6 RW
|
||||||
|
temp: R
|
||||||
|
temp_hyst: temp temp RW
|
||||||
|
temp_over: temp temp RW
|
||||||
|
vid: R
|
||||||
|
18
lib/chips.c
18
lib/chips.c
@@ -88,11 +88,11 @@ static sensors_chip_feature lm78_features[] =
|
|||||||
SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
|
SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
|
||||||
{ SENSORS_LM78_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
{ SENSORS_LM78_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
||||||
SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
|
SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
|
||||||
{ SENSORS_LM78_FAN1_MIN, "fan1_min", SENSORS_LM78_FAN1, SENSORS_NO_MAPPING,
|
{ SENSORS_LM78_FAN1_MIN, "fan1_min", SENSORS_LM78_FAN1, SENSORS_LM78_FAN1,
|
||||||
SENSORS_MODE_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
|
SENSORS_MODE_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
|
||||||
{ SENSORS_LM78_FAN2_MIN, "fan2_min", SENSORS_LM78_FAN2, SENSORS_NO_MAPPING,
|
{ SENSORS_LM78_FAN2_MIN, "fan2_min", SENSORS_LM78_FAN2, SENSORS_LM78_FAN2,
|
||||||
SENSORS_MODE_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
|
SENSORS_MODE_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
|
||||||
{ SENSORS_LM78_FAN3_MIN, "fan3_min", SENSORS_LM78_FAN3, SENSORS_NO_MAPPING,
|
{ SENSORS_LM78_FAN3_MIN, "fan3_min", SENSORS_LM78_FAN3, SENSORS_LM78_FAN3,
|
||||||
SENSORS_MODE_RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
|
SENSORS_MODE_RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
|
||||||
{ SENSORS_LM78_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
{ SENSORS_LM78_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
||||||
SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
|
SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
|
||||||
@@ -169,13 +169,13 @@ static sensors_chip_feature lm78j_features[] =
|
|||||||
{ SENSORS_LM78J_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
{ SENSORS_LM78J_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
||||||
SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
|
SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
|
||||||
{ SENSORS_LM78J_FAN1_MIN, "fan1_min", SENSORS_LM78J_FAN1,
|
{ SENSORS_LM78J_FAN1_MIN, "fan1_min", SENSORS_LM78J_FAN1,
|
||||||
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
SENSORS_LM78J_FAN1, SENSORS_MODE_RW,
|
||||||
LM78_SYSCTL_FAN1, VALUE(1), 0 },
|
LM78_SYSCTL_FAN1, VALUE(1), 0 },
|
||||||
{ SENSORS_LM78J_FAN2_MIN, "fan2_min", SENSORS_LM78J_FAN2,
|
{ SENSORS_LM78J_FAN2_MIN, "fan2_min", SENSORS_LM78J_FAN2,
|
||||||
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
SENSORS_LM78J_FAN2, SENSORS_MODE_RW,
|
||||||
LM78_SYSCTL_FAN2, VALUE(1), 0 },
|
LM78_SYSCTL_FAN2, VALUE(1), 0 },
|
||||||
{ SENSORS_LM78J_FAN3_MIN, "fan3_min", SENSORS_LM78J_FAN3,
|
{ SENSORS_LM78J_FAN3_MIN, "fan3_min", SENSORS_LM78J_FAN3,
|
||||||
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
|
SENSORS_LM78J_FAN3, SENSORS_MODE_RW,
|
||||||
LM78_SYSCTL_FAN3, VALUE(1), 0 },
|
LM78_SYSCTL_FAN3, VALUE(1), 0 },
|
||||||
{ SENSORS_LM78J_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
{ SENSORS_LM78J_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
||||||
SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
|
SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
|
||||||
@@ -251,11 +251,11 @@ static sensors_chip_feature lm79_features[] =
|
|||||||
SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
|
SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
|
||||||
{ SENSORS_LM79_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
{ SENSORS_LM79_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
||||||
SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
|
SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
|
||||||
{ SENSORS_LM79_FAN1_MIN, "fan1_min", SENSORS_LM79_FAN1, SENSORS_NO_MAPPING,
|
{ SENSORS_LM79_FAN1_MIN, "fan1_min", SENSORS_LM79_FAN1, SENSORS_LM79_FAN1,
|
||||||
SENSORS_MODE_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
|
SENSORS_MODE_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
|
||||||
{ SENSORS_LM79_FAN2_MIN, "fan2_min", SENSORS_LM79_FAN2, SENSORS_NO_MAPPING,
|
{ SENSORS_LM79_FAN2_MIN, "fan2_min", SENSORS_LM79_FAN2, SENSORS_LM79_FAN2,
|
||||||
SENSORS_MODE_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
|
SENSORS_MODE_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
|
||||||
{ SENSORS_LM79_FAN3_MIN, "fan3_min", SENSORS_LM79_FAN3, SENSORS_NO_MAPPING,
|
{ SENSORS_LM79_FAN3_MIN, "fan3_min", SENSORS_LM79_FAN3, SENSORS_LM79_FAN3,
|
||||||
SENSORS_MODE_RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
|
SENSORS_MODE_RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
|
||||||
{ SENSORS_LM79_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
{ SENSORS_LM79_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
|
||||||
SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
|
SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
|
||||||
|
@@ -51,11 +51,10 @@ const char *mode_string(int mode)
|
|||||||
void dump_feature(const sensors_chip_feature *featuredata,
|
void dump_feature(const sensors_chip_feature *featuredata,
|
||||||
const sensors_chip_features *chipdata)
|
const sensors_chip_features *chipdata)
|
||||||
{
|
{
|
||||||
printf(" %17s: %17s %17s %2s %2d\n",featuredata->name,
|
printf(" %17s: %17s %17s %2s\n",featuredata->name,
|
||||||
lookup_feature_name(featuredata->logical_mapping,chipdata),
|
lookup_feature_name(featuredata->logical_mapping,chipdata),
|
||||||
lookup_feature_name(featuredata->compute_mapping,chipdata),
|
lookup_feature_name(featuredata->compute_mapping,chipdata),
|
||||||
mode_string(featuredata->mode),
|
mode_string(featuredata->mode));
|
||||||
featuredata->scaling);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int qsort_compare (const void *f1, const void *f2)
|
int qsort_compare (const void *f1, const void *f2)
|
||||||
@@ -77,8 +76,8 @@ void dump_chip (const sensors_chip_features *chipdata)
|
|||||||
qsort(features,i,sizeof(*features),qsort_compare);
|
qsort(features,i,sizeof(*features),qsort_compare);
|
||||||
|
|
||||||
printf("Chip `%s'\n",chipdata->prefix);
|
printf("Chip `%s'\n",chipdata->prefix);
|
||||||
printf(" %17s %17s %17s %2s %s\n","NAME","LABEL CLASS","COMPUTE CLASS",
|
printf(" %17s %17s %17s %2s\n","NAME","LABEL CLASS","COMPUTE CLASS",
|
||||||
"RW","SCALE");
|
"RW");
|
||||||
for (i = 0; features[i]->name; i++)
|
for (i = 0; features[i]->name; i++)
|
||||||
dump_feature(features[i],chipdata);
|
dump_feature(features[i],chipdata);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user