Resguardo inicial

This commit is contained in:
lastdragon
2026-09-06 12:53:21 -06:00
parent 662efe3c2a
commit ad2088d178
94853 changed files with 43200404 additions and 0 deletions
@@ -0,0 +1,336 @@
===============
uGuru datasheet
===============
First of all, what I know about uGuru is no fact based on any help, hints or
datasheet from Abit. The data I have got on uGuru have I assembled through
my weak knowledge in "backwards engineering".
And just for the record, you may have noticed uGuru isn't a chip developed by
Abit, as they claim it to be. It's really just a microprocessor (uC) created by
Winbond (W83L950D). And no, reading the manual for this specific uC or
mailing Winbond for help won't give any useful data about uGuru, as it is
the program inside the uC that is responding to calls.
Olle Sandberg <ollebull@gmail.com>, 2005-05-25
Original version by Olle Sandberg who did the heavy lifting of the initial
reverse engineering. This version has been almost fully rewritten for clarity
and extended with write support and info on more databanks, the write support
is once again reverse engineered by Olle the additional databanks have been
reverse engineered by me. I would like to express my thanks to Olle, this
document and the Linux driver could not have been written without his efforts.
Note: because of the lack of specs only the sensors part of the uGuru is
described here and not the CPU / RAM / etc voltage & frequency control.
Hans de Goede <j.w.r.degoede@hhs.nl>, 28-01-2006
Detection
=========
As far as known the uGuru is always placed at and using the (ISA) I/O-ports
0xE0 and 0xE4, so we don't have to scan any port-range, just check what the two
ports are holding for detection. We will refer to 0xE0 as CMD (command-port)
and 0xE4 as DATA because Abit refers to them with these names.
If DATA holds 0x00 or 0x08 and CMD holds 0x00 or 0xAC a uGuru could be
present. We have to check for two different values at data-port, because
after a reboot uGuru will hold 0x00 here, but if the driver is removed and
later on attached again data-port will hold 0x08, more about this later.
After wider testing of the Linux kernel driver some variants of the uGuru have
turned up which will hold 0x00 instead of 0xAC at the CMD port, thus we also
have to test CMD for two different values. On these uGuru's DATA will initially
hold 0x09 and will only hold 0x08 after reading CMD first, so CMD must be read
first!
To be really sure a uGuru is present a test read of one or more register
sets should be done.
Reading / Writing
=================
Addressing
----------
The uGuru has a number of different addressing levels. The first addressing
level we will call banks. A bank holds data for one or more sensors. The data
in a bank for a sensor is one or more bytes large.
The number of bytes is fixed for a given bank, you should always read or write
that many bytes, reading / writing more will fail, the results when writing
less then the number of bytes for a given bank are undetermined.
See below for all known bank addresses, numbers of sensors in that bank,
number of bytes data per sensor and contents/meaning of those bytes.
Although both this document and the kernel driver have kept the sensor
terminology for the addressing within a bank this is not 100% correct, in
bank 0x24 for example the addressing within the bank selects a PWM output not
a sensor.
Notice that some banks have both a read and a write address this is how the
uGuru determines if a read from or a write to the bank is taking place, thus
when reading you should always use the read address and when writing the
write address. The write address is always one (1) more than the read address.
uGuru ready
-----------
Before you can read from or write to the uGuru you must first put the uGuru
in "ready" mode.
To put the uGuru in ready mode first write 0x00 to DATA and then wait for DATA
to hold 0x09, DATA should read 0x09 within 250 read cycles.
Next CMD _must_ be read and should hold 0xAC, usually CMD will hold 0xAC the
first read but sometimes it takes a while before CMD holds 0xAC and thus it
has to be read a number of times (max 50).
After reading CMD, DATA should hold 0x08 which means that the uGuru is ready
for input. As above DATA will usually hold 0x08 the first read but not always.
This step can be skipped, but it is undetermined what happens if the uGuru has
not yet reported 0x08 at DATA and you proceed with writing a bank address.
Sending bank and sensor addresses to the uGuru
----------------------------------------------
First the uGuru must be in "ready" mode as described above, DATA should hold
0x08 indicating that the uGuru wants input, in this case the bank address.
Next write the bank address to DATA. After the bank address has been written
wait for to DATA to hold 0x08 again indicating that it wants / is ready for
more input (max 250 reads).
Once DATA holds 0x08 again write the sensor address to CMD.
Reading
-------
First send the bank and sensor addresses as described above.
Then for each byte of data you want to read wait for DATA to hold 0x01
which indicates that the uGuru is ready to be read (max 250 reads) and once
DATA holds 0x01 read the byte from CMD.
Once all bytes have been read data will hold 0x09, but there is no reason to
test for this. Notice that the number of bytes is bank address dependent see
above and below.
After completing a successful read it is advised to put the uGuru back in
ready mode, so that it is ready for the next read / write cycle. This way
if your program / driver is unloaded and later loaded again the detection
algorithm described above will still work.
Writing
-------
First send the bank and sensor addresses as described above.
Then for each byte of data you want to write wait for DATA to hold 0x00
which indicates that the uGuru is ready to be written (max 250 reads) and
once DATA holds 0x00 write the byte to CMD.
Once all bytes have been written wait for DATA to hold 0x01 (max 250 reads)
don't ask why this is the way it is.
Once DATA holds 0x01 read CMD it should hold 0xAC now.
After completing a successful write it is advised to put the uGuru back in
ready mode, so that it is ready for the next read / write cycle. This way
if your program / driver is unloaded and later loaded again the detection
algorithm described above will still work.
Gotchas
-------
After wider testing of the Linux kernel driver some variants of the uGuru have
turned up which do not hold 0x08 at DATA within 250 reads after writing the
bank address. With these versions this happens quite frequent, using larger
timeouts doesn't help, they just go offline for a second or 2, doing some
internal calibration or whatever. Your code should be prepared to handle
this and in case of no response in this specific case just goto sleep for a
while and then retry.
Address Map
===========
Bank 0x20 Alarms (R)
--------------------
This bank contains 0 sensors, iow the sensor address is ignored (but must be
written) just use 0. Bank 0x20 contains 3 bytes:
Byte 0:
This byte holds the alarm flags for sensor 0-7 of Sensor Bank1, with bit 0
corresponding to sensor 0, 1 to 1, etc.
Byte 1:
This byte holds the alarm flags for sensor 8-15 of Sensor Bank1, with bit 0
corresponding to sensor 8, 1 to 9, etc.
Byte 2:
This byte holds the alarm flags for sensor 0-5 of Sensor Bank2, with bit 0
corresponding to sensor 0, 1 to 1, etc.
Bank 0x21 Sensor Bank1 Values / Readings (R)
--------------------------------------------
This bank contains 16 sensors, for each sensor it contains 1 byte.
So far the following sensors are known to be available on all motherboards:
- Sensor 0 CPU temp
- Sensor 1 SYS temp
- Sensor 3 CPU core volt
- Sensor 4 DDR volt
- Sensor 10 DDR Vtt volt
- Sensor 15 PWM temp
Byte 0:
This byte holds the reading from the sensor. Sensors in Bank1 can be both
volt and temp sensors, this is motherboard specific. The uGuru however does
seem to know (be programmed with) what kindoff sensor is attached see Sensor
Bank1 Settings description.
Volt sensors use a linear scale, a reading 0 corresponds with 0 volt and a
reading of 255 with 3494 mV. The sensors for higher voltages however are
connected through a division circuit. The currently known division circuits
in use result in ranges of: 0-4361mV, 0-6248mV or 0-14510mV. 3.3 volt sources
use the 0-4361mV range, 5 volt the 0-6248mV and 12 volt the 0-14510mV .
Temp sensors also use a linear scale, a reading of 0 corresponds with 0 degree
Celsius and a reading of 255 with a reading of 255 degrees Celsius.
Bank 0x22 Sensor Bank1 Settings (R) and Bank 0x23 Sensor Bank1 Settings (W)
---------------------------------------------------------------------------
Those banks contain 16 sensors, for each sensor it contains 3 bytes. Each
set of 3 bytes contains the settings for the sensor with the same sensor
address in Bank 0x21 .
Byte 0:
Alarm behaviour for the selected sensor. A 1 enables the described
behaviour.
Bit 0:
Give an alarm if measured temp is over the warning threshold (RW) [1]_
Bit 1:
Give an alarm if measured volt is over the max threshold (RW) [2]_
Bit 2:
Give an alarm if measured volt is under the min threshold (RW) [2]_
Bit 3:
Beep if alarm (RW)
Bit 4:
1 if alarm cause measured temp is over the warning threshold (R)
Bit 5:
1 if alarm cause measured volt is over the max threshold (R)
Bit 6:
1 if alarm cause measured volt is under the min threshold (R)
Bit 7:
- Volt sensor: Shutdown if alarm persist for more than 4 seconds (RW)
- Temp sensor: Shutdown if temp is over the shutdown threshold (RW)
.. [1] This bit is only honored/used by the uGuru if a temp sensor is connected
.. [2] This bit is only honored/used by the uGuru if a volt sensor is connected
Note with some trickery this can be used to find out what kinda sensor
is detected see the Linux kernel driver for an example with many
comments on how todo this.
Byte 1:
- Temp sensor: warning threshold (scale as bank 0x21)
- Volt sensor: min threshold (scale as bank 0x21)
Byte 2:
- Temp sensor: shutdown threshold (scale as bank 0x21)
- Volt sensor: max threshold (scale as bank 0x21)
Bank 0x24 PWM outputs for FAN's (R) and Bank 0x25 PWM outputs for FAN's (W)
---------------------------------------------------------------------------
Those banks contain 3 "sensors", for each sensor it contains 5 bytes.
- Sensor 0 usually controls the CPU fan
- Sensor 1 usually controls the NB (or chipset for single chip) fan
- Sensor 2 usually controls the System fan
Byte 0:
Flag 0x80 to enable control, Fan runs at 100% when disabled.
low nibble (temp)sensor address at bank 0x21 used for control.
Byte 1:
0-255 = 0-12v (linear), specify voltage at which fan will rotate when under
low threshold temp (specified in byte 3)
Byte 2:
0-255 = 0-12v (linear), specify voltage at which fan will rotate when above
high threshold temp (specified in byte 4)
Byte 3:
Low threshold temp (scale as bank 0x21)
byte 4:
High threshold temp (scale as bank 0x21)
Bank 0x26 Sensors Bank2 Values / Readings (R)
---------------------------------------------
This bank contains 6 sensors (AFAIK), for each sensor it contains 1 byte.
So far the following sensors are known to be available on all motherboards:
- Sensor 0: CPU fan speed
- Sensor 1: NB (or chipset for single chip) fan speed
- Sensor 2: SYS fan speed
Byte 0:
This byte holds the reading from the sensor. 0-255 = 0-15300 (linear)
Bank 0x27 Sensors Bank2 Settings (R) and Bank 0x28 Sensors Bank2 Settings (W)
-----------------------------------------------------------------------------
Those banks contain 6 sensors (AFAIK), for each sensor it contains 2 bytes.
Byte 0:
Alarm behaviour for the selected sensor. A 1 enables the described behaviour.
Bit 0:
Give an alarm if measured rpm is under the min threshold (RW)
Bit 3:
Beep if alarm (RW)
Bit 7:
Shutdown if alarm persist for more than 4 seconds (RW)
Byte 1:
min threshold (scale as bank 0x26)
Warning for the adventurous
===========================
A word of caution to those who want to experiment and see if they can figure
the voltage / clock programming out, I tried reading and only reading banks
0-0x30 with the reading code used for the sensor banks (0x20-0x28) and this
resulted in a _permanent_ reprogramming of the voltages, luckily I had the
sensors part configured so that it would shutdown my system on any out of spec
voltages which probably safed my computer (after a reboot I managed to
immediately enter the bios and reload the defaults). This probably means that
the read/write cycle for the non sensor part is different from the sensor part.
@@ -0,0 +1,113 @@
Kernel driver abituguru
=======================
Supported chips:
* Abit uGuru revision 1 & 2 (Hardware Monitor part only)
Prefix: 'abituguru'
Addresses scanned: ISA 0x0E0
Datasheet: Not available, this driver is based on reverse engineering.
A "Datasheet" has been written based on the reverse engineering it
should be available in the same dir as this file under the name
abituguru-datasheet.
Note:
The uGuru is a microcontroller with onboard firmware which programs
it to behave as a hwmon IC. There are many different revisions of the
firmware and thus effectively many different revisions of the uGuru.
Below is an incomplete list with which revisions are used for which
Motherboards:
- uGuru 1.00 ~ 1.24 (AI7, KV8-MAX3, AN7) [1]_
- uGuru 2.0.0.0 ~ 2.0.4.2 (KV8-PRO)
- uGuru 2.1.0.0 ~ 2.1.2.8 (AS8, AV8, AA8, AG8, AA8XE, AX8)
- uGuru 2.2.0.0 ~ 2.2.0.6 (AA8 Fatal1ty)
- uGuru 2.3.0.0 ~ 2.3.0.9 (AN8)
- uGuru 3.0.0.0 ~ 3.0.x.x (AW8, AL8, AT8, NI8 SLI, AT8 32X, AN8 32X,
AW9D-MAX) [2]_
.. [1] For revisions 2 and 3 uGuru's the driver can autodetect the
sensortype (Volt or Temp) for bank1 sensors, for revision 1 uGuru's
this does not always work. For these uGuru's the autodetection can
be overridden with the bank1_types module param. For all 3 known
revision 1 motherboards the correct use of this param is:
bank1_types=1,1,0,0,0,0,0,2,0,0,0,0,2,0,0,1
You may also need to specify the fan_sensors option for these boards
fan_sensors=5
.. [2] There is a separate abituguru3 driver for these motherboards,
the abituguru (without the 3 !) driver will not work on these
motherboards (and vice versa)!
Authors:
- Hans de Goede <j.w.r.degoede@hhs.nl>,
- (Initial reverse engineering done by Olle Sandberg
<ollebull@gmail.com>)
Module Parameters
-----------------
* force: bool
Force detection. Note this parameter only causes the
detection to be skipped, and thus the insmod to
succeed. If the uGuru can't be read the actual hwmon
driver will not load and thus no hwmon device will get
registered.
* bank1_types: int[]
Bank1 sensortype autodetection override:
* -1 autodetect (default)
* 0 volt sensor
* 1 temp sensor
* 2 not connected
* fan_sensors: int
Tell the driver how many fan speed sensors there are
on your motherboard. Default: 0 (autodetect).
* pwms: int
Tell the driver how many fan speed controls (fan
pwms) your motherboard has. Default: 0 (autodetect).
* verbose: int
How verbose should the driver be? (0-3):
* 0 normal output
* 1 + verbose error reporting
* 2 + sensors type probing info (default)
* 3 + retryable error reporting
Default: 2 (the driver is still in the testing phase)
Notice: if you need any of the first three options above please insmod the
driver with verbose set to 3 and mail me <j.w.r.degoede@hhs.nl> the output of:
dmesg | grep abituguru
Description
-----------
This driver supports the hardware monitoring features of the first and
second revision of the Abit uGuru chip found on Abit uGuru featuring
motherboards (most modern Abit motherboards).
The first and second revision of the uGuru chip in reality is a Winbond
W83L950D in disguise (despite Abit claiming it is "a new microprocessor
designed by the ABIT Engineers"). Unfortunately this doesn't help since the
W83L950D is a generic microcontroller with a custom Abit application running
on it.
Despite Abit not releasing any information regarding the uGuru, Olle
Sandberg <ollebull@gmail.com> has managed to reverse engineer the sensor part
of the uGuru. Without his work this driver would not have been possible.
Known Issues
------------
The voltage and frequency control parts of the Abit uGuru are not supported.
.. toctree::
:maxdepth: 1
abituguru-datasheet.rst
@@ -0,0 +1,75 @@
Kernel driver abituguru3
========================
Supported chips:
* Abit uGuru revision 3 (Hardware Monitor part, reading only)
Prefix: 'abituguru3'
Addresses scanned: ISA 0x0E0
Datasheet: Not available, this driver is based on reverse engineering.
Note:
The uGuru is a microcontroller with onboard firmware which programs
it to behave as a hwmon IC. There are many different revisions of the
firmware and thus effectively many different revisions of the uGuru.
Below is an incomplete list with which revisions are used for which
Motherboards:
- uGuru 1.00 ~ 1.24 (AI7, KV8-MAX3, AN7)
- uGuru 2.0.0.0 ~ 2.0.4.2 (KV8-PRO)
- uGuru 2.1.0.0 ~ 2.1.2.8 (AS8, AV8, AA8, AG8, AA8XE, AX8)
- uGuru 2.3.0.0 ~ 2.3.0.9 (AN8)
- uGuru 3.0.0.0 ~ 3.0.x.x (AW8, AL8, AT8, NI8 SLI, AT8 32X, AN8 32X,
AW9D-MAX)
The abituguru3 driver is only for revision 3.0.x.x motherboards,
this driver will not work on older motherboards. For older
motherboards use the abituguru (without the 3 !) driver.
Authors:
- Hans de Goede <j.w.r.degoede@hhs.nl>,
- (Initial reverse engineering done by Louis Kruger)
Module Parameters
-----------------
* force: bool
Force detection. Note this parameter only causes the
detection to be skipped, and thus the insmod to
succeed. If the uGuru can't be read the actual hwmon
driver will not load and thus no hwmon device will get
registered.
* verbose: bool
Should the driver be verbose?
* 0/off/false normal output
* 1/on/true + verbose error reporting (default)
Default: 1 (the driver is still in the testing phase)
Description
-----------
This driver supports the hardware monitoring features of the third revision of
the Abit uGuru chip, found on recent Abit uGuru featuring motherboards.
The 3rd revision of the uGuru chip in reality is a Winbond W83L951G.
Unfortunately this doesn't help since the W83L951G is a generic microcontroller
with a custom Abit application running on it.
Despite Abit not releasing any information regarding the uGuru revision 3,
Louis Kruger has managed to reverse engineer the sensor part of the uGuru.
Without his work this driver would not have been possible.
Known Issues
------------
The voltage and frequency control parts of the Abit uGuru are not supported,
neither is writing any of the sensor settings and writing / reading the
fanspeed control registers (FanEQ)
If you encounter any problems please mail me <j.w.r.degoede@hhs.nl> and
include the output of: `dmesg | grep abituguru`
@@ -0,0 +1,80 @@
Kernel driver acbel-fsg032
==========================
Supported chips:
* ACBEL FSG032-00xG power supply.
Author: Lakshmi Yadlapati <lakshmiy@us.ibm.com>
Description
-----------
This driver supports ACBEL FSG032-00xG Power Supply. This driver
is a client to the core PMBus driver.
Usage Notes
-----------
This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.
Sysfs entries
-------------
The following attributes are supported:
======================= ======================================================
curr1_crit Critical maximum current.
curr1_crit_alarm Input current critical alarm.
curr1_input Measured output current.
curr1_label "iin"
curr1_max Maximum input current.
curr1_max_alarm Maximum input current high alarm.
curr1_rated_max Maximum rated input current.
curr2_crit Critical maximum current.
curr2_crit_alarm Output current critical alarm.
curr2_input Measured output current.
curr2_label "iout1"
curr2_max Maximum output current.
curr2_max_alarm Output current high alarm.
curr2_rated_max Maximum rated output current.
fan1_alarm Fan 1 warning.
fan1_fault Fan 1 fault.
fan1_input Fan 1 speed in RPM.
fan1_target Set fan speed reference.
in1_alarm Input voltage under-voltage alarm.
in1_input Measured input voltage.
in1_label "vin"
in1_rated_max Maximum rated input voltage.
in1_rated_min Minimum rated input voltage.
in2_crit Critical maximum output voltage.
in2_crit_alarm Output voltage critical high alarm.
in2_input Measured output voltage.
in2_label "vout1"
in2_lcrit Critical minimum output voltage.
in2_lcrit_alarm Output voltage critical low alarm.
in2_rated_max Maximum rated output voltage.
in2_rated_min Minimum rated output voltage.
power1_alarm Input fault or alarm.
power1_input Measured input power.
power1_label "pin"
power1_max Input power limit.
power1_rated_max Maximum rated input power.
power2_crit Critical output power limit.
power2_crit_alarm Output power crit alarm limit exceeded.
power2_input Measured output power.
power2_label "pout"
power2_max Output power limit.
power2_max_alarm Output power high alarm.
power2_rated_max Maximum rated output power.
temp[1-3]_input Measured temperature.
temp[1-2]_max Maximum temperature.
temp[1-3]_rated_max Temperature high alarm.
======================= ======================================================
@@ -0,0 +1,77 @@
Kernel driver power_meter
=========================
This driver talks to ACPI 4.0 power meters.
Supported systems:
* Any recent system with ACPI 4.0.
Prefix: 'power_meter'
Datasheet: https://uefi.org/specifications, section 10.4.
Author: Darrick J. Wong
Description
-----------
This driver implements sensor reading support for the power meters exposed in
the ACPI 4.0 spec (Chapter 10.4). These devices have a simple set of
features--a power meter that returns average power use over a configurable
interval, an optional capping mechanism, and a couple of trip points. The
sysfs interface conforms with the specification outlined in the "Power" section
of Documentation/hwmon/sysfs-interface.rst.
Special Features
----------------
The `power[1-*]_is_battery` knob indicates if the power supply is a battery.
Both `power[1-*]_average_{min,max}` must be set before the trip points will work.
When both of them are set, an ACPI event will be broadcast on the ACPI netlink
socket and a poll notification will be sent to the appropriate
`power[1-*]_average` sysfs file.
The `power[1-*]_{model_number, serial_number, oem_info}` fields display
arbitrary strings that ACPI provides with the meter. The measures/ directory
contains symlinks to the devices that this meter measures.
Some computers have the ability to enforce a power cap in hardware. If this is
the case, the `power[1-*]_cap` and related sysfs files will appear.
For information on enabling the power cap feature, refer to the description
of the "force_on_cap" option in the "Module Parameters" chapter.
To use the power cap feature properly, you need to set appropriate value
(in microWatts) to the `power[1-*]_cap` sysfs files.
The value must be within the range between the minimum value at `power[1-]_cap_min`
and the maximum value at `power[1-]_cap_max (both in microWatts)`.
When the average power consumption exceeds the cap, an ACPI event will be
broadcast on the netlink event socket and a poll notification will be sent to the
appropriate `power[1-*]_alarm` file to indicate that capping has begun, and the
hardware has taken action to reduce power consumption. Most likely this will
result in reduced performance.
There are a few other ACPI notifications that can be sent by the firmware. In
all cases the ACPI event will be broadcast on the ACPI netlink event socket as
well as sent as a poll notification to a sysfs file. The events are as
follows:
`power[1-*]_cap` will be notified if the firmware changes the power cap.
`power[1-*]_interval` will be notified if the firmware changes the averaging
interval.
Module Parameters
-----------------
* force_cap_on: bool
Forcefully enable the power capping feature to specify
the upper limit of the system's power consumption.
By default, the driver's power capping feature is only
enabled on IBM products.
Therefore, on other systems that support power capping,
you will need to use the option to enable it.
Note: power capping is potentially unsafe feature.
Please check the platform specifications to make sure
that capping is supported before using this option.
@@ -0,0 +1,34 @@
Kernel driver ad7314
====================
Supported chips:
* Analog Devices AD7314
Prefix: 'ad7314'
Datasheet: Publicly available at Analog Devices website.
* Analog Devices ADT7301
Prefix: 'adt7301'
Datasheet: Publicly available at Analog Devices website.
* Analog Devices ADT7302
Prefix: 'adt7302'
Datasheet: Publicly available at Analog Devices website.
Description
-----------
Driver supports the above parts. The ad7314 has a 10 bit
sensor with 1lsb = 0.25 degrees centigrade. The adt7301 and
adt7302 have 14 bit sensors with 1lsb = 0.03125 degrees centigrade.
Notes
-----
Currently power down mode is not supported.
@@ -0,0 +1,50 @@
Kernel driver adc128d818
========================
Supported chips:
* Texas Instruments ADC818D818
Prefix: 'adc818d818'
Addresses scanned: I2C 0x1d, 0x1e, 0x1f, 0x2d, 0x2e, 0x2f
Datasheet: Publicly available at the TI website https://www.ti.com/
Author: Guenter Roeck
Description
-----------
This driver implements support for the Texas Instruments ADC128D818.
It is described as 'ADC System Monitor with Temperature Sensor'.
The ADC128D818 implements one temperature sensor and seven voltage sensors.
Temperatures are measured in degrees Celsius. There is one set of limits.
When the HOT Temperature Limit is crossed, this will cause an alarm that will
be reasserted until the temperature drops below the HOT Hysteresis.
Measurements are guaranteed between -55 and +125 degrees. The temperature
measurement has a resolution of 0.5 degrees; the limits have a resolution
of 1 degree.
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. All voltage
inputs can measure voltages between 0 and 2.55 volts, with a resolution
of 0.625 mV.
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 by the time the alarm is read. The driver
caches the alarm status for each sensor until it is at least reported
once, to ensure that alarms are reported to user space.
The ADC128D818 only updates its values approximately once per second;
reading it more often will do no harm, but will return 'old' values.
In addition to the scanned address list, the chip can also be configured for
addresses 0x35 to 0x37. Those addresses are not scanned. You have to instantiate
the driver explicitly if the chip is configured for any of those addresses in
your system.
@@ -0,0 +1,60 @@
Kernel driver adm1025
=====================
Supported chips:
* Analog Devices ADM1025, ADM1025A
Prefix: 'adm1025'
Addresses scanned: I2C 0x2c - 0x2e
Datasheet: Publicly available at the Analog Devices website
* Philips NE1619
Prefix: 'ne1619'
Addresses scanned: I2C 0x2c - 0x2d
Datasheet: Publicly available at the Philips website
The NE1619 presents some differences with the original ADM1025:
* Only two possible addresses (0x2c - 0x2d).
* No temperature offset register, but we don't use it anyway.
* No INT mode for pin 16. We don't play with it anyway.
Authors:
- Chen-Yuan Wu <gwu@esoft.com>,
- Jean Delvare <jdelvare@suse.de>
Description
-----------
(This is from Analog Devices.) The ADM1025 is a complete system hardware
monitor for microprocessor-based systems, providing measurement and limit
comparison of various system parameters. Five voltage measurement inputs
are provided, for monitoring +2.5V, +3.3V, +5V and +12V power supplies and
the processor core voltage. The ADM1025 can monitor a sixth power-supply
voltage by measuring its own VCC. One input (two pins) is dedicated to a
remote temperature-sensing diode and an on-chip temperature sensor allows
ambient temperature to be monitored.
One specificity of this chip is that the pin 11 can be hardwired in two
different manners. It can act as the +12V power-supply voltage analog
input, or as the a fifth digital entry for the VID reading (bit 4). It's
kind of strange since both are useful, and the reason for designing the
chip that way is obscure at least to me. The bit 5 of the configuration
register can be used to define how the chip is hardwired. Please note that
it is not a choice you have to make as the user. The choice was already
made by your motherboard's maker. If the configuration bit isn't set
properly, you'll have a wrong +12V reading or a wrong VID reading. The way
the driver handles that is to preserve this bit through the initialization
process, assuming that the BIOS set it up properly beforehand. If it turns
out not to be true in some cases, we'll provide a module parameter to force
modes.
This driver also supports the ADM1025A, which differs from the ADM1025
only in that it has "open-drain VID inputs while the ADM1025 has on-chip
100k pull-ups on the VID inputs". It doesn't make any difference for us.
+101
View File
@@ -0,0 +1,101 @@
Kernel driver adm1026
=====================
Supported chips:
* Analog Devices ADM1026
Prefix: 'adm1026'
Addresses scanned: I2C 0x2c, 0x2d, 0x2e
Datasheet: Publicly available at the Analog Devices website
https://www.onsemi.com/PowerSolutions/product.do?id=ADM1026
Authors:
- Philip Pokorny <ppokorny@penguincomputing.com> for Penguin Computing
- Justin Thiessen <jthiessen@penguincomputing.com>
Module Parameters
-----------------
* 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 Celsius. 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 measurable speed of a
two pulse per revolution fan is 661 RPM.
There are 17 voltage sensors. 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 automatically 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 °C, 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.
@@ -0,0 +1,43 @@
Kernel driver adm1031
=====================
Supported chips:
* Analog Devices ADM1030
Prefix: 'adm1030'
Addresses scanned: I2C 0x2c to 0x2e
Datasheet: Publicly available at the Analog Devices website
https://www.analog.com/en/prod/0%2C2877%2CADM1030%2C00.html
* Analog Devices ADM1031
Prefix: 'adm1031'
Addresses scanned: I2C 0x2c to 0x2e
Datasheet: Publicly available at the Analog Devices website
https://www.analog.com/en/prod/0%2C2877%2CADM1031%2C00.html
Authors:
- Alexandre d'Alton <alex@alexdalton.org>
- Jean Delvare <jdelvare@suse.de>
Description
-----------
The ADM1030 and ADM1031 are digital temperature sensors and fan controllers.
They sense their own temperature as well as the temperature of up to one
(ADM1030) or two (ADM1031) external diodes.
All temperature values are given in degrees Celsius. Resolution is 0.5
degree for the local temperature, 0.125 degree for the remote temperatures.
Each temperature channel has its own high and low limits, plus a critical
limit.
The ADM1030 monitors a single fan speed, while the ADM1031 monitors up to
two. Each fan channel has its own low speed limit.
@@ -0,0 +1,36 @@
Kernel driver adm1177
=====================
Supported chips:
* Analog Devices ADM1177
Prefix: 'adm1177'
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/ADM1177.pdf
Author: Beniamin Bia <beniamin.bia@analog.com>
Description
-----------
This driver supports hardware monitoring for Analog Devices ADM1177
Hot-Swap Controller and Digital Power Monitors with Soft Start Pin.
Usage Notes
-----------
This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst
for details.
Sysfs entries
-------------
The following attributes are supported. Current maximum attribute
is read-write, all other attributes are read-only.
in0_input Measured voltage in millivolts.
curr1_input Measured current in milliamperes.
curr1_max Overcurrent shutdown threshold in milliamperes.
@@ -0,0 +1,37 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver adm1266
=====================
Supported chips:
* Analog Devices ADM1266
Prefix: 'adm1266'
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/ADM1266.pdf
Author: Alexandru Tachici <alexandru.tachici@analog.com>
Description
-----------
This driver supports hardware monitoring for Analog Devices ADM1266 sequencer.
ADM1266 is a sequencer that features voltage readback from 17 channels via an
integrated 12 bit SAR ADC, accessed using a PMBus interface.
The driver is a client driver to the core PMBus driver. Please see
Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Sysfs entries
-------------
The following attributes are supported. Limits are read-write, history reset
attributes are write-only, all other attributes are read-only.
inX_label "voutx"
inX_input Measured voltage.
inX_min Minimum Voltage.
inX_max Maximum voltage.
inX_min_alarm Voltage low alarm.
inX_max_alarm Voltage high alarm.
+172
View File
@@ -0,0 +1,172 @@
Kernel driver adm1275
=====================
Supported chips:
* Analog Devices ADM1075
Prefix: 'adm1075'
Addresses scanned: -
Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1075.pdf
* Analog Devices ADM1272
Prefix: 'adm1272'
Addresses scanned: -
Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1272.pdf
* Analog Devices ADM1273
Prefix: 'adm1273'
Addresses scanned: -
Datasheet: Not yet publicly available
* Analog Devices ADM1275
Prefix: 'adm1275'
Addresses scanned: -
Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1275.pdf
* Analog Devices ADM1276
Prefix: 'adm1276'
Addresses scanned: -
Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1276.pdf
* Analog Devices ADM1278
Prefix: 'adm1278'
Addresses scanned: -
Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1278.pdf
* Analog Devices ADM1281
Prefix: 'adm1281'
Addresses scanned: -
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/adm1281.pdf
* Analog Devices ADM1293/ADM1294
Prefix: 'adm1293', 'adm1294'
Addresses scanned: -
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/ADM1293_1294.pdf
* Silergy SQ24905C
Prefix: 'mc09c'
Addresses scanned: -
Datasheet: https://www.silergy.com/download/downloadFile?id=5669&type=product&ftype=note
Author: Guenter Roeck <linux@roeck-us.net>
Description
-----------
This driver supports hardware monitoring for Analog Devices ADM1075, ADM1272,
ADM1273, ADM1275, ADM1276, ADM1278, ADM1281, ADM1293, ADM1294, and SQ24905C
Hot-Swap Controller and Digital Power Monitors.
ADM1075, ADM1272, ADM1273, ADM1275, ADM1276, ADM1278, ADM1281, ADM1293,
ADM1294 and SQ24905C are hot-swap controllers that allow a circuit board to be
removed from or inserted into a live backplane. They also feature current and
voltage readback via an integrated 12 bit analog-to-digital converter (ADC),
accessed using a PMBus interface.
The driver is a client driver to the core PMBus driver. Please see
Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
-----------
This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.
The ADM1075, unlike many other PMBus devices, does not support internal voltage
or current scaling. Reported voltages, currents, and power are raw measurements,
and will typically have to be scaled.
The shunt value in micro-ohms can be set via device tree at compile-time. Please
refer to the Documentation/devicetree/bindings/hwmon/adi,adm1275.yaml for bindings
if the device tree is used.
Platform data support
---------------------
The driver supports standard PMBus driver platform data. Please see
Documentation/hwmon/pmbus.rst for details.
Sysfs entries
-------------
The following attributes are supported. Limits are read-write, history reset
attributes are write-only, all other attributes are read-only.
======================= =======================================================
inX_label "vin1" or "vout1" depending on chip variant and
configuration. On ADM1075, ADM1293, and ADM1294,
vout1 reports the voltage on the VAUX pin.
inX_input Measured voltage.
inX_min Minimum Voltage.
inX_max Maximum voltage.
inX_min_alarm Voltage low alarm.
inX_max_alarm Voltage high alarm.
inX_highest Historical maximum voltage.
inX_reset_history Write any value to reset history.
curr1_label "iout1"
curr1_input Measured current.
curr1_max Maximum current.
curr1_max_alarm Current high alarm.
curr1_lcrit Critical minimum current. Depending on the chip
configuration, either curr1_lcrit or curr1_crit is
supported, but not both.
curr1_lcrit_alarm Critical current low alarm.
curr1_crit Critical maximum current. Depending on the chip
configuration, either curr1_lcrit or curr1_crit is
supported, but not both.
curr1_crit_alarm Critical current high alarm.
curr1_highest Historical maximum current.
curr1_reset_history Write any value to reset history.
power1_label "pin1"
power1_input Input power.
power1_input_lowest Lowest observed input power. ADM1293 and ADM1294 only.
power1_input_highest Highest observed input power.
power1_reset_history Write any value to reset history.
Power attributes are supported on ADM1075, ADM1272,
ADM1273, ADM1276, ADM1293, and ADM1294.
temp1_input Chip temperature.
temp1_max Maximum chip temperature.
temp1_max_alarm Temperature alarm.
temp1_crit Critical chip temperature.
temp1_crit_alarm Critical temperature high alarm.
temp1_highest Highest observed temperature.
temp1_reset_history Write any value to reset history.
Temperature attributes are supported on ADM1272,
ADM1273, ADM1278, ADM1281 and SQ24905C.
======================= =======================================================
+201
View File
@@ -0,0 +1,201 @@
Kernel driver adm9240
=====================
Supported chips:
* Analog Devices ADM9240
Prefix: 'adm9240'
Addresses scanned: I2C 0x2c - 0x2f
Datasheet: Publicly available at the Analog Devices website
http://www.analog.com/UploadedFiles/Data_Sheets/79857778ADM9240_0.pdf
* Dallas Semiconductor DS1780
Prefix: 'ds1780'
Addresses scanned: I2C 0x2c - 0x2f
Datasheet: Publicly available at the Dallas Semiconductor (Maxim) website
http://pdfserv.maxim-ic.com/en/ds/DS1780.pdf
* National Semiconductor LM81
Prefix: 'lm81'
Addresses scanned: I2C 0x2c - 0x2f
Datasheet: Publicly available at the National Semiconductor website
http://www.national.com/ds.cgi/LM/LM81.pdf
Authors:
- Frodo Looijaard <frodol@dds.nl>,
- Philip Edelbrock <phil@netroedge.com>,
- Michiel Rook <michiel@grendelproject.nl>,
- Grant Coady <gcoady.lk@gmail.com> with guidance
from Jean Delvare <jdelvare@suse.de>
Interface
---------
The I2C addresses listed above assume BIOS has not changed the
chip MSB 5-bit address. Each chip reports a unique manufacturer
identification code as well as the chip revision/stepping level.
Description
-----------
[From ADM9240] The ADM9240 is a complete system hardware monitor for
microprocessor-based systems, providing measurement and limit comparison
of up to four power supplies and two processor core voltages, plus
temperature, two fan speeds and chassis intrusion. Measured values can
be read out via an I2C-compatible serial System Management Bus, and values
for limit comparisons can be programmed in over the same serial bus. The
high speed successive approximation ADC allows frequent sampling of all
analog channels to ensure a fast interrupt response to any out-of-limit
measurement.
The ADM9240, DS1780 and LM81 are register compatible, the following
details are common to the three chips. Chip differences are described
after this section.
Measurements
------------
The measurement cycle
The adm9240 driver will take a measurement reading no faster than once
each two seconds. User-space may read sysfs interface faster than the
measurement update rate and will receive cached data from the most
recent measurement.
ADM9240 has a very fast 320us temperature and voltage measurement cycle
with independent fan speed measurement cycles counting alternating rising
edges of the fan tacho inputs.
DS1780 measurement cycle is about once per second including fan speed.
LM81 measurement cycle is about once per 400ms including fan speed.
The LM81 12-bit extended temperature measurement mode is not supported.
Temperature
-----------
On chip temperature is reported as degrees Celsius as 9-bit signed data
with resolution of 0.5 degrees Celsius. High and low temperature limits
are 8-bit signed data with resolution of one degree Celsius.
Temperature alarm is asserted once the temperature exceeds the high limit,
and is cleared when the temperature falls below the temp1_max_hyst value.
Fan Speed
---------
Two fan tacho inputs are provided, the ADM9240 gates an internal 22.5kHz
clock via a divider to an 8-bit counter. Fan speed (rpm) is calculated by:
rpm = (22500 * 60) / (count * divider)
Automatic fan clock divider
* User sets 0 to fan_min limit
- low speed alarm is disabled
- fan clock divider not changed
- auto fan clock adjuster enabled for valid fan speed reading
* User sets fan_min limit too low
- low speed alarm is enabled
- fan clock divider set to max
- fan_min set to register value 254 which corresponds
to 664 rpm on adm9240
- low speed alarm will be asserted if fan speed is
less than minimum measurable speed
- auto fan clock adjuster disabled
* User sets reasonable fan speed
- low speed alarm is enabled
- fan clock divider set to suit fan_min
- auto fan clock adjuster enabled: adjusts fan_min
* User sets unreasonably high low fan speed limit
- resolution of the low speed limit may be reduced
- alarm will be asserted
- auto fan clock adjuster enabled: adjusts fan_min
* fan speed may be displayed as zero until the auto fan clock divider
adjuster brings fan speed clock divider back into chip measurement
range, this will occur within a few measurement cycles.
Analog Output
-------------
An analog output provides a 0 to 1.25 volt signal intended for an external
fan speed amplifier circuit. The analog output is set to maximum value on
power up or reset. This doesn't do much on the test Intel SE440BX-2.
Voltage Monitor
^^^^^^^^^^^^^^^
Voltage (IN) measurement is internally scaled:
=== =========== =========== ========= ==========
nr label nominal maximum resolution
mV mV mV
=== =========== =========== ========= ==========
0 +2.5V 2500 3320 13.0
1 Vccp1 2700 3600 14.1
2 +3.3V 3300 4380 17.2
3 +5V 5000 6640 26.0
4 +12V 12000 15940 62.5
5 Vccp2 2700 3600 14.1
=== =========== =========== ========= ==========
The reading is an unsigned 8-bit value, nominal voltage measurement is
represented by a reading of 192, being 3/4 of the measurement range.
An alarm is asserted for any voltage going below or above the set limits.
The driver reports and accepts voltage limits scaled to the above table.
VID Monitor
-----------
The chip has five inputs to read the 5-bit VID and reports the mV value
based on detected CPU type.
Chassis Intrusion
-----------------
An alarm is asserted when the CI pin goes active high. The ADM9240
Datasheet has an example of an external temperature sensor driving
this pin. On an Intel SE440BX-2 the Chassis Intrusion header is
connected to a normally open switch.
The ADM9240 provides an internal open drain on this line, and may output
a 20 ms active low pulse to reset an external Chassis Intrusion latch.
Clear the CI latch by writing value 0 to the sysfs intrusion0_alarm file.
Alarm flags reported as 16-bit word
=== ============= ==========================
bit label comment
=== ============= ==========================
0 +2.5 V_Error high or low limit exceeded
1 VCCP_Error high or low limit exceeded
2 +3.3 V_Error high or low limit exceeded
3 +5 V_Error high or low limit exceeded
4 Temp_Error temperature error
6 FAN1_Error fan low limit exceeded
7 FAN2_Error fan low limit exceeded
8 +12 V_Error high or low limit exceeded
9 VCCP2_Error high or low limit exceeded
12 Chassis_Error CI pin went high
=== ============= ==========================
Remaining bits are reserved and thus undefined. It is important to note
that alarm bits may be cleared on read, user-space may latch alarms and
provide the end-user with a method to clear alarm memory.
+123
View File
@@ -0,0 +1,123 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver adp1050
=====================
Supported chips:
* Analog Devices ADP1050
Prefix: 'adp1050'
Addresses scanned: I2C 0x70 - 0x77
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/ADP1050.pdf
* Analog Devices ADP1051
Prefix: 'adp1051'
Addresses scanned: I2C 0x70 - 0x77
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/ADP1051.pdf
* Analog Devices ADP1055
Prefix: 'adp1055'
Addresses scanned: I2C 0x4B - 0x77
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/ADP1055.pdf
* Analog Devices LTP8800-1A/-2/-4A
Prefix: 'ltp8800'
Addresses scanned: -
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/LTP8800-1A.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/LTP8800-2.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/LTP8800-4A.pdf
Authors:
- Radu Sabau <radu.sabau@analog.com>
Description
-----------
This driver supports hardware monitoring for Analog Devices ADP1050, ADP1051,
and ADP1055 Digital Controller for Isolated Power Supply with PMBus interface,
and the LTP8800 step-down μModule regulators.
The ADP1050, ADP1051, and ADP1055 are advanced digital controllers with PMBus™
interface targeting high density, high efficiency dc-to-dc power
conversion used to monitor system temperatures, voltages and currents. The
LTP8800 is a family of step-down μModule regulators that provides microprocessor
core voltage from 54V power distribution architecture. Through the PMBus
interface, the device can monitor input/output voltages, input current and
temperature.
Usage Notes
-----------
This driver does not auto-detect devices. You will have to instantiate
the devices explicitly.
Please see Documentation/i2c/instantiating-devices.rst for details.
Platform data support
---------------------
The driver supports standard PMBus driver platform data.
Sysfs Attributes
----------------
================= ========================================
in1_label "vin"
in1_input Measured input voltage
in1_alarm Input voltage alarm
in1_crit Critical maximum input voltage
in1_crit_alarm Input voltage high alarm
in1_lcrit Critical minimum input voltage
in1_lcrit_alarm Input voltage critical low alarm
in2_label "vout1"
in2_input Measured output voltage
in2_crit Critical maximum output voltage
in2_crit_alarm Output voltage high alarm
in2_lcrit Critical minimum output voltage
in2_lcrit_alarm Output voltage critical low alarm
in2_max Critical maximum output voltage
in2_max_alarm Output voltage critical max alarm
in2_min Critical minimum output voltage
in2_min_alarm Output voltage critical min alarm
curr1_label "iin"
curr1_input Measured input current.
curr1_alarm Input current alarm
curr1_crit Critical maximum input current
curr1_crit_alarm Input current high alarm
curr2_label "iout1"
curr2_input Measured output current
curr2_alarm Output current alarm
curr2_crit Critical maximum output current
curr2_crit_alarm Output current high alarm
curr2_lcrit Critical minimum output current
curr2_lcrit_alarm Output current critical low alarm
curr2_max Critical maximum output current
curr2_max_alarm Output current critical max alarm
power1_label "pout1"
power1_input Measured output power
power1_crit Critical maximum output power
power1_crit_alarm Output power high alarm
temp1_input Measured temperature
temp1_crit Critical high temperature
temp1_crit_alarm Chip temperature critical high alarm
temp1_max Critical maximum temperature
temp1_max_alarm Temperature critical max alarm
temp2_input Measured temperature
temp2_crit Critical high temperature
temp2_crit_alarm Chip temperature critical high alarm
temp2_max Critical maximum temperature
temp2_max_alarm Temperature critical max alarm
================= ========================================
@@ -0,0 +1,65 @@
Kernel driver ads7828
=====================
Supported chips:
* Texas Instruments/Burr-Brown ADS7828
Prefix: 'ads7828'
Datasheet: Publicly available at the Texas Instruments website:
http://focus.ti.com/lit/ds/symlink/ads7828.pdf
* Texas Instruments ADS7830
Prefix: 'ads7830'
Datasheet: Publicly available at the Texas Instruments website:
http://focus.ti.com/lit/ds/symlink/ads7830.pdf
Authors:
- Steve Hardy <shardy@redhat.com>
- Vivien Didelot <vivien.didelot@savoirfairelinux.com>
- Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
Platform data
-------------
The ads7828 driver accepts an optional ads7828_platform_data structure (defined
in include/linux/platform_data/ads7828.h). The structure fields are:
* diff_input: (bool) Differential operation
set to true for differential mode, false for default single ended mode.
* ext_vref: (bool) External reference
set to true if it operates with an external reference, false for default
internal reference.
* vref_mv: (unsigned int) Voltage reference
if using an external reference, set this to the reference voltage in mV,
otherwise it will default to the internal value (2500mV). This value will be
bounded with limits accepted by the chip, described in the datasheet.
If no structure is provided, the configuration defaults to single ended
operation and internal voltage reference (2.5V).
Description
-----------
This driver implements support for the Texas Instruments ADS7828 and ADS7830.
The ADS7828 device is a 12-bit 8-channel A/D converter, while the ADS7830 does
8-bit sampling.
It can operate in single ended mode (8 +ve inputs) or in differential mode,
where 4 differential pairs can be measured.
The chip also has the facility to use an external voltage reference. This
may be required if your hardware supplies the ADS7828 from a 5V supply, see
the datasheet for more details.
There is no reliable way to identify this chip, so the driver will not scan
some addresses to try to auto-detect it. That means that you will have to
statically declare the device in the platform support code.
@@ -0,0 +1,94 @@
Kernel driver adt7410
=====================
Supported chips:
* Analog Devices ADT7410
Prefix: 'adt7410'
Addresses scanned: None
Datasheet: Publicly available at the Analog Devices website
https://www.analog.com/static/imported-files/data_sheets/ADT7410.pdf
* Analog Devices ADT7420
Prefix: 'adt7420'
Addresses scanned: None
Datasheet: Publicly available at the Analog Devices website
https://www.analog.com/static/imported-files/data_sheets/ADT7420.pdf
* Analog Devices ADT7310
Prefix: 'adt7310'
Addresses scanned: None
Datasheet: Publicly available at the Analog Devices website
https://www.analog.com/static/imported-files/data_sheets/ADT7310.pdf
* Analog Devices ADT7320
Prefix: 'adt7320'
Addresses scanned: None
Datasheet: Publicly available at the Analog Devices website
https://www.analog.com/static/imported-files/data_sheets/ADT7320.pdf
Author: Hartmut Knaack <knaack.h@gmx.de>
Description
-----------
The ADT7310/ADT7410 is a temperature sensor with rated temperature range of
-55°C to +150°C. It has a high accuracy of +/-0.5°C and can be operated at a
resolution of 13 bits (0.0625°C) or 16 bits (0.0078°C). The sensor provides an
INT pin to indicate that a minimum or maximum temperature set point has been
exceeded, as well as a critical temperature (CT) pin to indicate that the
critical temperature set point has been exceeded. Both pins can be set up with a
common hysteresis of 0°C - 15°C and a fault queue, ranging from 1 to 4 events.
Both pins can individually set to be active-low or active-high, while the whole
device can either run in comparator mode or interrupt mode. The ADT7410 supports
continuous temperature sampling, as well as sampling one temperature value per
second or even just get one sample on demand for power saving. Besides, it can
completely power down its ADC, if power management is required.
The ADT7320/ADT7420 is register compatible, the only differences being the
package, a slightly narrower operating temperature range (-40°C to +150°C), and
a better accuracy (0.25°C instead of 0.50°C.)
The difference between the ADT7310/ADT7320 and ADT7410/ADT7420 is the control
interface, the ADT7310 and ADT7320 use SPI while the ADT7410 and ADT7420 use
I2C.
Configuration Notes
-------------------
Since the device uses one hysteresis value, which is an offset to minimum,
maximum and critical temperature, it can only be set for temp#_max_hyst.
However, temp#_min_hyst and temp#_crit_hyst show their corresponding
hysteresis.
The device is set to 16 bit resolution and comparator mode.
sysfs-Interface
---------------
======================== ====================================================
temp#_input temperature input
temp#_min temperature minimum setpoint
temp#_max temperature maximum setpoint
temp#_crit critical temperature setpoint
temp#_min_hyst hysteresis for temperature minimum (read-only)
temp#_max_hyst hysteresis for temperature maximum (read/write)
temp#_crit_hyst hysteresis for critical temperature (read-only)
temp#_min_alarm temperature minimum alarm flag
temp#_max_alarm temperature maximum alarm flag
temp#_crit_alarm critical temperature alarm flag
======================== ====================================================
@@ -0,0 +1,75 @@
Kernel driver adt7411
=====================
Supported chips:
* Analog Devices ADT7411
Prefix: 'adt7411'
Addresses scanned: 0x48, 0x4a, 0x4b
Datasheet: Publicly available at the Analog Devices website
Author: Wolfram Sang (based on adt7470 by Darrick J. Wong)
Description
-----------
This driver implements support for the Analog Devices ADT7411 chip. There may
be other chips that implement this interface.
The ADT7411 can use an I2C/SMBus compatible 2-wire interface or an
SPI-compatible 4-wire interface. It provides a 10-bit analog to digital
converter which measures 1 temperature, vdd and 8 input voltages. It has an
internal temperature sensor, but an external one can also be connected (one
loses 2 inputs then). There are high- and low-limit registers for all inputs.
Check the datasheet for details.
sysfs-Interface
---------------
================ =================================
in0_input vdd voltage input
in0_min vdd low limit
in0_max vdd high limit
in0_alarm vdd alarm
in[1-8]_input analog 1-8 input
in[1-8]_min analog input low limit
in[1-8]_max analog input high limit
in[1-8]_alarm analog input alarm
temp1_input internal temperature input
temp1_min internal temperature low limit
temp1_max internal temperature high limit
temp1_min_alarm internal temperature low alarm
temp1_max_alarm internal temperature high alarm
================ =================================
If the external temperature sensor is enabled, the following attributes are
also available:
================ ================================================
temp2_input external temperature input
temp2_min external temperature low limit
temp2_max external temperature high limit
temp2_min_alarm external temperature low alarm
temp2_max_alarm external temperature high alarm
temp2_fault external temperature sensor fault
================ ================================================
If the external temperature sensor is enabled, analog inputs in1 and in2 are
not available.
Besides standard interfaces, this driver adds (0 = off, 1 = on):
============== =======================================================
adc_ref_vdd Use vdd as reference instead of 2.25 V
fast_sampling Sample at 22.5 kHz instead of 1.4 kHz, but drop filters
no_average Turn off averaging over 16 samples
============== =======================================================
Notes
-----
SPI is not supported yet.
@@ -0,0 +1,70 @@
Kernel driver adt7462
=====================
Supported chips:
* Analog Devices ADT7462
Prefix: 'adt7462'
Addresses scanned: I2C 0x58, 0x5C
Datasheet: Publicly available at the Analog Devices website
Author: Darrick J. Wong
Description
-----------
This driver implements support for the Analog Devices ADT7462 chip family.
This chip is a bit of a beast. It has 8 counters for measuring fan speed. It
can also measure 13 voltages or 4 temperatures, or various combinations of the
two. See the chip documentation for more details about the exact set of
configurations. This driver does not allow one to configure the chip; that is
left to the system designer.
A sophisticated control system for the PWM outputs is designed into the ADT7462
that allows fan speed to be adjusted automatically based on any of the three
temperature sensors. Each PWM output is individually adjustable and
programmable. Once configured, the ADT7462 will adjust the PWM outputs in
response to the measured temperatures without further host intervention. This
feature can also be disabled for manual control of the PWM's.
Each of the measured inputs (voltage, temperature, fan speed) has
corresponding high/low limit values. The ADT7462 will signal an ALARM if
any measured value exceeds either limit.
The ADT7462 samples all inputs continuously. The driver will not read
the registers more often than once every other second. Further,
configuration data is only read once per minute.
Special Features
----------------
The ADT7462 have a 10-bit ADC and can therefore measure temperatures
with 0.25 degC resolution.
The Analog Devices datasheet is very detailed and describes a procedure for
determining an optimal configuration for the automatic PWM control.
The driver will report sensor labels when it is able to determine that
information from the configuration registers.
Configuration Notes
-------------------
Besides standard interfaces driver adds the following:
* PWM Control
* pwm#_auto_point1_pwm and temp#_auto_point1_temp and
* pwm#_auto_point2_pwm and temp#_auto_point2_temp -
- point1: Set the pwm speed at a lower temperature bound.
- point2: Set the pwm speed at a higher temperature bound.
The ADT7462 will scale the pwm between the lower and higher pwm speed when
the temperature is between the two temperature boundaries. PWM values range
from 0 (off) to 255 (full speed). Fan speed will be set to maximum when the
temperature sensor associated with the PWM control exceeds temp#_max.
@@ -0,0 +1,94 @@
Kernel driver adt7470
=====================
Supported chips:
* Analog Devices ADT7470
Prefix: 'adt7470'
Addresses scanned: I2C 0x2C, 0x2E, 0x2F
Datasheet: Publicly available at the Analog Devices website
Author: Darrick J. Wong
Description
-----------
This driver implements support for the Analog Devices ADT7470 chip. There may
be other chips that implement this interface.
The ADT7470 uses the 2-wire interface compatible with the SMBus 2.0
specification. Using an analog to digital converter it measures up to ten (10)
external temperatures. It has four (4) 16-bit counters for measuring fan speed.
There are four (4) PWM outputs that can be used to control fan speed.
A sophisticated control system for the PWM outputs is designed into the ADT7470
that allows fan speed to be adjusted automatically based on any of the ten
temperature sensors. Each PWM output is individually adjustable and
programmable. Once configured, the ADT7470 will adjust the PWM outputs in
response to the measured temperatures with further host intervention. This
feature can also be disabled for manual control of the PWM's.
Each of the measured inputs (temperature, fan speed) has corresponding high/low
limit values. The ADT7470 will signal an ALARM if any measured value exceeds
either limit.
The ADT7470 samples all inputs continuously. A kernel thread is started up for
the purpose of periodically querying the temperature sensors, thus allowing the
automatic fan pwm control to set the fan speed. The driver will not read the
registers more often than once every 5 seconds. Further, configuration data is
only read once per minute.
Special Features
----------------
The ADT7470 has a 8-bit ADC and is capable of measuring temperatures with 1
degC resolution.
The Analog Devices datasheet is very detailed and describes a procedure for
determining an optimal configuration for the automatic PWM control.
Configuration Notes
-------------------
Besides standard interfaces driver adds the following:
* PWM Control
* pwm#_auto_point1_pwm and pwm#_auto_point1_temp and
* pwm#_auto_point2_pwm and pwm#_auto_point2_temp -
- point1: Set the pwm speed at a lower temperature bound.
- point2: Set the pwm speed at a higher temperature bound.
The ADT7470 will scale the pwm between the lower and higher pwm speed when
the temperature is between the two temperature boundaries. PWM values range
from 0 (off) to 255 (full speed). Fan speed will be set to maximum when the
temperature sensor associated with the PWM control exceeds
pwm#_auto_point2_temp.
The driver also allows control of the PWM frequency:
* pwm1_freq
The PWM frequency is rounded to the nearest one of:
* 11.0 Hz
* 14.7 Hz
* 22.1 Hz
* 29.4 Hz
* 35.3 Hz
* 44.1 Hz
* 58.8 Hz
* 88.2 Hz
* 1.4 kHz
* 22.5 kHz
Notes
-----
The temperature inputs no longer need to be read periodically from userspace in
order for the automatic pwm algorithm to run. This was the case for earlier
versions of the driver.
+157
View File
@@ -0,0 +1,157 @@
Kernel driver adt7475
=====================
Supported chips:
* Analog Devices ADT7473
Prefix: 'adt7473'
Addresses scanned: I2C 0x2C, 0x2D, 0x2E
Datasheet: Publicly available at the On Semiconductors website
* Analog Devices ADT7475
Prefix: 'adt7475'
Addresses scanned: I2C 0x2E
Datasheet: Publicly available at the On Semiconductors website
* Analog Devices ADT7476
Prefix: 'adt7476'
Addresses scanned: I2C 0x2C, 0x2D, 0x2E
Datasheet: Publicly available at the On Semiconductors website
* Analog Devices ADT7490
Prefix: 'adt7490'
Addresses scanned: I2C 0x2C, 0x2D, 0x2E
Datasheet: Publicly available at the On Semiconductors website
Authors:
- Jordan Crouse
- Hans de Goede
- Darrick J. Wong (documentation)
- Jean Delvare
Description
-----------
This driver implements support for the Analog Devices ADT7473, ADT7475,
ADT7476 and ADT7490 chip family. The ADT7473 and ADT7475 differ only in
minor details. The ADT7476 has additional features, including extra voltage
measurement inputs and VID support. The ADT7490 also has additional
features, including extra voltage measurement inputs and PECI support. All
the supported chips will be collectively designed by the name "ADT747x" in
the rest of this document.
The ADT747x uses the 2-wire interface compatible with the SMBus 2.0
specification. Using an analog to digital converter it measures three (3)
temperatures and two (2) or more voltages. It has four (4) 16-bit counters
for measuring fan speed. There are three (3) PWM outputs that can be used
to control fan speed.
A sophisticated control system for the PWM outputs is designed into the
ADT747x that allows fan speed to be adjusted automatically based on any of the
three temperature sensors. Each PWM output is individually adjustable and
programmable. Once configured, the ADT747x will adjust the PWM outputs in
response to the measured temperatures without further host intervention.
This feature can also be disabled for manual control of the PWM's.
Each of the measured inputs (voltage, temperature, fan speed) has
corresponding high/low limit values. The ADT747x will signal an ALARM if
any measured value exceeds either limit.
The ADT747x samples all inputs continuously. The driver will not read
the registers more often than once every other second. Further,
configuration data is only read once per minute.
Chip Differences Summary
------------------------
ADT7473:
* 2 voltage inputs
* system acoustics optimizations (not implemented)
ADT7475:
* 2 voltage inputs
ADT7476:
* 5 voltage inputs
* VID support
ADT7490:
* 6 voltage inputs
* 1 Imon input
* PECI support (not implemented)
* 2 GPIO pins (not implemented)
* system acoustics optimizations (not implemented)
Sysfs Mapping
-------------
==== =========== =========== ========= ==========
in ADT7490 ADT7476 ADT7475 ADT7473
==== =========== =========== ========= ==========
in0 2.5VIN (22) 2.5VIN (22) - -
in1 VCCP (23) VCCP (23) VCCP (14) VCCP (14)
in2 VCC (4) VCC (4) VCC (4) VCC (3)
in3 5VIN (20) 5VIN (20)
in4 12VIN (21) 12VIN (21)
in5 VTT (8)
in6 Imon (19)
==== =========== =========== ========= ==========
Special Features
----------------
The ADT747x has a 10-bit ADC and can therefore measure temperatures
with a resolution of 0.25 degree Celsius. Temperature readings can be
configured either for two's complement format or "Offset 64" format,
wherein 64 is subtracted from the raw value to get the temperature value.
The datasheet is very detailed and describes a procedure for determining
an optimal configuration for the automatic PWM control.
Fan Speed Control
-----------------
The driver exposes two trip points per PWM channel.
- point1: Set the PWM speed at the lower temperature bound
- point2: Set the PWM speed at the higher temperature bound
The ADT747x will scale the PWM linearly between the lower and higher PWM
speed when the temperature is between the two temperature boundaries.
Temperature boundaries are associated to temperature channels rather than
PWM outputs, and a given PWM output can be controlled by several temperature
channels. As a result, the ADT747x may compute more than one PWM value
for a channel at a given time, in which case the maximum value (fastest
fan speed) is applied. PWM values range from 0 (off) to 255 (full speed).
Fan speed may be set to maximum when the temperature sensor associated with
the PWM control exceeds temp#_max.
At Tmin - hysteresis the PWM output can either be off (0% duty cycle) or at the
minimum (i.e. auto_point1_pwm). This behaviour can be configured using the
`pwm[1-*]_stall_disable sysfs attribute`. A value of 0 means the fans will shut
off. A value of 1 means the fans will run at auto_point1_pwm.
The responsiveness of the ADT747x to temperature changes can be configured.
This allows smoothing of the fan speed transition. To set the transition time
set the value in ms in the `temp[1-*]_smoothing` sysfs attribute.
Notes
-----
The nVidia binary driver presents an ADT7473 chip via an on-card i2c bus.
Unfortunately, they fail to set the i2c adapter class, so this driver may
fail to find the chip until the nvidia driver is patched.
+64
View File
@@ -0,0 +1,64 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver aht10
=====================
Supported chips:
* Aosong AHT10/AHT20
Prefix: 'aht10'
Addresses scanned: None
Datasheet(AHT10):
Chinese: http://www.aosong.com/userfiles/files/media/AHT10%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8C%20A3%2020201210.pdf
English: https://server4.eca.ir/eshop/AHT10/Aosong_AHT10_en_draft_0c.pdf
Datasheet(AHT20):
English: http://www.aosong.com/userfiles/files/media/Data%20Sheet%20AHT20.pdf
* Aosong DHT20
Prefix: 'dht20'
Addresses scanned: None
Datasheet: https://www.digikey.co.nz/en/htmldatasheets/production/9184855/0/0/1/101020932
Author: Johannes Cornelis Draaijer <jcdra1@gmail.com>
Description
-----------
The AHT10/AHT20 is a Temperature and Humidity sensor
The address of this i2c device may only be 0x38
Special Features
----------------
AHT20, DHT20 has additional CRC8 support which is sent as the last byte of the sensor
values.
Usage Notes
-----------
This driver does not probe for AHT10/ATH20 devices, as there is no reliable
way to determine if an i2c chip is or isn't an AHT10/AHT20. The device has
to be instantiated explicitly with the address 0x38. See
Documentation/i2c/instantiating-devices.rst for details.
Sysfs entries
-------------
=============== ============================================
temp1_input Measured temperature in millidegrees Celsius
humidity1_input Measured humidity in %H
update_interval The minimum interval for polling the sensor,
in milliseconds. Writable. Must be at
least 2000.
=============== ============================================
+113
View File
@@ -0,0 +1,113 @@
Kernel driver amc6821
=====================
Supported chips:
Texas Instruments AMC6821
Prefix: 'amc6821'
Addresses scanned: 0x18, 0x19, 0x1a, 0x2c, 0x2d, 0x2e, 0x4c, 0x4d, 0x4e
Datasheet: http://focus.ti.com/docs/prod/folders/print/amc6821.html
Authors:
Tomaz Mertelj <tomaz.mertelj@guest.arnes.si>
Description
-----------
This driver implements support for the Texas Instruments amc6821 chip.
The chip has one on-chip and one remote temperature sensor and one pwm fan
regulator.
The pwm can be controlled either from software or automatically.
The driver provides the following sensor accesses in sysfs:
======================= == ===============================================
temp1_input ro on-chip temperature
temp1_min rw "
temp1_max rw "
temp1_crit rw "
temp1_min_alarm ro "
temp1_max_alarm ro "
temp1_crit_alarm ro "
temp2_input ro remote temperature
temp2_min rw "
temp2_max rw "
temp2_crit rw "
temp2_min_alarm ro "
temp2_max_alarm ro "
temp2_crit_alarm ro "
temp2_fault ro "
fan1_input ro tachometer speed
fan1_min rw "
fan1_max rw "
fan1_fault ro "
fan1_pulses rw Pulses per revolution can be either 2 or 4.
fan1_target rw Target fan speed, to be used with pwm1_enable
mode 4.
pwm1 rw pwm1
pwm1_enable rw regulator mode, 1=open loop, 2=fan controlled
by remote temperature, 3=fan controlled by
combination of the on-chip temperature and
remote-sensor temperature,
4=fan controlled by target rpm set with
fan1_target attribute.
pwm1_mode rw Fan duty control mode (0=DC, 1=PWM)
pwm1_auto_channels_temp ro 1 if pwm_enable==2, 3 if pwm_enable==3
pwm1_auto_point1_pwm ro Hardwired to 0, shared for both
temperature channels.
pwm1_auto_point2_pwm rw This value is shared for both temperature
channels.
pwm1_auto_point3_pwm rw Hardwired to 255, shared for both
temperature channels.
temp1_auto_point1_temp ro Hardwired to temp2_auto_point1_temp
which is rw. Below this temperature fan stops.
temp1_auto_point2_temp rw The low-temperature limit of the proportional
range. Below this temperature
pwm1 = pwm1_auto_point2_pwm. It can go from
0 degree C to 124 degree C in steps of
4 degree C. Read it out after writing to get
the actual value.
temp1_auto_point3_temp rw Above this temperature fan runs at maximum
speed. It can go from temp1_auto_point2_temp.
It can only have certain discrete values
which depend on temp1_auto_point2_temp and
pwm1_auto_point2_pwm. Read it out after
writing to get the actual value.
temp2_auto_point1_temp rw Must be between 0 degree C and 63 degree C and
it defines the passive cooling temperature.
Below this temperature the fan stops in
the closed loop mode.
temp2_auto_point2_temp rw The low-temperature limit of the proportional
range. Below this temperature
pwm1 = pwm1_auto_point2_pwm. It can go from
0 degree C to 124 degree C in steps
of 4 degree C.
temp2_auto_point3_temp rw Above this temperature fan runs at maximum
speed. It can only have certain discrete
values which depend on temp2_auto_point2_temp
and pwm1_auto_point2_pwm. Read it out after
writing to get actual value.
======================= == ===============================================
Module parameters
-----------------
If your board has a BIOS that initializes the amc6821 correctly, you should
load the module with: init=0.
If your board BIOS doesn't initialize the chip, or you want
different settings, you can set the following parameters:
- init=1,
- pwminv: 0 default pwm output, 1 inverts pwm output.
@@ -0,0 +1,57 @@
Kernel driver aps-379
=====================
Supported chips:
* Sony APS-379
Prefix: 'aps-379'
Addresses scanned: -
Authors:
- Chris Packham
Description
-----------
This driver implements support for the PMBus monitor on the Sony APS-379
modular power supply. The APS-379 deviates from the PMBus standard for the
READ_VOUT command by using the linear11 format instead of linear16.
The known supported PMBus commands are:
=== ============================= ========= ======= =====
Cmd Function Protocol Scaling Bytes
=== ============================= ========= ======= =====
01 On / Off Command (OPERATION) Byte R/W -- 1
10 WRITE_PROTECT Byte R/W -- 1
3B FAN_COMMAND_1 Word R/W -- 2
46 Current Limit (in percent) Word R/W 2^0 2
47 Current Limit Fault Response Byte R/W -- 1
79 Alarm Data Bits (STATUS_WORD) Word Rd -- 2
8B Output Voltage (READ_VOUT) Word Rd 2^-4 2
8C Output Current (READ_IOUT) Word Rd 2^-2 2
8D Power Supply Ambient Temp Word Rd 2^0 2
90 READ_FAN_SPEED_1 Word Rd 2^6 2
91 READ_FAN_SPEED_2 Word Rd 2^6 2
96 Output Wattage (READ_POUT) Word Rd 2^1 2
97 Input Wattage (READ_PIN) Word Rd 2^1 2
9A Unit Model Number (MFR_MODEL) Block R/W -- 10
9B Unit Revision Number Block R/W -- 10
9E Unit Serial Number Block R/W -- 8
99 Unit Manufacturer ID (MFR_ID) Block R/W -- 8
D0 Unit Run Time Information Block Rd -- 4
D5 Firmware Version Rd cust -- 8
B0 User Data 1 (USER_DATA_00) Block R/W -- 4
B1 User Data 2 (USER_DATA_01) Block R/W -- 4
B2 User Data 3 (USER_DATA_02) Block R/W -- 4
B3 User Data 4 (USER_DATA_03) Block R/W -- 4
B4 User Data 5 (USER_DATA_04) Block R/W -- 4
B5 User Data 6 (USER_DATA_05) Block R/W -- 4
B6 User Data 7 (USER_DATA_06) Block R/W -- 4
B7 User Data 8 (USER_DATA_07) Block R/W -- 4
F0 Calibration command Byte R/W -- 1
F1 Calibration data Word Wr 2^9 2
F2 Unlock Calibration Byte Wr -- 1
=== ============================= ========= ======= =====
@@ -0,0 +1,117 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver aquacomputer-d5next
=================================
Supported devices:
* Aquacomputer Aquaero 5/6 fan controllers
* Aquacomputer D5 Next watercooling pump
* Aquacomputer Farbwerk RGB controller
* Aquacomputer Farbwerk 360 RGB controller
* Aquacomputer Octo fan controller
* Aquacomputer Quadro fan controller
* Aquacomputer High Flow Next sensor
* Aquacomputer Leakshield leak prevention system
* Aquacomputer Aquastream XT watercooling pump
* Aquacomputer Aquastream Ultimate watercooling pump
* Aquacomputer Poweradjust 3 fan controller
* Aquacomputer High Flow USB flow meter
* Aquacomputer MPS Flow devices
Author: Aleksa Savic
Description
-----------
This driver exposes hardware sensors of listed Aquacomputer devices, which
communicate through proprietary USB HID protocols.
The Aquaero devices expose eight physical, eight virtual and four calculated
virtual temperature sensors, as well as two flow sensors. The fans expose their
speed (in RPM), power, voltage and current. Temperature offsets and fan speeds
can be controlled.
For the D5 Next pump, available sensors are pump and fan speed, power, voltage
and current, as well as coolant temperature and eight virtual temp sensors. Also
available through debugfs are the serial number, firmware version and power-on
count. Attaching a fan to it is optional and allows it to be controlled using
temperature curves directly from the pump. If it's not connected, the fan-related
sensors will report zeroes.
The pump can be configured either through software or via its physical
interface. Configuring the pump through this driver is not implemented, as it
seems to require sending it a complete configuration. That includes addressable
RGB LEDs, for which there is no standard sysfs interface. Thus, that task is
better suited for userspace tools.
The Octo exposes four physical and sixteen virtual temperature sensors, a flow sensor
as well as eight PWM controllable fans, along with their speed (in RPM), power, voltage
and current. Flow sensor pulses are also available.
The Quadro exposes four physical and sixteen virtual temperature sensors, a flow
sensor and four PWM controllable fans, along with their speed (in RPM), power,
voltage and current. Flow sensor pulses are also available.
The Farbwerk and Farbwerk 360 expose four temperature sensors. Additionally,
sixteen virtual temperature sensors of the Farbwerk 360 are exposed.
The High Flow Next exposes +5V voltages, water quality, conductivity and flow readings.
A temperature sensor can be connected to it, in which case it provides its reading
and an estimation of the dissipated/absorbed power in the liquid cooling loop.
The Leakshield exposes two temperature sensors and coolant pressure (current, min, max and
target readings). It also exposes the estimated reservoir volume and how much of it is
filled with coolant. Pump RPM and flow can be set to enhance on-device calculations,
but this is not yet implemented here.
The Aquastream XT pump exposes temperature readings for the coolant, external sensor
and fan IC. It also exposes pump and fan speeds (in RPM), voltages, as well as pump
current.
The Aquastream Ultimate pump exposes coolant temp and an external temp sensor, along
with speed, power, voltage and current of both the pump and optionally connected fan.
It also exposes pressure and flow speed readings.
The Poweradjust 3 controller exposes a single external temperature sensor.
The High Flow USB exposes an internal and external temperature sensor, and a flow meter.
The MPS Flow devices expose the same entries as the High Flow USB because they have
the same USB product ID and report sensors equivalently.
Depending on the device, not all sysfs and debugfs entries will be available.
Writing to virtual temperature sensors is not currently supported.
Usage notes
-----------
The devices communicate via HID reports. The driver is loaded automatically by
the kernel and supports hotswapping.
Sysfs entries
-------------
================ ==============================================================
temp[1-20]_input Physical/virtual temperature sensors (in millidegrees Celsius)
temp[1-8]_offset Temperature sensor correction offset (in millidegrees Celsius)
fan[1-9]_input Pump/fan speed (in RPM) / Flow speed (in dL/h)
fan1_min Minimal fan speed (in RPM)
fan1_max Maximal fan speed (in RPM)
fan1_target Target fan speed (in RPM)
fan5_pulses Quadro flow sensor pulses
fan9_pulses Octo flow sensor pulses
power[1-8]_input Pump/fan power (in micro Watts)
in[0-7]_input Pump/fan voltage (in milli Volts)
curr[1-8]_input Pump/fan current (in milli Amperes)
pwm[1-8] Fan PWM (0 - 255)
================ ==============================================================
Debugfs entries
---------------
================ =================================================
serial_number Serial number of the device
firmware_version Version of installed firmware
power_cycles Count of how many times the device was powered on
================ =================================================
@@ -0,0 +1,56 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver arctic_fan_controller
=====================================
Supported devices:
* ARCTIC Fan Controller (USB HID, VID 0x3904, PID 0xF001)
Author: Aureo Serrano de Souza <aureo.serrano@arctic.de>
Description
-----------
This driver provides hwmon support for the ARCTIC Fan Controller, a USB
Custom HID device with 10 fan channels. The device sends IN reports about
once per second containing current RPM values (bytes 11-30, 10 x uint16 LE).
Fan speed control is manual-only: the device does not change PWM
autonomously; it only applies a new duty cycle when it receives an OUT
report from the host.
After the device applies an OUT report, it sends back a 2-byte ACK IN
report (Report ID 0x02, byte 1 = 0x00 on success) confirming the command
was applied.
Usage notes
-----------
Since it is a USB device, hotplug is supported. The device is autodetected.
The device does not support GET_REPORT, so the driver cannot read back the
current hardware PWM state at probe time. The cached PWM values (readable
via pwm[1-10]) start at 0 and reflect only values that have been
successfully written. Because each OUT report carries all 10 channel values,
writing a single channel also sends the cached values for all other channels.
Users should set all channels to the desired values before relying on the
cached state.
On system suspend, the device may lose power and reset its PWM channels to
hardware defaults. The driver clears its cached duty values on resume so
that reads reflect the unknown hardware state rather than stale pre-suspend
values. Userspace is responsible for re-applying the desired duty cycles
after resume.
Sysfs entries
-------------
================ ==============================================================
fan[1-10]_input Fan speed in RPM (read-only). Updated from IN reports at ~1 Hz.
pwm[1-10] PWM duty cycle (0-255). Write: sends an OUT report setting the
duty cycle (scaled from 0-255 to 0-100% for the device);
the cached value is updated only after the device ACKs the
command with a success status. Read: returns the last
successfully written value; initialized to 0 at driver load
and after resume (hardware state unknown).
================ ==============================================================
@@ -0,0 +1,73 @@
Kernel driver asb100
====================
Supported Chips:
* Asus ASB100 and ASB100-A "Bach"
Prefix: 'asb100'
Addresses scanned: I2C 0x2d
Datasheet: none released
Author: Mark M. Hoffman <mhoffman@lightlink.com>
Description
-----------
This driver implements support for the Asus ASB100 and ASB100-A "Bach".
These are custom ASICs available only on Asus mainboards. Asus refuses to
supply a datasheet for these chips. Thanks go to many people who helped
investigate their hardware, including:
Vitaly V. Bursov
Alexander van Kaam (author of MBM for Windows)
Bertrik Sikken
The ASB100 implements seven voltage sensors, three fan rotation speed
sensors, four temperature sensors, VID lines and alarms. In addition to
these, the ASB100-A also implements a single PWM controller for fans 2 and
3 (i.e. one setting controls both.) If you have a plain ASB100, the PWM
controller will simply not work (or maybe it will for you... it doesn't for
me).
Temperatures are measured and reported in degrees Celsius.
Fan speeds are reported in RPM (rotations per minute). An alarm is
triggered if the rotation speed has dropped below a programmable limit.
Voltage sensors (also known as IN sensors) report values in volts.
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.
Alarms: (TODO question marks indicate may or may not work)
- 0x0001 => in0 (?)
- 0x0002 => in1 (?)
- 0x0004 => in2
- 0x0008 => in3
- 0x0010 => temp1 [1]_
- 0x0020 => temp2
- 0x0040 => fan1
- 0x0080 => fan2
- 0x0100 => in4
- 0x0200 => in5 (?) [2]_
- 0x0400 => in6 (?) [2]_
- 0x0800 => fan3
- 0x1000 => chassis switch
- 0x2000 => temp3
.. [1] This alarm will only trigger if the hysteresis value is 127C.
I.e. it behaves the same as w83781d.
.. [2] The min and max registers for these values appear to
be read-only or otherwise stuck at 0x00.
TODO:
* Experiment with fan divisors > 8.
* Experiment with temp. sensor types.
* Are there really 13 voltage inputs? Probably not...
* Cleanups, no doubt...
+326
View File
@@ -0,0 +1,326 @@
=====================
Kernel driver asc7621
=====================
Supported chips:
Andigilog aSC7621 and aSC7621a
Prefix: 'asc7621'
Addresses scanned: I2C 0x2c, 0x2d, 0x2e
Datasheet: http://www.fairview5.com/linux/asc7621/asc7621.pdf
Author:
George Joseph
Description provided by Dave Pivin @ Andigilog:
Andigilog has both the PECI and pre-PECI versions of the Heceta-6, as
Intel calls them. Heceta-6e has high frequency PWM and Heceta-6p has
added PECI and a 4th thermal zone. The Andigilog aSC7611 is the
Heceta-6e part and aSC7621 is the Heceta-6p part. They are both in
volume production, shipping to Intel and their subs.
We have enhanced both parts relative to the governing Intel
specification. First enhancement is temperature reading resolution. We
have used registers below 20h for vendor-specific functions in addition
to those in the Intel-specified vendor range.
Our conversion process produces a result that is reported as two bytes.
The fan speed control uses this finer value to produce a "step-less" fan
PWM output. These two bytes are "read-locked" to guarantee that once a
high or low byte is read, the other byte is locked-in until after the
next read of any register. So to get an atomic reading, read high or low
byte, then the very next read should be the opposite byte. Our data
sheet says 10-bits of resolution, although you may find the lower bits
are active, they are not necessarily reliable or useful externally. We
chose not to mask them.
We employ significant filtering that is user tunable as described in the
data sheet. Our temperature reports and fan PWM outputs are very smooth
when compared to the competition, in addition to the higher resolution
temperature reports. The smoother PWM output does not require user
intervention.
We offer GPIO features on the former VID pins. These are open-drain
outputs or inputs and may be used as general purpose I/O or as alarm
outputs that are based on temperature limits. These are in 19h and 1Ah.
We offer flexible mapping of temperature readings to thermal zones. Any
temperature may be mapped to any zone, which has a default assignment
that follows Intel's specs.
Since there is a fan to zone assignment that allows for the "hotter" of
a set of zones to control the PWM of an individual fan, but there is no
indication to the user, we have added an indicator that shows which zone
is currently controlling the PWM for a given fan. This is in register
00h.
Both remote diode temperature readings may be given an offset value such
that the reported reading as well as the temperature used to determine
PWM may be offset for system calibration purposes.
PECI Extended configuration allows for having more than two domains per
PECI address and also provides an enabling function for each PECI
address. One could use our flexible zone assignment to have a zone
assigned to up to 4 PECI addresses. This is not possible in the default
Intel configuration. This would be useful in multi-CPU systems with
individual fans on each that would benefit from individual fan control.
This is in register 0Eh.
The tachometer measurement system is flexible and able to adapt to many
fan types. We can also support pulse-stretched PWM so that 3-wire fans
may be used. These characteristics are in registers 04h to 07h.
Finally, we have added a tach disable function that turns off the tach
measurement system for individual tachs in order to save power. That is
in register 75h.
--------------------------------------------------------------------------
aSC7621 Product Description
===========================
The aSC7621 has a two wire digital interface compatible with SMBus 2.0.
Using a 10-bit ADC, the aSC7621 measures the temperature of two remote diode
connected transistors as well as its own die. Support for Platform
Environmental Control Interface (PECI) is included.
Using temperature information from these four zones, an automatic fan speed
control algorithm is employed to minimize acoustic impact while achieving
recommended CPU temperature under varying operational loads.
To set fan speed, the aSC7621 has three independent pulse width modulation
(PWM) outputs that are controlled by one, or a combination of three,
temperature zones. Both high- and low-frequency PWM ranges are supported.
The aSC7621 also includes a digital filter that can be invoked to smooth
temperature readings for better control of fan speed and minimum acoustic
impact.
The aSC7621 has tachometer inputs to measure fan speed on up to four fans.
Limit and status registers for all measured values are included to alert
the system host that any measurements are outside of programmed limits
via status registers.
System voltages of VCCP, 2.5V, 3.3V, 5.0V, and 12V motherboard power are
monitored efficiently with internal scaling resistors.
Features
--------
- Supports PECI interface and monitors internal and remote thermal diodes
- 2-wire, SMBus 2.0 compliant, serial interface
- 10-bit ADC
- Monitors VCCP, 2.5V, 3.3V, 5.0V, and 12V motherboard/processor supplies
- Programmable autonomous fan control based on temperature readings
- Noise filtering of temperature reading for fan speed control
- 0.25C digital temperature sensor resolution
- 3 PWM fan speed control outputs for 2-, 3- or 4-wire fans and up to 4 fan
tachometer inputs
- Enhanced measured temperature to Temperature Zone assignment.
- Provides high and low PWM frequency ranges
- 3 GPIO pins for custom use
- 24-Lead QSOP package
Configuration Notes
===================
Except where noted below, the sysfs entries created by this driver follow
the standards defined in "sysfs-interface".
temp1_source
= ===============================================
0 (default) peci_legacy = 0, Remote 1 Temperature
peci_legacy = 1, PECI Processor Temperature 0
1 Remote 1 Temperature
2 Remote 2 Temperature
3 Internal Temperature
4 PECI Processor Temperature 0
5 PECI Processor Temperature 1
6 PECI Processor Temperature 2
7 PECI Processor Temperature 3
= ===============================================
temp2_source
= ===============================================
0 (default) Internal Temperature
1 Remote 1 Temperature
2 Remote 2 Temperature
3 Internal Temperature
4 PECI Processor Temperature 0
5 PECI Processor Temperature 1
6 PECI Processor Temperature 2
7 PECI Processor Temperature 3
= ===============================================
temp3_source
= ===============================================
0 (default) Remote 2 Temperature
1 Remote 1 Temperature
2 Remote 2 Temperature
3 Internal Temperature
4 PECI Processor Temperature 0
5 PECI Processor Temperature 1
6 PECI Processor Temperature 2
7 PECI Processor Temperature 3
= ===============================================
temp4_source
= ===============================================
0 (default) peci_legacy = 0, PECI Processor Temperature 0
peci_legacy = 1, Remote 1 Temperature
1 Remote 1 Temperature
2 Remote 2 Temperature
3 Internal Temperature
4 PECI Processor Temperature 0
5 PECI Processor Temperature 1
6 PECI Processor Temperature 2
7 PECI Processor Temperature 3
= ===============================================
temp[1-4]_smoothing_enable / temp[1-4]_smoothing_time
Smooths spikes in temp readings caused by noise.
Valid values in milliseconds are:
* 35000
* 17600
* 11800
* 7000
* 4400
* 3000
* 1600
* 800
temp[1-4]_crit
When the corresponding zone temperature reaches this value,
ALL pwm outputs will got to 100%.
temp[5-8]_input / temp[5-8]_enable
The aSC7621 can also read temperatures provided by the processor
via the PECI bus. Usually these are "core" temps and are relative
to the point where the automatic thermal control circuit starts
throttling. This means that these are usually negative numbers.
pwm[1-3]_enable
=============== ========================================================
0 Fan off.
1 Fan on manual control.
2 Fan on automatic control and will run at the minimum pwm
if the temperature for the zone is below the minimum.
3 Fan on automatic control but will be off if the
temperature for the zone is below the minimum.
4-254 Ignored.
255 Fan on full.
=============== ========================================================
pwm[1-3]_auto_channels
Bitmap as described in sysctl-interface with the following
exceptions...
Only the following combination of zones (and their corresponding masks)
are valid:
* 1
* 2
* 3
* 2,3
* 1,2,3
* 4
* 1,2,3,4
* Special values:
== ======================
0 Disabled.
16 Fan on manual control.
31 Fan on full.
== ======================
pwm[1-3]_invert
When set, inverts the meaning of pwm[1-3].
i.e. when pwm = 0, the fan will be on full and
when pwm = 255 the fan will be off.
pwm[1-3]_freq
PWM frequency in Hz
Valid values in Hz are:
* 10
* 15
* 23
* 30 (default)
* 38
* 47
* 62
* 94
* 23000
* 24000
* 25000
* 26000
* 27000
* 28000
* 29000
* 30000
Setting any other value will be ignored.
peci_enable
Enables or disables PECI
peci_avg
Input filter average time.
* 0 0 Sec. (no Smoothing) (default)
* 1 0.25 Sec.
* 2 0.5 Sec.
* 3 1.0 Sec.
* 4 2.0 Sec.
* 5 4.0 Sec.
* 6 8.0 Sec.
* 7 0.0 Sec.
peci_legacy
= ============================================
0 Standard Mode (default)
Remote Diode 1 reading is associated with
Temperature Zone 1, PECI is associated with
Zone 4
1 Legacy Mode
PECI is associated with Temperature Zone 1,
Remote Diode 1 is associated with Zone 4
= ============================================
peci_diode
Diode filter
= ====================
0 0.25 Sec.
1 1.1 Sec.
2 2.4 Sec. (default)
3 3.4 Sec.
4 5.0 Sec.
5 6.8 Sec.
6 10.2 Sec.
7 16.4 Sec.
= ====================
peci_4domain
Four domain enable
= ===============================================
0 1 or 2 Domains for enabled processors (default)
1 3 or 4 Domains for enabled processors
= ===============================================
peci_domain
Domain
= ==================================================
0 Processor contains a single domain (0) (default)
1 Processor contains two domains (0,1)
= ==================================================
@@ -0,0 +1,26 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver aspeed-g6-pwm-tach
=================================
Supported chips:
ASPEED AST2600
Authors:
<billy_tsai@aspeedtech.com>
Description:
------------
This driver implements support for ASPEED AST2600 Fan Tacho controller.
The controller supports up to 16 tachometer inputs.
The driver provides the following sensor accesses in sysfs:
=============== ======= ======================================================
fanX_input ro provide current fan rotation value in RPM as reported
by the fan to the device.
fanX_div rw Fan divisor: Supported value are power of 4 (1, 4, 16
64, ... 4194304)
The larger divisor, the less rpm accuracy and the less
affected by fan signal glitch.
=============== ======= ======================================================
@@ -0,0 +1,24 @@
Kernel driver aspeed-pwm-tacho
==============================
Supported chips:
ASPEED AST2400/2500
Authors:
<jaghu@google.com>
Description:
------------
This driver implements support for ASPEED AST2400/2500 PWM and Fan Tacho
controller. The PWM controller supports up to 8 PWM outputs. The Fan tacho
controller supports up to 16 tachometer inputs.
The driver provides the following sensor accesses in sysfs:
=============== ======= =====================================================
fanX_input ro provide current fan rotation value in RPM as reported
by the fan to the device.
pwmX rw get or set PWM fan control value. This is an integer
value between 0(off) and 255(full speed).
=============== ======= =====================================================
@@ -0,0 +1,99 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver asus_ec_sensors
=================================
Supported boards:
* MAXIMUS VI HERO
* PRIME X470-PRO
* PRIME X570-PRO
* PRIME X670E-PRO WIFI
* PRIME Z270-A
* Pro WS TRX50-SAGE WIFI
* Pro WS TRX50-SAGE WIFI A
* Pro WS X570-ACE
* Pro WS WRX90E-SAGE SE
* ProArt X570-CREATOR WIFI
* ProArt X670E-CREATOR WIFI
* ProArt X870E-CREATOR WIFI
* ProArt B550-CREATOR
* ROG CROSSHAIR VIII DARK HERO
* ROG CROSSHAIR VIII HERO (WI-FI)
* ROG CROSSHAIR VIII FORMULA
* ROG CROSSHAIR VIII HERO
* ROG CROSSHAIR VIII IMPACT
* ROG CROSSHAIR X670E EXTREME
* ROG CROSSHAIR X670E HERO
* ROG CROSSHAIR X670E GENE
* ROG MAXIMUS X HERO
* ROG MAXIMUS XI HERO
* ROG MAXIMUS XI HERO (WI-FI)
* ROG MAXIMUS Z690 FORMULA
* ROG MAXIMUS Z790 EXTREME
* ROG STRIX B550-E GAMING
* ROG STRIX B550-I GAMING
* ROG STRIX B650E-E GAMING WIFI
* ROG STRIX B650E-I GAMING WIFI
* ROG STRIX B850-E GAMING WIFI
* ROG STRIX B850-I GAMING WIFI
* ROG STRIX X470-F GAMING
* ROG STRIX X470-I GAMING
* ROG STRIX X570-E GAMING
* ROG STRIX X570-E GAMING WIFI II
* ROG STRIX X570-F GAMING
* ROG STRIX X570-I GAMING
* ROG STRIX X670E-E GAMING WIFI
* ROG STRIX X670E-I GAMING WIFI
* ROG STRIX X870-F GAMING WIFI
* ROG STRIX X870-I GAMING WIFI
* ROG STRIX X870E-E GAMING WIFI
* ROG STRIX X870E-H GAMING WIFI7
* ROG STRIX Z390-F GAMING
* ROG STRIX Z490-F GAMING
* ROG STRIX Z690-A GAMING WIFI D4
* ROG STRIX Z690-E GAMING WIFI
* ROG STRIX Z790-E GAMING WIFI II
* ROG STRIX Z790-H GAMING WIFI
* ROG STRIX Z790-I GAMING WIFI
* ROG ZENITH II EXTREME
* ROG ZENITH II EXTREME ALPHA
* TUF GAMING X670E PLUS
* TUF GAMING X670E PLUS WIFI
Authors:
- Eugene Shalygin <eugene.shalygin@gmail.com>
Description:
------------
ASUS mainboards publish hardware monitoring information via Super I/O
chip and the ACPI embedded controller (EC) registers. Some of the sensors
are only available via the EC.
The driver is aware of and reads the following sensors:
1. Chipset (PCH) temperature
2. CPU package temperature
3. Motherboard temperature
4. Readings from the T_Sensor header
5. VRM temperature
6. CPU_Opt fan RPM
7. VRM heatsink fan RPM
8. Chipset fan RPM
9. Readings from the "Water flow meter" header (RPM)
10. Readings from the "Water In" and "Water Out" temperature headers
11. CPU current
12. CPU core voltage
Sensor values are read from EC registers, and to avoid race with the board
firmware the driver acquires ACPI mutex, the one used by the WMI when its
methods access the EC.
Module Parameters
-----------------
* mutex_path: string
The driver holds path to the ACPI mutex for each board (actually,
the path is mostly identical for them). If ASUS changes this path
in a future BIOS update, this parameter can be used to override
the stored in the driver value until it gets updated.
A special string ":GLOBAL_LOCK" can be passed to use the ACPI
global lock instead of a dedicated mutex.
@@ -0,0 +1,47 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver asus_rog_ryujin
=============================
Supported devices:
* ASUS ROG RYUJIN II 360
Author: Aleksa Savic
Description
-----------
This driver enables hardware monitoring support for the listed ASUS ROG RYUJIN
all-in-one CPU liquid coolers. Available sensors are pump, internal and external
(controller) fan speed in RPM, their duties in PWM, as well as coolant temperature.
Attaching external fans to the controller is optional and allows them to be
controlled from the device. If not connected, the fan-related sensors will
report zeroes. The controller is a separate hardware unit that comes bundled
with the AIO and connects to it to allow fan control.
The addressable LCD screen is not supported in this driver and should
be controlled through userspace tools.
Usage notes
-----------
As these are USB HIDs, the driver can be loaded automatically by the kernel and
supports hot swapping.
Sysfs entries
-------------
=========== =============================================
fan1_input Pump speed (in rpm)
fan2_input Internal fan speed (in rpm)
fan3_input External (controller) fan 1 speed (in rpm)
fan4_input External (controller) fan 2 speed (in rpm)
fan5_input External (controller) fan 3 speed (in rpm)
fan6_input External (controller) fan 4 speed (in rpm)
temp1_input Coolant temperature (in millidegrees Celsius)
pwm1 Pump duty
pwm2 Internal fan duty
pwm3 External (controller) fan duty
=========== =============================================
@@ -0,0 +1,78 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver asus_wmi_sensors
=================================
Supported boards:
* PRIME X399-A,
* PRIME X470-PRO,
* ROG CROSSHAIR VI EXTREME,
* ROG CROSSHAIR VI HERO,
* ROG CROSSHAIR VI HERO (WI-FI AC),
* ROG CROSSHAIR VII HERO,
* ROG CROSSHAIR VII HERO (WI-FI),
* ROG STRIX B450-E GAMING,
* ROG STRIX B450-F GAMING,
* ROG STRIX B450-I GAMING,
* ROG STRIX X399-E GAMING,
* ROG STRIX X470-F GAMING,
* ROG STRIX X470-I GAMING,
* ROG ZENITH EXTREME,
* ROG ZENITH EXTREME ALPHA.
Authors:
- Ed Brindley <kernel@maidavale.org>
Description:
------------
ASUS mainboards publish hardware monitoring information via WMI interface.
ASUS WMI interface provides a methods to get list of sensors and values of
such, which is utilized by this driver to publish those sensor readings to the
HWMON system.
The driver is aware of and reads the following sensors:
* CPU Core Voltage,
* CPU SOC Voltage,
* DRAM Voltage,
* VDDP Voltage,
* 1.8V PLL Voltage,
* +12V Voltage,
* +5V Voltage,
* 3VSB Voltage,
* VBAT Voltage,
* AVCC3 Voltage,
* SB 1.05V Voltage,
* CPU Core Voltage,
* CPU SOC Voltage,
* DRAM Voltage,
* CPU Fan RPM,
* Chassis Fan 1 RPM,
* Chassis Fan 2 RPM,
* Chassis Fan 3 RPM,
* HAMP Fan RPM,
* Water Pump RPM,
* CPU OPT RPM,
* Water Flow RPM,
* AIO Pump RPM,
* CPU Temperature,
* CPU Socket Temperature,
* Motherboard Temperature,
* Chipset Temperature,
* Tsensor 1 Temperature,
* CPU VRM Temperature,
* Water In,
* Water Out,
* CPU VRM Output Current.
Known Issues:
* The WMI implementation in some of Asus' BIOSes is buggy. This can result in
fans stopping, fans getting stuck at max speed, or temperature readouts
getting stuck. This is not an issue with the driver, but the BIOS. The Prime
X470 Pro seems particularly bad for this. The more frequently the WMI
interface is polled the greater the potential for this to happen. Until you
have subjected your computer to an extended soak test while polling the
sensors frequently, don't leave you computer unattended. Upgrading to new
BIOS version with method version greater than or equal to two should
rectify the issue.
* A few boards report 12v voltages to be ~10v.
@@ -0,0 +1,45 @@
.. SPDX-License-Identifier: GPL-2.0-only
Broadcom BCM54140 Quad SGMII/QSGMII PHY
=======================================
Supported chips:
* Broadcom BCM54140
Datasheet: not public
Author: Michael Walle <michael@walle.cc>
Description
-----------
The Broadcom BCM54140 is a Quad SGMII/QSGMII PHY which supports monitoring
its die temperature as well as two analog voltages.
The AVDDL is a 1.0V analogue voltage, the AVDDH is a 3.3V analogue voltage.
Both voltages and the temperature are measured in a round-robin fashion.
Sysfs entries
-------------
The following attributes are supported.
======================= ========================================================
in0_label "AVDDL"
in0_input Measured AVDDL voltage.
in0_min Minimum AVDDL voltage.
in0_max Maximum AVDDL voltage.
in0_alarm AVDDL voltage alarm.
in1_label "AVDDH"
in1_input Measured AVDDH voltage.
in1_min Minimum AVDDH voltage.
in1_max Maximum AVDDH voltage.
in1_alarm AVDDH voltage alarm.
temp1_input Die temperature.
temp1_min Minimum die temperature.
temp1_max Maximum die temperature.
temp1_alarm Die temperature alarm.
======================= ========================================================
+112
View File
@@ -0,0 +1,112 @@
Kernel driver bel-pfe
======================
Supported chips:
* BEL PFE1100
Prefixes: 'pfe1100'
Addresses scanned: -
Datasheet: https://www.belfuse.com/resources/datasheets/powersolutions/ds-bps-pfe1100-12-054xa.pdf
* BEL PFE3000
Prefixes: 'pfe3000'
Addresses scanned: -
Datasheet: https://www.belfuse.com/resources/datasheets/powersolutions/ds-bps-pfe3000-series.pdf
Author: Tao Ren <rentao.bupt@gmail.com>
Description
-----------
This driver supports hardware monitoring for below power supply devices
which support PMBus Protocol:
* BEL PFE1100
1100 Watt AC to DC power-factor-corrected (PFC) power supply.
PMBus Communication Manual is not publicly available.
* BEL PFE3000
3000 Watt AC/DC power-factor-corrected (PFC) and DC-DC power supply.
PMBus Communication Manual is not publicly available.
The driver is a client driver to the core PMBus driver. Please see
Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
-----------
This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.
Example: the following will load the driver for an PFE3000 at address 0x20
on I2C bus #1::
$ modprobe bel-pfe
$ echo pfe3000 0x20 > /sys/bus/i2c/devices/i2c-1/new_device
Platform data support
---------------------
The driver supports standard PMBus driver platform data.
Sysfs entries
-------------
======================= =======================================================
curr1_label "iin"
curr1_input Measured input current
curr1_max Input current max value
curr1_max_alarm Input current max alarm
curr[2-3]_label "iout[1-2]"
curr[2-3]_input Measured output current
curr[2-3]_max Output current max value
curr[2-3]_max_alarm Output current max alarm
fan[1-2]_input Fan 1 and 2 speed in RPM
fan1_target Set fan speed reference for both fans
in1_label "vin"
in1_input Measured input voltage
in1_crit Input voltage critical max value
in1_crit_alarm Input voltage critical max alarm
in1_lcrit Input voltage critical min value
in1_lcrit_alarm Input voltage critical min alarm
in1_max Input voltage max value
in1_max_alarm Input voltage max alarm
in2_label "vcap"
in2_input Hold up capacitor voltage
in[3-8]_label "vout[1-3,5-7]"
in[3-8]_input Measured output voltage
in[3-4]_alarm vout[1-2] output voltage alarm
power[1-2]_label "pin[1-2]"
power[1-2]_input Measured input power
power[1-2]_alarm Input power high alarm
power[3-4]_label "pout[1-2]"
power[3-4]_input Measured output power
temp[1-3]_input Measured temperature
temp[1-3]_alarm Temperature alarm
======================= =======================================================
.. note::
- curr3, fan2, vout[2-7], vcap, pin2, pout2 and temp3 attributes only
exist for PFE3000.
@@ -0,0 +1,74 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver bpa-rs600
=======================
Supported chips:
* BPA-RS600-120
Datasheet: Publicly available at the BluTek website
http://blutekpower.com/wp-content/uploads/2019/01/BPA-RS600-120-07-19-2018.pdf
Authors:
- Chris Packham <chris.packham@alliedtelesis.co.nz>
Description
-----------
The BPA-RS600 is a compact 600W removable power supply module.
Usage Notes
-----------
This driver does not probe for PMBus devices. You will have to instantiate
devices explicitly.
Sysfs attributes
----------------
======================= ============================================
curr1_label "iin"
curr1_input Measured input current
curr1_max Maximum input current
curr1_max_alarm Input current high alarm
curr2_label "iout1"
curr2_input Measured output current
curr2_max Maximum output current
curr2_max_alarm Output current high alarm
fan1_input Measured fan speed
fan1_alarm Fan warning
fan1_fault Fan fault
in1_label "vin"
in1_input Measured input voltage
in1_max Maximum input voltage
in1_max_alarm Input voltage high alarm
in1_min Minimum input voltage
in1_min_alarm Input voltage low alarm
in2_label "vout1"
in2_input Measured output voltage
in2_max Maximum output voltage
in2_max_alarm Output voltage high alarm
in2_min Maximum output voltage
in2_min_alarm Output voltage low alarm
power1_label "pin"
power1_input Measured input power
power1_alarm Input power alarm
power1_max Maximum input power
power2_label "pout1"
power2_input Measured output power
power2_max Maximum output power
power2_max_alarm Output power high alarm
temp1_input Measured temperature around input connector
temp1_alarm Temperature alarm
temp2_input Measured temperature around output connector
temp2_alarm Temperature alarm
======================= ============================================
@@ -0,0 +1,63 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver cgbc-hwmon
========================
Supported chips:
* Congatec Board Controller.
Prefix: 'cgbc-hwmon'
Author: Thomas Richard <thomas.richard@bootlin.com>
Description
-----------
This driver enables monitoring support for the Congatec Board Controller.
This controller is embedded on the x86 SoMs of Congatec.
Sysfs entries
-------------
The following sysfs entries list contains all sensors defined in the Board
Controller. The available sensors in sysfs depend on the SoM and the
system.
============= ======================
Name Description
============= ======================
temp1_input CPU temperature
temp2_input Box temperature
temp3_input Ambient temperature
temp4_input Board temperature
temp5_input Carrier temperature
temp6_input Chipset temperature
temp7_input Video temperature
temp8_input Other temperature
temp9_input TOPDIM temperature
temp10_input BOTTOMDIM temperature
in0_input CPU voltage
in1_input DC Runtime voltage
in2_input DC Standby voltage
in3_input CMOS Battery voltage
in4_input Battery voltage
in5_input AC voltage
in6_input Other voltage
in7_input 5V voltage
in8_input 5V Standby voltage
in9_input 3V3 voltage
in10_input 3V3 Standby voltage
in11_input VCore A voltage
in12_input VCore B voltage
in13_input 12V voltage
curr1_input DC current
curr2_input 5V current
curr3_input 12V current
fan1_input CPU fan
fan2_input Box fan
fan3_input Ambient fan
fan4_input Chiptset fan
fan5_input Video fan
fan6_input Other fan
============= ======================
@@ -0,0 +1,73 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver ChipCap2
======================
Supported chips:
* Amphenol CC2D23, CC2D23S, CC2D25, CC2D25S, CC2D33, CC2D33S, CC2D35, CC2D35S
Prefix: 'chipcap2'
Addresses scanned: -
Datasheet: https://www.amphenol-sensors.com/en/telaire/humidity/527-humidity-sensors/3095-chipcap-2
Author:
- Javier Carrasco <javier.carrasco.cruz@gmail.com>
Description
-----------
This driver implements support for the Amphenol ChipCap 2, a humidity and
temperature chip family. Temperature is measured in milli degrees celsius,
relative humidity is expressed as a per cent mille. The measurement ranges
are the following:
- Relative humidity: 0 to 100000 pcm (14-bit resolution)
- Temperature: -40000 to +125000 m°C (14-bit resolution)
The device communicates with the I2C protocol and uses the I2C address 0x28
by default.
Depending on the hardware configuration, up to two humidity alarms to control
minimum and maximum values are provided. Their thresholds and hystersis can be
configured via sysfs.
Thresholds and hysteris must be provided as a per cent mille. These values
might be truncated to match the 14-bit device resolution (6.1 pcm/LSB)
Known Issues
------------
The driver does not support I2C address and command window length modification.
sysfs-Interface
---------------
The following list includes the sysfs attributes that the driver always provides,
their permissions and a short description:
=============================== ======= ========================================
Name Perm Description
=============================== ======= ========================================
temp1_input: RO temperature input
humidity1_input: RO humidity input
=============================== ======= ========================================
The following list includes the sysfs attributes that the driver may provide
depending on the hardware configuration:
=============================== ======= ========================================
Name Perm Description
=============================== ======= ========================================
humidity1_min: RW humidity low limit. Measurements under
this limit trigger a humidity low alarm
humidity1_max: RW humidity high limit. Measurements above
this limit trigger a humidity high alarm
humidity1_min_hyst: RW humidity low hystersis
humidity1_max_hyst: RW humidity high hystersis
humidity1_min_alarm: RO humidity low alarm indicator
humidity1_max_alarm: RO humidity high alarm indicator
=============================== ======= ========================================
@@ -0,0 +1,234 @@
Kernel driver coretemp
======================
Supported chips:
* All Intel Core family and Atom processors with Digital Thermal Sensor (DTS)
Prefix: 'coretemp'
CPUID: family 0x6, models with X86_FEATURE_DTHERM, including:
- 0xe (Pentium M DC), 0xf (Core 2 DC 65nm),
- 0x16 (Core 2 SC 65nm), 0x17 (Penryn 45nm),
- 0x1a (Nehalem), 0x1c (Atom), 0x1e (Lynnfield),
- 0x26 (Tunnel Creek Atom), 0x27 (Medfield Atom),
- 0x36 (Cedar Trail Atom), 0x37 (Bay Trail Atom),
- 0x4a (Merrifield Atom), 0x4c (Cherry Trail Atom),
- 0x5a (Moorefield Atom), 0x5c (Apollo Lake Atom),
- 0x7a (Gemini Lake Atom),
- 0x96 (Elkhart Lake Atom), 0x9c (Jasper Lake Atom)
Datasheet:
Intel 64 and IA-32 Architectures Software Developer's Manual
Volume 3A: System Programming Guide
(https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html)
Author: Rudolf Marek
Description
-----------
This driver permits reading the DTS (Digital Temperature Sensor) embedded
inside Intel CPUs. This driver can read both the per-core and per-package
temperature using the appropriate sensors. The per-package sensor is
available on Sandy Bridge and all newer processors. The driver will show
the temperature of all cores inside a package under a single device
directory inside hwmon.
Temperature is measured in degrees Celsius and measurement resolution is
1 degree C. Valid temperatures are from 0 to TjMax degrees C, because
the actual value of temperature register is in fact a delta from TjMax.
Temperature known as TjMax is the maximum junction temperature of processor,
which depends on the CPU model. See table below. At this temperature, protection
mechanism will perform actions to forcibly cool down the processor. Alarm
may be raised, if the temperature grows enough (more than TjMax) to trigger
the Out-Of-Spec bit. Following table summarizes the exported sysfs files:
All Sysfs entries are named with their core_id (represented here by 'X').
================= ========================================================
tempX_input Core temperature (in millidegrees Celsius).
tempX_max Maximum recommended operating temperature (Tcontrol).
All cooling devices should be turned on.
tempX_crit Maximum junction temperature (in millidegrees Celsius).
tempX_crit_alarm Set when Out-of-spec bit is set, never clears.
Correct CPU operation is no longer guaranteed.
tempX_label Contains string "Core X", where X is processor
number. For Package temp, this will be "Package id Y",
where Y is the package number.
================= ========================================================
On modern CPUs (Nehalem and newer), TjMax is read from the
MSR_IA32_TEMPERATURE_TARGET register. On older models without this MSR,
TjMax is determined using lookup tables or heuristics. If these don't work
for your CPU, you can pass the correct TjMax value as a module parameter
(tjmax).
Appendix A. Known TjMax lists (TBD):
Some information comes from ark.intel.com
=============== =============================================== ================
Process Processor TjMax(C)
22nm Core i5/i7 Processors
i7 3920XM, 3820QM, 3720QM, 3667U, 3520M 105
i5 3427U, 3360M/3320M 105
i7 3770/3770K 105
i5 3570/3570K, 3550, 3470/3450 105
i7 3770S 103
i5 3570S/3550S, 3475S/3470S/3450S 103
i7 3770T 94
i5 3570T 94
i5 3470T 91
32nm Core i3/i5/i7 Processors
i7 2600 98
i7 660UM/640/620, 640LM/620, 620M, 610E 105
i5 540UM/520/430, 540M/520/450/430 105
i3 330E, 370M/350/330 90 rPGA, 105 BGA
i3 330UM 105
32nm Core i7 Extreme Processors
980X 100
32nm Celeron Processors
U3400 105
P4505/P4500 90
32nm Atom Processors
S1260/1220 95
S1240 102
Z2460 90
Z2760 90
D2700/2550/2500 100
N2850/2800/2650/2600 100
22nm Atom Processors (Silvermont/Bay Trail)
E3845/3827/3826/3825/3815/3805 110
Z3795/3775/3770/3740/3736/3735/3680 90
22nm Atom Processors (Silvermont/Moorefield)
Z3580/3570/3560/3530 90
14nm Atom Processors (Airmont/Cherry Trail)
x5-Z8550/Z8500/Z8350/Z8330/Z8300 90
x7-Z8750/Z8700 90
14nm Atom Processors (Goldmont/Apollo Lake)
x5-E3940/E3930 105
x7-E3950 105
14nm Celeron/Pentium Processors
(Goldmont/Apollo Lake)
J3455/J3355 105
N3450/N3350 105
N4200 105
14nm Celeron/Pentium Processors
(Goldmont Plus/Gemini Lake)
J4105/J4005 105
N4100/N4000 105
N5000 105
10nm Atom Processors (Tremont/Elkhart Lake)
x6000E 105
10nm Celeron/Pentium Processors
(Tremont/Jasper Lake)
N4500/N5100/N6000 series 105
45nm Xeon Processors 5400 Quad-Core
X5492, X5482, X5472, X5470, X5460, X5450 85
E5472, E5462, E5450/40/30/20/10/05 85
L5408 95
L5430, L5420, L5410 70
45nm Xeon Processors 5200 Dual-Core
X5282, X5272, X5270, X5260 90
E5240 90
E5205, E5220 70, 90
L5240 70
L5238, L5215 95
45nm Atom Processors
D525/510/425/410 100
K525/510/425/410 100
Z670/650 90
Z560/550/540/530P/530/520PT/520/515/510PT/510P 90
Z510/500 90
N570/550 100
N475/470/455/450 100
N280/270 90
330/230 125
E680/660/640/620 90
E680T/660T/640T/620T 110
E665C/645C 90
E665CT/645CT 110
CE4170/4150/4110 110
CE4200 series unknown
CE5300 series unknown
45nm Core2 Processors
Solo ULV SU3500/3300 100
T9900/9800/9600/9550/9500/9400/9300/8300/8100 105
T6670/6500/6400 105
T6600 90
SU9600/9400/9300 105
SP9600/9400 105
SL9600/9400/9380/9300 105
P9700/9600/9500/8800/8700/8600/8400/7570 105
P7550/7450 90
45nm Core2 Quad Processors
Q9100/9000 100
45nm Core2 Extreme Processors
X9100/9000 105
QX9300 100
45nm Core i3/i5/i7 Processors
i7 940XM/920 100
i7 840QM/820/740/720 100
45nm Celeron Processors
SU2300 100
900 105
65nm Core2 Duo Processors
Solo U2200, U2100 100
U7700/7600/7500 100
T7800/7700/7600/7500/7400/7300/7250/7200/7100 100
T5870/5670/5600/5550/5500/5470/5450/5300/5270 100
T5250 100
T5800/5750/5200 85
L7700/7500/7400/7300/7200 100
65nm Core2 Extreme Processors
X7900/7800 100
65nm Core Duo Processors
U2500/2400 100
T2700/2600/2450/2400/2350/2300E/2300/2250/2050 100
L2500/2400/2300 100
65nm Core Solo Processors
U1500/1400/1300 100
T1400/1350/1300/1250 100
65nm Xeon Processors 5000 Quad-Core
X5000 90-95
E5000 80
L5000 70
L5318 95
65nm Xeon Processors 5000 Dual-Core
5080, 5063, 5060, 5050, 5030 80-90
5160, 5150, 5148, 5140, 5130, 5120, 5110 80
L5138 100
65nm Celeron Processors
T1700/1600 100
560/550/540/530 100
=============== =============================================== ================
@@ -0,0 +1,49 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver corsair-cpro
==========================
Supported devices:
* Corsair Commander Pro
* Corsair Commander Pro (1000D)
Author: Marius Zachmann
Description
-----------
This driver implements the sysfs interface for the Corsair Commander Pro.
The Corsair Commander Pro is a USB device with 6 fan connectors,
4 temperature sensor connectors and 2 Corsair LED connectors.
It can read the voltage levels on the SATA power connector.
Usage Notes
-----------
Since it is a USB device, hotswapping is possible. The device is autodetected.
Sysfs entries
-------------
======================= =====================================================================
in0_input Voltage on SATA 12v
in1_input Voltage on SATA 5v
in2_input Voltage on SATA 3.3v
temp[1-4]_input Temperature on connected temperature sensors
fan[1-6]_input Connected fan rpm.
fan[1-6]_label Shows fan type as detected by the device.
fan[1-6]_target Sets fan speed target rpm.
When reading, it reports the last value if it was set by the driver.
Otherwise returns an error.
pwm[1-6] Sets the fan speed. Values from 0-255. Can only be read if pwm
was set directly.
======================= =====================================================================
Debugfs entries
---------------
======================= ===================
firmware_version Firmware version
bootloader_version Bootloader version
======================= ===================
@@ -0,0 +1,101 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver corsair-psu
=========================
Supported devices:
* Corsair Power Supplies
Corsair HX550i
Corsair HX650i
Corsair HX750i
Corsair HX850i
Corsair HX1000i (Legacy and Series 2023)
Corsair HX1200i (Legacy, Series 2023 and Series 2025)
Corsair HX1500i (Legacy and Series 2023)
Corsair RM550i
Corsair RM650i
Corsair RM750i
Corsair RM850i
Corsair RM1000i
Author: Wilken Gottwalt
Description
-----------
This driver implements the sysfs interface for the Corsair PSUs with a HID protocol
interface of the HXi and RMi series.
These power supplies provide access to a micro-controller with 2 attached
temperature sensors, 1 fan rpm sensor, 4 sensors for volt levels, 4 sensors for
power usage and 4 sensors for current levels and additional non-sensor information
like uptimes.
Sysfs entries
-------------
======================= ========================================================
curr1_input Total current usage
curr2_input Current on the 12v psu rail
curr2_crit Current max critical value on the 12v psu rail
curr3_input Current on the 5v psu rail
curr3_crit Current max critical value on the 5v psu rail
curr4_input Current on the 3.3v psu rail
curr4_crit Current max critical value on the 3.3v psu rail
fan1_input RPM of psu fan
in0_input Voltage of the psu ac input
in1_input Voltage of the 12v psu rail
in1_crit Voltage max critical value on the 12v psu rail
in1_lcrit Voltage min critical value on the 12v psu rail
in2_input Voltage of the 5v psu rail
in2_crit Voltage max critical value on the 5v psu rail
in2_lcrit Voltage min critical value on the 5v psu rail
in3_input Voltage of the 3.3v psu rail
in3_crit Voltage max critical value on the 3.3v psu rail
in3_lcrit Voltage min critical value on the 3.3v psu rail
power1_input Total power usage
power2_input Power usage of the 12v psu rail
power3_input Power usage of the 5v psu rail
power4_input Power usage of the 3.3v psu rail
pwm1 PWM value, read only
pwm1_enable PWM mode, read only
temp1_input Temperature of the psu vrm component
temp1_crit Temperature max cirtical value of the psu vrm component
temp2_input Temperature of the psu case
temp2_crit Temperature max critical value of psu case
======================= ========================================================
Usage Notes
-----------
It is an USB HID device, so it is auto-detected, supports hot-swapping and
several devices at once.
Flickering values in the rail voltage levels can be an indicator for a failing
PSU. Accordingly to the default automatic fan speed plan the fan starts at about
30% of the wattage rating. If this does not happen, a fan failure is likely. The
driver also provides some additional useful values via debugfs, which do not fit
into the hwmon class.
Debugfs entries
---------------
======================= ========================================================
ocpmode Single or multi rail mode of the PCIe power connectors
product Product name of the psu
uptime Session uptime of the psu
uptime_total Total uptime of the psu
vendor Vendor name of the psu
======================= ========================================================
@@ -0,0 +1,48 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver cros_ec_hwmon
===========================
Supported chips:
* ChromeOS embedded controllers.
Prefix: 'cros_ec'
Addresses scanned: -
Author:
- Thomas Weißschuh <linux@weissschuh.net>
Description
-----------
This driver implements support for hardware monitoring commands exposed by the
ChromeOS embedded controller used in Chromebooks and other devices.
The channel labels exposed via hwmon are retrieved from the EC itself.
Supported features
------------------
Fan readings
Always supported.
Fan target speed
If supported by the EC.
Temperature readings
Always supported.
Temperature thresholds
If supported by the EC.
PWM fan control
If the EC also supports setting fan PWM values and fan mode.
Note that EC will switch fan control mode back to auto when suspended.
This driver will restore the fan state to what they were before suspended when resumed.
If a fan is controllable, this driver will register that fan as a cooling device
in the thermal framework as well.
+97
View File
@@ -0,0 +1,97 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver crps
==================
Supported chips:
* Intel CRPS185
Prefix: 'crps185'
Addresses scanned: -
Datasheet: Only available under NDA.
Authors:
Ninad Palsule <ninad@linux.ibm.com>
Description
-----------
This driver implements support for Intel Common Redundant Power supply with
PMBus support.
The driver is a client driver to the core PMBus driver.
Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
-----------
This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.
Sysfs entries
-------------
======================= ======================================================
curr1_label "iin"
curr1_input Measured input current
curr1_max Maximum input current
curr1_max_alarm Input maximum current high alarm
curr1_crit Critical high input current
curr1_crit_alarm Input critical current high alarm
curr1_rated_max Maximum rated input current
curr2_label "iout1"
curr2_input Measured output current
curr2_max Maximum output current
curr2_max_alarm Output maximum current high alarm
curr2_crit Critical high output current
curr2_crit_alarm Output critical current high alarm
curr2_rated_max Maximum rated output current
in1_label "vin"
in1_input Measured input voltage
in1_crit Critical input over voltage
in1_crit_alarm Critical input over voltage alarm
in1_max Maximum input over voltage
in1_max_alarm Maximum input over voltage alarm
in1_rated_min Minimum rated input voltage
in1_rated_max Maximum rated input voltage
in2_label "vout1"
in2_input Measured input voltage
in2_crit Critical input over voltage
in2_crit_alarm Critical input over voltage alarm
in2_lcrit Critical input under voltage fault
in2_lcrit_alarm Critical input under voltage fault alarm
in2_max Maximum input over voltage
in2_max_alarm Maximum input over voltage alarm
in2_min Minimum input under voltage warning
in2_min_alarm Minimum input under voltage warning alarm
in2_rated_min Minimum rated input voltage
in2_rated_max Maximum rated input voltage
power1_label "pin"
power1_input Measured input power
power1_alarm Input power high alarm
power1_max Maximum input power
power1_rated_max Maximum rated input power
temp[1-2]_input Measured temperature
temp[1-2]_crit Critical temperature
temp[1-2]_crit_alarm Critical temperature alarm
temp[1-2]_max Maximum temperature
temp[1-2]_max_alarm Maximum temperature alarm
temp[1-2]_rated_max Maximum rated temperature
fan1_alarm Fan 1 warning.
fan1_fault Fan 1 fault.
fan1_input Fan 1 speed in RPM.
fan1_target Fan 1 target.
======================= ======================================================
@@ -0,0 +1,81 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver d1u74t
====================
Supported chips:
* Murata D1U74T
Prefix: 'd1u74t'
Addresses scanned: -
Datasheet: Publicly available at the Murata website
Authors:
Abdurrahman Hussain <abdurrahman@nexthop.ai>
Description
-----------
This driver implements support for Murata D1U74T Power Supply with
PMBus support.
The driver is a client driver to the core PMBus driver.
Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
-----------
This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.
Sysfs entries
-------------
======================= ======================================================
curr1_label "iin"
curr1_input Measured input current
curr1_alarm Input current alarm
curr1_rated_max Maximum rated input current
curr2_label "iout1"
curr2_input Measured output current
curr2_max Maximum output current
curr2_max_alarm Output current high alarm
curr2_crit Critical high output current
curr2_crit_alarm Output current critical high alarm
curr2_rated_max Maximum rated output current
in1_label "vin"
in1_input Measured input voltage
in1_alarm Input voltage alarm
in1_rated_min Minimum rated input voltage
in1_rated_max Maximum rated input voltage
in2_label "vout1"
in2_input Measured output voltage
in2_alarm Output voltage alarm
in2_rated_min Minimum rated output voltage
in2_rated_max Maximum rated output voltage
power1_label "pin"
power1_input Measured input power
power1_alarm Input power alarm
power1_rated_max Maximum rated input power
temp[1-3]_input Measured temperature
temp[1-3]_max Maximum temperature
temp[1-3]_max_alarm Maximum temperature alarm
temp[1-3]_rated_max Maximum rated temperature
fan1_alarm Fan 1 warning
fan1_fault Fan 1 fault
fan1_input Fan 1 speed in RPM
fan1_target Fan 1 target
======================= ======================================================
@@ -0,0 +1,78 @@
Kernel driver da9052
====================
Supported chips:
* Dialog Semiconductors DA9052-BC and DA9053-AA/Bx PMICs
Prefix: 'da9052'
Datasheet: Datasheet is not publicly available.
Authors: David Dajun Chen <dchen@diasemi.com>
Description
-----------
The DA9052/53 provides an Analogue to Digital Converter (ADC) with 10 bits
resolution and track and hold circuitry combined with an analogue input
multiplexer. The analogue input multiplexer will allow conversion of up to 10
different inputs. The track and hold circuit ensures stable input voltages at
the input of the ADC during the conversion.
The ADC is used to measure the following inputs:
========= ===================================================================
Channel 0 VDDOUT - measurement of the system voltage
Channel 1 ICH - internal battery charger current measurement
Channel 2 TBAT - output from the battery NTC
Channel 3 VBAT - measurement of the battery voltage
Channel 4 ADC_IN4 - high impedance input (0 - 2.5V)
Channel 5 ADC_IN5 - high impedance input (0 - 2.5V)
Channel 6 ADC_IN6 - high impedance input (0 - 2.5V)
Channel 7 XY - TSI interface to measure the X and Y voltage of the touch
screen resistive potentiometers
Channel 8 Internal Tjunc. - sense (internal temp. sensor)
Channel 9 VBBAT - measurement of the backup battery voltage
========= ===================================================================
By using sysfs attributes we can measure the system voltage VDDOUT, the battery
charging current ICH, battery temperature TBAT, battery junction temperature
TJUNC, battery voltage VBAT and the back up battery voltage VBBAT.
Voltage Monitoring
------------------
Voltages are sampled by a 10 bit ADC.
The battery voltage is calculated as:
Milli volt = ((ADC value * 1000) / 512) + 2500
The backup battery voltage is calculated as:
Milli volt = (ADC value * 2500) / 512;
The voltages on ADC channels 4, 5 and 6 are calculated as:
Milli volt = (ADC value * 2500) / 1023
Temperature Monitoring
----------------------
Temperatures are sampled by a 10 bit ADC. Junction and battery temperatures
are monitored by the ADC channels.
The junction temperature is calculated:
Degrees celsius = 1.708 * (TJUNC_RES - T_OFFSET) - 108.8
The junction temperature attribute is supported by the driver.
The battery temperature is calculated:
Degree Celsius = 1 / (t1 + 1/298) - 273
where t1 = (1/B)* ln(( ADCval * 2.5)/(R25*ITBAT*255))
Default values of R25, B, ITBAT are 10e3, 3380 and 50e-6 respectively.
@@ -0,0 +1,57 @@
Kernel driver da9055
====================
Supported chips:
* Dialog Semiconductors DA9055 PMIC
Prefix: 'da9055'
Datasheet: Datasheet is not publicly available.
Authors: David Dajun Chen <dchen@diasemi.com>
Description
-----------
The DA9055 provides an Analogue to Digital Converter (ADC) with 10 bits
resolution and track and hold circuitry combined with an analogue input
multiplexer. The analogue input multiplexer will allow conversion of up to 5
different inputs. The track and hold circuit ensures stable input voltages at
the input of the ADC during the conversion.
The ADC is used to measure the following inputs:
- Channel 0: VDDOUT - measurement of the system voltage
- Channel 1: ADC_IN1 - high impedance input (0 - 2.5V)
- Channel 2: ADC_IN2 - high impedance input (0 - 2.5V)
- Channel 3: ADC_IN3 - high impedance input (0 - 2.5V)
- Channel 4: Internal Tjunc. - sense (internal temp. sensor)
By using sysfs attributes we can measure the system voltage VDDOUT,
chip junction temperature and auxiliary channels voltages.
Voltage Monitoring
------------------
Voltages are sampled in a AUTO mode it can be manually sampled too and results
are stored in a 10 bit ADC.
The system voltage is calculated as:
Milli volt = ((ADC value * 1000) / 85) + 2500
The voltages on ADC channels 1, 2 and 3 are calculated as:
Milli volt = (ADC value * 1000) / 102
Temperature Monitoring
----------------------
Temperatures are sampled by a 10 bit ADC. Junction temperatures
are monitored by the ADC channels.
The junction temperature is calculated:
Degrees celsius = -0.4084 * (ADC_RES - T_OFFSET) + 307.6332
The junction temperature attribute is supported by the driver.
@@ -0,0 +1,407 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
.. include:: <isonum.txt>
Kernel driver dell-smm-hwmon
============================
:Copyright: |copy| 2002-2005 Massimo Dal Zotto <dz@debian.org>
:Copyright: |copy| 2019 Giovanni Mascellani <gio@debian.org>
Description
-----------
On many Dell laptops the System Management Mode (SMM) BIOS can be
queried for the status of fans and temperature sensors. Userspace
utilities like ``sensors`` can be used to return the readings. The
userspace suite `i8kutils`__ can also be used to read the sensors and
automatically adjust fan speed (please notice that it currently uses
the deprecated ``/proc/i8k`` interface).
__ https://github.com/vitorafsr/i8kutils
``sysfs`` interface
-------------------
Temperature sensors and fans can be queried and set via the standard
``hwmon`` interface on ``sysfs``, under the directory
``/sys/class/hwmon/hwmonX`` for some value of ``X`` (search for the
``X`` such that ``/sys/class/hwmon/hwmonX/name`` has content
``dell_smm``). A number of other attributes can be read or written:
=============================== ======= =======================================
Name Perm Description
=============================== ======= =======================================
fan[1-4]_input RO Fan speed in RPM.
fan[1-4]_label RO Fan label.
fan[1-4]_min RO Minimal Fan speed in RPM
fan[1-4]_max RO Maximal Fan speed in RPM
fan[1-4]_target RO Expected Fan speed in RPM
pwm[1-4] RW Control the fan PWM duty-cycle.
pwm[1-4]_enable RW/WO Enable or disable automatic BIOS fan
control (not supported on all laptops,
see below for details).
temp[1-10]_input RO Temperature reading in milli-degrees
Celsius.
temp[1-10]_label RO Temperature sensor label.
=============================== ======= =======================================
Due to the nature of the SMM interface, each pwmX attribute controls
fan number X.
Enabling/Disabling automatic BIOS fan control
---------------------------------------------
There exist two methods for enabling/disabling automatic BIOS fan control:
1. Separate SMM commands to enable/disable automatic BIOS fan control for all fans.
2. A special fan state that enables automatic BIOS fan control for a individual fan.
The driver cannot reliably detect what method should be used on a given
device, so instead the following heuristic is used:
- use fan state 3 for enabling BIOS fan control if the maximum fan state
setable by the user is smaller than 3 (default setting).
- use separate SMM commands if device is whitelisted to support them.
When using the first method, each fan will have a standard ``pwmX_enable``
sysfs attribute. Writing ``1`` into this attribute will disable automatic
BIOS fan control for the associated fan and set it to maximum speed. Enabling
BIOS fan control again can be achieved by writing ``2`` into this attribute.
Reading this sysfs attributes returns the current setting as reported by
the underlying hardware.
When using the second method however, only the ``pwm1_enable`` sysfs attribute
will be available to enable/disable automatic BIOS fan control globaly for all
fans available on a given device. Additionally, this sysfs attribute is write-only
as there exists no SMM command for reading the current fan control setting.
If no ``pwmX_enable`` attributes are available, then it means that the driver
cannot use the first method and the SMM codes for enabling and disabling automatic
BIOS fan control are not whitelisted for your device. It is possible that codes
that work for other laptops actually work for yours as well, or that you have to
discover new codes.
Check the list ``i8k_whitelist_fan_control`` in file
``drivers/hwmon/dell-smm-hwmon.c`` in the kernel tree: as a first
attempt you can try to add your machine and use an already-known code
pair. If, after recompiling the kernel, you see that ``pwm1_enable``
is present and works (i.e., you can manually control the fan speed),
then please submit your finding as a kernel patch, so that other users
can benefit from it. Please see
:ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
for information on submitting patches.
If no known code works on your machine, you need to resort to do some
probing, because unfortunately Dell does not publish datasheets for
its SMM. You can experiment with the code in `this repository`__ to
probe the BIOS on your machine and discover the appropriate codes.
__ https://github.com/clopez/dellfan/
Again, when you find new codes, we'd be happy to have your patches!
``thermal`` interface
---------------------------
The driver also exports the fans as thermal cooling devices with
``type`` set to ``dell-smm-fan[1-4]``. This allows for easy fan control
using one of the thermal governors.
Module parameters
-----------------
* force:bool
Force loading without checking for supported
models. (default: 0)
* ignore_dmi:bool
Continue probing hardware even if DMI data does not
match. (default: 0)
* restricted:bool
Allow fan control only to processes with the
``CAP_SYS_ADMIN`` capability set or processes run
as root when using the legacy ``/proc/i8k``
interface. In this case normal users will be able
to read temperature and fan status but not to
control the fan. If your notebook is shared with
other users and you don't trust them you may want
to use this option. (default: 1, only available
with ``CONFIG_I8K``)
* power_status:bool
Report AC status in ``/proc/i8k``. (default: 0,
only available with ``CONFIG_I8K``)
* fan_mult:uint
Factor to multiply fan speed with. (default:
autodetect)
* fan_max:uint
Maximum configurable fan speed. (default:
autodetect)
Legacy ``/proc`` interface
--------------------------
.. warning:: This interface is obsolete and deprecated and should not
used in new applications. This interface is only
available when kernel is compiled with option
``CONFIG_I8K``.
The information provided by the kernel driver can be accessed by
simply reading the ``/proc/i8k`` file. For example::
$ cat /proc/i8k
1.0 A17 2J59L02 52 2 1 8040 6420 1 2
The fields read from ``/proc/i8k`` are::
1.0 A17 2J59L02 52 2 1 8040 6420 1 2
| | | | | | | | | |
| | | | | | | | | +------- 10. buttons status
| | | | | | | | +--------- 9. AC status
| | | | | | | +-------------- 8. fan0 RPM
| | | | | | +------------------- 7. fan1 RPM
| | | | | +--------------------- 6. fan0 status
| | | | +----------------------- 5. fan1 status
| | | +-------------------------- 4. temp0 reading (Celsius)
| | +---------------------------------- 3. Dell service tag (later known as 'serial number')
| +-------------------------------------- 2. BIOS version
+------------------------------------------ 1. /proc/i8k format version
A negative value, for example -22, indicates that the BIOS doesn't
return the corresponding information. This is normal on some
models/BIOSes.
For performance reasons the ``/proc/i8k`` doesn't report by default
the AC status since this SMM call takes a long time to execute and is
not really needed. If you want to see the ac status in ``/proc/i8k``
you must explictitly enable this option by passing the
``power_status=1`` parameter to insmod. If AC status is not
available -1 is printed instead.
The driver provides also an ioctl interface which can be used to
obtain the same information and to control the fan status. The ioctl
interface can be accessed from C programs or from shell using the
i8kctl utility. See the source file of ``i8kutils`` for more
information on how to use the ioctl interface.
SMM Interface
-------------
.. warning:: The SMM interface was reverse-engineered by trial-and-error
since Dell did not provide any Documentation,
please keep that in mind.
The driver uses the SMM interface to send commands to the system BIOS.
This interface is normally used by Dell's 32-bit diagnostic program or
on newer notebook models by the buildin BIOS diagnostics.
The SMM may cause short hangs when the BIOS code is taking too long to
execute.
The SMM handler inside the system BIOS looks at the contents of the
``eax``, ``ebx``, ``ecx``, ``edx``, ``esi`` and ``edi`` registers.
Each register has a special purpose:
=============== ==================================
Register Purpose
=============== ==================================
eax Holds the command code before SMM,
holds the first result after SMM.
ebx Holds the arguments.
ecx Unknown, set to 0.
edx Holds the second result after SMM.
esi Unknown, set to 0.
edi Unknown, set to 0.
=============== ==================================
The SMM handler can signal a failure by either:
- setting the lower sixteen bits of ``eax`` to ``0xffff``
- not modifying ``eax`` at all
- setting the carry flag (legacy SMM interface only)
Legacy SMM Interface
--------------------
When using the legacy SMM interface, a SMM is triggered by writing the least significant byte
of the command code to the special ioports ``0xb2`` and ``0x84``. This interface is not
described inside the ACPI tables and can thus only be detected by issuing a test SMM call.
WMI SMM Interface
-----------------
On modern Dell machines, the SMM calls are done over ACPI WMI:
::
#pragma namespace("\\\\.\\root\\dcim\\sysman\\diagnostics")
[WMI, Provider("Provider_DiagnosticsServices"), Dynamic, Locale("MS\\0x409"),
Description("RunDellDiag"), guid("{F1DDEE52-063C-4784-A11E-8A06684B9B01}")]
class LegacyDiags {
[key, read] string InstanceName;
[read] boolean Active;
[WmiMethodId(1), Implemented, read, write, Description("Legacy Method ")]
void Execute([in, out] uint32 EaxLen, [in, out, WmiSizeIs("EaxLen") : ToInstance] uint8 EaxVal[],
[in, out] uint32 EbxLen, [in, out, WmiSizeIs("EbxLen") : ToInstance] uint8 EbxVal[],
[in, out] uint32 EcxLen, [in, out, WmiSizeIs("EcxLen") : ToInstance] uint8 EcxVal[],
[in, out] uint32 EdxLen, [in, out, WmiSizeIs("EdxLen") : ToInstance] uint8 EdxVal[]);
};
Some machines support only the WMI SMM interface, while some machines support both interfaces.
The driver automatically detects which interfaces are present and will use the WMI SMM interface
if the legacy SMM interface is not present. The WMI SMM interface is usually slower than the
legacy SMM interface since ACPI methods need to be called in order to trigger a SMM.
SMM command codes
-----------------
=============== ======================= ================================================
Command Code Command Name Description
=============== ======================= ================================================
``0x0025`` Get Fn key status Returns the Fn key pressed after SMM:
- 9th bit in ``eax`` indicates Volume up
- 10th bit in ``eax`` indicates Volume down
- both bits indicate Volume mute
``0xa069`` Get power status Returns current power status after SMM:
- 1st bit in ``eax`` indicates Battery connected
- 3th bit in ``eax`` indicates AC connected
``0x00a3`` Get fan state Returns current fan state after SMM:
- 1st byte in ``eax`` holds the current
fan state (0 - 2 or 3)
``0x01a3`` Set fan state Sets the fan speed:
- 1st byte in ``ebx`` holds the fan number
- 2nd byte in ``ebx`` holds the desired
fan state (0 - 2 or 3)
``0x02a3`` Get fan speed Returns the current fan speed in RPM:
- 1st byte in ``ebx`` holds the fan number
- 1st word in ``eax`` holds the current
fan speed in RPM (after SMM)
``0x03a3`` Get fan type Returns the fan type:
- 1st byte in ``ebx`` holds the fan number
- 1st byte in ``eax`` holds the
fan type (after SMM):
- 5th bit indicates docking fan
- 1 indicates Processor fan
- 2 indicates Motherboard fan
- 3 indicates Video fan
- 4 indicates Power supply fan
- 5 indicates Chipset fan
- 6 indicates other fan type
``0x04a3`` Get nominal fan speed Returns the nominal RPM in each fan state:
- 1st byte in ``ebx`` holds the fan number
- 2nd byte in ``ebx`` holds the fan state
in question (0 - 2 or 3)
- 1st word in ``eax`` holds the nominal
fan speed in RPM (after SMM)
``0x05a3`` Get fan speed tolerance Returns the speed tolerance for each fan state:
- 1st byte in ``ebx`` holds the fan number
- 2nd byte in ``ebx`` holds the fan state
in question (0 - 2 or 3)
- 1st byte in ``eax`` returns the speed
tolerance
``0x10a3`` Get sensor temperature Returns the measured temperature:
- 1st byte in ``ebx`` holds the sensor number
- 1st byte in ``eax`` holds the measured
temperature (after SMM)
``0x11a3`` Get sensor type Returns the sensor type:
- 1st byte in ``ebx`` holds the sensor number
- 1st byte in ``eax`` holds the
temperature type (after SMM):
- 1 indicates CPU sensor
- 2 indicates GPU sensor
- 3 indicates SODIMM sensor
- 4 indicates other sensor type
- 5 indicates Ambient sensor
- 6 indicates other sensor type
``0xfea3`` Get SMM signature Returns Dell signature if interface
is supported (after SMM):
- ``eax`` holds 1145651527
(0x44494147 or "DIAG")
- ``edx`` holds 1145392204
(0x44454c4c or "DELL")
``0xffa3`` Get SMM signature Same as ``0xfea3``, check both.
=============== ======================= ================================================
There are additional commands for enabling (``0x31a3`` or ``0x35a3``) and
disabling (``0x30a3`` or ``0x34a3``) automatic fan speed control.
The commands are however causing severe sideeffects on many machines, so
they are not used by default.
On several machines (Inspiron 3505, Precision 490, Vostro 1720, ...), the
fans supports a 4th "magic" state, which signals the BIOS that automatic
fan control should be enabled for a specific fan.
However there are also some machines who do support a 4th regular fan state too,
but in case of the "magic" state, the nominal RPM reported for this state is a
placeholder value, which however is not always detectable.
Firmware Bugs
-------------
The SMM calls can behave erratic on some machines:
======================================================= =================
Firmware Bug Affected Machines
======================================================= =================
Reading of fan states return spurious errors. Precision 490
OptiPlex 7060
Reading of fan types causes erratic fan behaviour. Studio XPS 8000
Studio XPS 8100
Inspiron 580
Inspiron 3505
Fan-related SMM calls take too long (about 500ms). Inspiron 7720
Vostro 3360
XPS 13 9333
XPS 15 L502X
======================================================= =================
In case you experience similar issues on your Dell machine, please
submit a bugreport on bugzilla to we can apply workarounds.
Limitations
-----------
The SMM calls can take too long to execute on some machines, causing
short hangs and/or audio glitches.
Also the fan state needs to be restored after suspend, as well as
the automatic mode settings.
When reading a temperature sensor, values above 127 degrees indicate
a BIOS read error or a deactivated sensor.
+364
View File
@@ -0,0 +1,364 @@
Kernel driver dme1737
=====================
Supported chips:
* SMSC DME1737 and compatibles (like Asus A8000)
Prefix: 'dme1737'
Addresses scanned: I2C 0x2c, 0x2d, 0x2e
Datasheet: Provided by SMSC upon request and under NDA
* SMSC SCH3112, SCH3114, SCH3116
Prefix: 'sch311x'
Addresses scanned: none, address read from Super-I/O config space
Datasheet: Available on the Internet
* SMSC SCH5027
Prefix: 'sch5027'
Addresses scanned: I2C 0x2c, 0x2d, 0x2e
Datasheet: Provided by SMSC upon request and under NDA
* SMSC SCH5127
Prefix: 'sch5127'
Addresses scanned: none, address read from Super-I/O config space
Datasheet: Provided by SMSC upon request and under NDA
Authors:
Juerg Haefliger <juergh@gmail.com>
Module Parameters
-----------------
* force_start: bool
Enables the monitoring of voltage, fan and temp inputs
and PWM output control functions. Using this parameter
shouldn't be required since the BIOS usually takes care
of this.
* probe_all_addr: bool
Include non-standard LPC addresses 0x162e and 0x164e
when probing for ISA devices. This is required for the
following boards:
- VIA EPIA SN18000
Description
-----------
This driver implements support for the hardware monitoring capabilities of the
SMSC DME1737 and Asus A8000 (which are the same), SMSC SCH5027, SCH311x,
and SCH5127 Super-I/O chips. These chips feature monitoring of 3 temp sensors
temp[1-3] (2 remote diodes and 1 internal), 8 voltages in[0-7] (7 external and
1 internal) and up to 6 fan speeds fan[1-6]. Additionally, the chips implement
up to 5 PWM outputs pwm[1-3,5-6] for controlling fan speeds both manually and
automatically.
For the DME1737, A8000 and SCH5027, fan[1-2] and pwm[1-2] are always present.
Fan[3-6] and pwm[3,5-6] are optional features and their availability depends on
the configuration of the chip. The driver will detect which features are
present during initialization and create the sysfs attributes accordingly.
For the SCH311x and SCH5127, fan[1-3] and pwm[1-3] are always present and
fan[4-6] and pwm[5-6] don't exist.
The hardware monitoring features of the DME1737, A8000, and SCH5027 are only
accessible via SMBus, while the SCH311x and SCH5127 only provide access via
the ISA bus. The driver will therefore register itself as an I2C client driver
if it detects a DME1737, A8000, or SCH5027 and as a platform driver if it
detects a SCH311x or SCH5127 chip.
Voltage Monitoring
------------------
The voltage inputs are sampled with 12-bit resolution and have internal
scaling resistors. The values returned by the driver therefore reflect true
millivolts and don't need scaling. The voltage inputs are mapped as follows
(the last column indicates the input ranges):
DME1737, A8000::
in0: +5VTR (+5V standby) 0V - 6.64V
in1: Vccp (processor core) 0V - 3V
in2: VCC (internal +3.3V) 0V - 4.38V
in3: +5V 0V - 6.64V
in4: +12V 0V - 16V
in5: VTR (+3.3V standby) 0V - 4.38V
in6: Vbat (+3.0V) 0V - 4.38V
SCH311x::
in0: +2.5V 0V - 3.32V
in1: Vccp (processor core) 0V - 2V
in2: VCC (internal +3.3V) 0V - 4.38V
in3: +5V 0V - 6.64V
in4: +12V 0V - 16V
in5: VTR (+3.3V standby) 0V - 4.38V
in6: Vbat (+3.0V) 0V - 4.38V
SCH5027::
in0: +5VTR (+5V standby) 0V - 6.64V
in1: Vccp (processor core) 0V - 3V
in2: VCC (internal +3.3V) 0V - 4.38V
in3: V2_IN 0V - 1.5V
in4: V1_IN 0V - 1.5V
in5: VTR (+3.3V standby) 0V - 4.38V
in6: Vbat (+3.0V) 0V - 4.38V
SCH5127::
in0: +2.5 0V - 3.32V
in1: Vccp (processor core) 0V - 3V
in2: VCC (internal +3.3V) 0V - 4.38V
in3: V2_IN 0V - 1.5V
in4: V1_IN 0V - 1.5V
in5: VTR (+3.3V standby) 0V - 4.38V
in6: Vbat (+3.0V) 0V - 4.38V
in7: Vtrip (+1.5V) 0V - 1.99V
Each voltage input has associated min and max limits which trigger an alarm
when crossed.
Temperature Monitoring
----------------------
Temperatures are measured with 12-bit resolution and reported in millidegree
Celsius. The chip also features offsets for all 3 temperature inputs which -
when programmed - get added to the input readings. The chip does all the
scaling by itself and the driver therefore reports true temperatures that don't
need any user-space adjustments. The temperature inputs are mapped as follows
(the last column indicates the input ranges)::
temp1: Remote diode 1 (3904 type) temperature -127C - +127C
temp2: DME1737 internal temperature -127C - +127C
temp3: Remote diode 2 (3904 type) temperature -127C - +127C
Each temperature input has associated min and max limits which trigger an alarm
when crossed. Additionally, each temperature input has a fault attribute that
returns 1 when a faulty diode or an unconnected input is detected and 0
otherwise.
Fan Monitoring
--------------
Fan RPMs are measured with 16-bit resolution. The chip provides inputs for 6
fan tachometers. All 6 inputs have an associated min limit which triggers an
alarm when crossed. Fan inputs 1-4 provide type attributes that need to be set
to the number of pulses per fan revolution that the connected tachometer
generates. Supported values are 1, 2, and 4. Fan inputs 5-6 only support fans
that generate 2 pulses per revolution. Fan inputs 5-6 also provide a max
attribute that needs to be set to the maximum attainable RPM (fan at 100% duty-
cycle) of the input. The chip adjusts the sampling rate based on this value.
PWM Output Control
------------------
This chip features 5 PWM outputs. PWM outputs 1-3 are associated with fan
inputs 1-3 and PWM outputs 5-6 are associated with fan inputs 5-6. PWM outputs
1-3 can be configured to operate either in manual or automatic mode by setting
the appropriate enable attribute accordingly. PWM outputs 5-6 can only operate
in manual mode, their enable attributes are therefore read-only. When set to
manual mode, the fan speed is set by writing the duty-cycle value to the
appropriate PWM attribute. In automatic mode, the PWM attribute returns the
current duty-cycle as set by the fan controller in the chip. All PWM outputs
support the setting of the output frequency via the freq attribute.
In automatic mode, the chip supports the setting of the PWM ramp rate which
defines how fast the PWM output is adjusting to changes of the associated
temperature input. Associating PWM outputs to temperature inputs is done via
temperature zones. The chip features 3 zones whose assignments to temperature
inputs is static and determined during initialization. These assignments can
be retrieved via the zone[1-3]_auto_channels_temp attributes. Each PWM output
is assigned to one (or hottest of multiple) temperature zone(s) through the
pwm[1-3]_auto_channels_zone attributes. Each PWM output has 3 distinct output
duty-cycles: full, low, and min. Full is internally hard-wired to 255 (100%)
and low and min can be programmed via pwm[1-3]_auto_point1_pwm and
pwm[1-3]_auto_pwm_min, respectively. The thermal thresholds of the zones are
programmed via zone[1-3]_auto_point[1-3]_temp and
zone[1-3]_auto_point1_temp_hyst:
=============================== =======================================
pwm[1-3]_auto_point2_pwm full-speed duty-cycle (255, i.e., 100%)
pwm[1-3]_auto_point1_pwm low-speed duty-cycle
pwm[1-3]_auto_pwm_min min-speed duty-cycle
zone[1-3]_auto_point3_temp full-speed temp (all outputs)
zone[1-3]_auto_point2_temp full-speed temp
zone[1-3]_auto_point1_temp low-speed temp
zone[1-3]_auto_point1_temp_hyst min-speed temp
=============================== =======================================
The chip adjusts the output duty-cycle linearly in the range of auto_point1_pwm
to auto_point2_pwm if the temperature of the associated zone is between
auto_point1_temp and auto_point2_temp. If the temperature drops below the
auto_point1_temp_hyst value, the output duty-cycle is set to the auto_pwm_min
value which only supports two values: 0 or auto_point1_pwm. That means that the
fan either turns completely off or keeps spinning with the low-speed
duty-cycle. If any of the temperatures rise above the auto_point3_temp value,
all PWM outputs are set to 100% duty-cycle.
Following is another representation of how the chip sets the output duty-cycle
based on the temperature of the associated thermal zone:
=============== =============== =================
Temperature Duty-Cycle Duty-Cycle
Rising Temp Falling Temp
=============== =============== =================
full-speed full-speed full-speed
- < linearly -
adjusted
duty-cycle >
low-speed low-speed low-speed
- min-speed low-speed
min-speed min-speed min-speed
- min-speed min-speed
=============== =============== =================
Sysfs Attributes
----------------
Following is a list of all sysfs attributes that the driver provides, their
permissions and a short description:
=============================== ======= =======================================
Name Perm Description
=============================== ======= =======================================
cpu0_vid RO CPU core reference voltage in
millivolts.
vrm RW Voltage regulator module version
number.
in[0-7]_input RO Measured voltage in millivolts.
in[0-7]_min RW Low limit for voltage input.
in[0-7]_max RW High limit for voltage input.
in[0-7]_alarm RO Voltage input alarm. Returns 1 if
voltage input is or went outside the
associated min-max range, 0 otherwise.
temp[1-3]_input RO Measured temperature in millidegree
Celsius.
temp[1-3]_min RW Low limit for temp input.
temp[1-3]_max RW High limit for temp input.
temp[1-3]_offset RW Offset for temp input. This value will
be added by the chip to the measured
temperature.
temp[1-3]_alarm RO Alarm for temp input. Returns 1 if temp
input is or went outside the associated
min-max range, 0 otherwise.
temp[1-3]_fault RO Temp input fault. Returns 1 if the chip
detects a faulty thermal diode or an
unconnected temp input, 0 otherwise.
zone[1-3]_auto_channels_temp RO Temperature zone to temperature input
mapping. This attribute is a bitfield
and supports the following values:
- 1: temp1
- 2: temp2
- 4: temp3
zone[1-3]_auto_point1_temp_hyst RW Auto PWM temp point1 hysteresis. The
output of the corresponding PWM is set
to the pwm_auto_min value if the temp
falls below the auto_point1_temp_hyst
value.
zone[1-3]_auto_point[1-3]_temp RW Auto PWM temp points. Auto_point1 is
the low-speed temp, auto_point2 is the
full-speed temp, and auto_point3 is the
temp at which all PWM outputs are set
to full-speed (100% duty-cycle).
fan[1-6]_input RO Measured fan speed in RPM.
fan[1-6]_min RW Low limit for fan input.
fan[1-6]_alarm RO Alarm for fan input. Returns 1 if fan
input is or went below the associated
min value, 0 otherwise.
fan[1-4]_type RW Type of attached fan. Expressed in
number of pulses per revolution that
the fan generates. Supported values are
1, 2, and 4.
fan[5-6]_max RW Max attainable RPM at 100% duty-cycle.
Required for chip to adjust the
sampling rate accordingly.
pmw[1-3,5-6] RO/RW Duty-cycle of PWM output. Supported
values are 0-255 (0%-100%). Only
writeable if the associated PWM is in
manual mode.
pwm[1-3]_enable RW Enable of PWM outputs 1-3. Supported
values are:
- 0: turned off (output @ 100%)
- 1: manual mode
- 2: automatic mode
pwm[5-6]_enable RO Enable of PWM outputs 5-6. Always
returns 1 since these 2 outputs are
hard-wired to manual mode.
pmw[1-3,5-6]_freq RW Frequency of PWM output. Supported
values are in the range 11Hz-30000Hz
(default is 25000Hz).
pmw[1-3]_ramp_rate RW Ramp rate of PWM output. Determines how
fast the PWM duty-cycle will change
when the PWM is in automatic mode.
Expressed in ms per PWM step. Supported
values are in the range 0ms-206ms
(default is 0, which means the duty-
cycle changes instantly).
pwm[1-3]_auto_channels_zone RW PWM output to temperature zone mapping.
This attribute is a bitfield and
supports the following values:
- 1: zone1
- 2: zone2
- 4: zone3
- 6: highest of zone[2-3]
- 7: highest of zone[1-3]
pwm[1-3]_auto_pwm_min RW Auto PWM min pwm. Minimum PWM duty-
cycle. Supported values are 0 or
auto_point1_pwm.
pwm[1-3]_auto_point1_pwm RW Auto PWM pwm point. Auto_point1 is the
low-speed duty-cycle.
pwm[1-3]_auto_point2_pwm RO Auto PWM pwm point. Auto_point2 is the
full-speed duty-cycle which is hard-
wired to 255 (100% duty-cycle).
=============================== ======= =======================================
Chip Differences
----------------
======================= ======= ======= ======= =======
Feature dme1737 sch311x sch5027 sch5127
======================= ======= ======= ======= =======
temp[1-3]_offset yes yes
vid yes
zone3 yes yes yes
zone[1-3]_hyst yes yes
pwm min/off yes yes
fan3 opt yes opt yes
pwm3 opt yes opt yes
fan4 opt opt
fan5 opt opt
pwm5 opt opt
fan6 opt opt
pwm6 opt opt
in7 yes
======================= ======= ======= ======= =======
@@ -0,0 +1,73 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver dps920ab
========================
Supported chips:
* Delta DPS920AB
Prefix: 'dps920ab'
Addresses scanned: -
Authors:
Robert Marko <robert.marko@sartura.hr>
Description
-----------
This driver implements support for Delta DPS920AB 920W 54V DC single output
power supply with PMBus support.
The driver is a client driver to the core PMBus driver.
Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
-----------
This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.
Sysfs entries
-------------
======================= ======================================================
curr1_label "iin"
curr1_input Measured input current
curr1_alarm Input current high alarm
curr2_label "iout1"
curr2_input Measured output current
curr2_max Maximum output current
curr2_rated_max Maximum rated output current
in1_label "vin"
in1_input Measured input voltage
in1_alarm Input voltage alarm
in2_label "vout1"
in2_input Measured output voltage
in2_rated_min Minimum rated output voltage
in2_rated_max Maximum rated output voltage
in2_alarm Output voltage alarm
power1_label "pin"
power1_input Measured input power
power1_alarm Input power high alarm
power2_label "pout1"
power2_input Measured output power
power2_rated_max Maximum rated output power
temp[1-3]_input Measured temperature
temp[1-3]_alarm Temperature alarm
fan1_alarm Fan 1 warning.
fan1_fault Fan 1 fault.
fan1_input Fan 1 speed in RPM.
======================= ======================================================
@@ -0,0 +1,70 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver drivetemp
=======================
References
----------
ANS T13/1699-D
Information technology - AT Attachment 8 - ATA/ATAPI Command Set (ATA8-ACS)
ANS Project T10/BSR INCITS 513
Information technology - SCSI Primary Commands - 4 (SPC-4)
ANS Project INCITS 557
Information technology - SCSI / ATA Translation - 5 (SAT-5)
Description
-----------
This driver supports reporting the temperature of disk and solid state
drives with temperature sensors.
If supported, it uses the ATA SCT Command Transport feature to read
the current drive temperature and, if available, temperature limits
as well as historic minimum and maximum temperatures. If SCT Command
Transport is not supported, the driver uses SMART attributes to read
the drive temperature.
Usage Note
----------
Reading the drive temperature may reset the spin down timer on some drives.
This has been observed with WD120EFAX drives, but may be seen with other
drives as well. The same behavior is observed if the 'hdtemp' or 'smartd'
tools are used to access the drive.
With the WD120EFAX drive, reading the drive temperature using the drivetemp
driver is still possible _after_ it transitioned to standby mode, and
reading the drive temperature in this mode will not cause the drive to
change its mode (meaning the drive will not spin up). It is unknown if other
drives experience similar behavior.
A known workaround for WD120EFAX drives is to read the drive temperature at
intervals larger than twice the spin-down time. Otherwise affected drives
will never spin down.
Sysfs entries
-------------
Only the temp1_input attribute is always available. Other attributes are
available only if reported by the drive. All temperatures are reported in
milli-degrees Celsius.
======================= =====================================================
temp1_input Current drive temperature
temp1_lcrit Minimum temperature limit. Operating the device below
this temperature may cause physical damage to the
device.
temp1_min Minimum recommended continuous operating limit
temp1_max Maximum recommended continuous operating temperature
temp1_crit Maximum temperature limit. Operating the device above
this temperature may cause physical damage to the
device.
temp1_lowest Minimum temperature seen this power cycle
temp1_highest Maximum temperature seen this power cycle
======================= =====================================================
+217
View File
@@ -0,0 +1,217 @@
Kernel driver ds1621
====================
Supported chips:
* Dallas Semiconductor / Maxim Integrated DS1621
Prefix: 'ds1621'
Addresses scanned: none
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/DS1621.pdf
* Dallas Semiconductor DS1625
Prefix: 'ds1625'
Addresses scanned: none
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/DS1620.pdf
* Maxim Integrated DS1631
Prefix: 'ds1631'
Addresses scanned: none
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/DS1631-DS1731.pdf
* Maxim Integrated DS1721
Prefix: 'ds1721'
Addresses scanned: none
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/DS1721.pdf
* Maxim Integrated DS1731
Prefix: 'ds1731'
Addresses scanned: none
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/DS1631-DS1731.pdf
Authors:
- Christian W. Zuckschwerdt <zany@triq.net>
- valuable contributions by Jan M. Sendler <sendler@sendler.de>
- ported to 2.6 by Aurelien Jarno <aurelien@aurel32.net>
with the help of Jean Delvare <jdelvare@suse.de>
Module Parameters
------------------
* polarity int
Output's polarity:
* 0 = active high,
* 1 = active low
Description
-----------
The DS1621 is a (one instance) digital thermometer and thermostat. It has
both high and low temperature limits which can be user defined (i.e.
programmed into non-volatile on-chip registers). Temperature range is -55
degree Celsius to +125 in 0.5 increments. You may convert this into a
Fahrenheit range of -67 to +257 degrees with 0.9 steps. If polarity
parameter is not provided, original value is used.
As for the thermostat, behavior can also be programmed using the polarity
toggle. On the one hand ("heater"), the thermostat output of the chip,
Tout, will trigger when the low limit temperature is met or underrun and
stays high until the high limit is met or exceeded. On the other hand
("cooler"), vice versa. That way "heater" equals "active low", whereas
"conditioner" equals "active high". Please note that the DS1621 data sheet
is somewhat misleading in this point since setting the polarity bit does
not simply invert Tout.
A second thing is that, during extensive testing, Tout showed a tolerance
of up to +/- 0.5 degrees even when compared against precise temperature
readings. Be sure to have a high vs. low temperature limit gap of al least
1.0 degree Celsius to avoid Tout "bouncing", though!
The alarm bits are set when the high or low limits are met or exceeded and
are reset by the module as soon as the respective temperature ranges are
left.
The alarm registers are in no way suitable to find out about the actual
status of Tout. They will only tell you about its history, whether or not
any of the limits have ever been met or exceeded since last power-up or
reset. Be aware: When testing, it showed that the status of Tout can change
with neither of the alarms set.
Since there is no version or vendor identification register, there is
no unique identification for these devices. Therefore, explicit device
instantiation is required for correct device identification and functionality
(one device per address in this address range: 0x48..0x4f).
The DS1625 is pin compatible and functionally equivalent with the DS1621,
but the DS1621 is meant to replace it. The DS1631, DS1721, and DS1731 are
also pin compatible with the DS1621 and provide multi-resolution support.
Additionally, the DS1721 data sheet says the temperature flags (THF and TLF)
are used internally, however, these flags do get set and cleared as the actual
temperature crosses the min or max settings (which by default are set to 75
and 80 degrees respectively).
Temperature Conversion
----------------------
- DS1621 - 750ms (older devices may take up to 1000ms)
- DS1625 - 500ms
- DS1631 - 93ms..750ms for 9..12 bits resolution, respectively.
- DS1721 - 93ms..750ms for 9..12 bits resolution, respectively.
- DS1731 - 93ms..750ms for 9..12 bits resolution, respectively.
Note:
On the DS1621, internal access to non-volatile registers may last for 10ms
or less (unverified on the other devices).
Temperature Accuracy
--------------------
- DS1621: +/- 0.5 degree Celsius (from 0 to +70 degrees)
- DS1625: +/- 0.5 degree Celsius (from 0 to +70 degrees)
- DS1631: +/- 0.5 degree Celsius (from 0 to +70 degrees)
- DS1721: +/- 1.0 degree Celsius (from -10 to +85 degrees)
- DS1731: +/- 1.0 degree Celsius (from -10 to +85 degrees)
.. Note::
Please refer to the device datasheets for accuracy at other temperatures.
Temperature Resolution:
-----------------------
As mentioned above, the DS1631, DS1721, and DS1731 provide multi-resolution
support, which is achieved via the R0 and R1 config register bits, where:
R0..R1
------
== == ===============================
R0 R1
== == ===============================
0 0 9 bits, 0.5 degrees Celsius
1 0 10 bits, 0.25 degrees Celsius
0 1 11 bits, 0.125 degrees Celsius
1 1 12 bits, 0.0625 degrees Celsius
== == ===============================
.. Note::
At initial device power-on, the default resolution is set to 12-bits.
The resolution mode for the DS1631, DS1721, or DS1731 can be changed from
userspace, via the device 'update_interval' sysfs attribute. This attribute
will normalize the range of input values to the device maximum resolution
values defined in the datasheet as follows:
============= ================== ===============
Resolution Conversion Time Input Range
(C/LSB) (msec) (msec)
============= ================== ===============
0.5 93.75 0....94
0.25 187.5 95...187
0.125 375 188..375
0.0625 750 376..infinity
============= ================== ===============
The following examples show how the 'update_interval' attribute can be
used to change the conversion time::
$ cat update_interval
750
$ cat temp1_input
22062
$
$ echo 300 > update_interval
$ cat update_interval
375
$ cat temp1_input
22125
$
$ echo 150 > update_interval
$ cat update_interval
188
$ cat temp1_input
22250
$
$ echo 1 > update_interval
$ cat update_interval
94
$ cat temp1_input
22000
$
$ echo 1000 > update_interval
$ cat update_interval
750
$ cat temp1_input
22062
$
As shown, the ds1621 driver automatically adjusts the 'update_interval'
user input, via a step function. Reading back the 'update_interval' value
after a write operation provides the conversion time used by the device.
Mathematically, the resolution can be derived from the conversion time
via the following function:
g(x) = 0.5 * [minimum_conversion_time/x]
where:
- 'x' = the output from 'update_interval'
- 'g(x)' = the resolution in degrees C per LSB.
- 93.75ms = minimum conversion time
+38
View File
@@ -0,0 +1,38 @@
Kernel driver ds620
===================
Supported chips:
* Dallas Semiconductor DS620
Prefix: 'ds620'
Datasheet: Publicly available at the Analog Devices website
https://www.analog.com/media/en/technical-documentation/data-sheets/DS620.pdf
Authors:
Roland Stigge <stigge@antcom.de>
based on ds1621.c by
Christian W. Zuckschwerdt <zany@triq.net>
Description
-----------
The DS620 is a (one instance) digital thermometer and thermostat. It has both
high and low temperature limits which can be user defined (i.e. programmed
into non-volatile on-chip registers). Temperature range is -55 degree Celsius
to +125. Between 0 and 70 degree Celsius, accuracy is 0.5 Kelvin. The value
returned via sysfs displays post decimal positions.
The thermostat function works as follows: When configured via platform_data
(struct ds620_platform_data) .pomode == 0 (default), the thermostat output pin
PO is always low. If .pomode == 1, the thermostat is in PO_LOW mode. I.e., the
output pin PO becomes active when the temperature falls below temp1_min and
stays active until the temperature goes above temp1_max.
Likewise, with .pomode == 2, the thermostat is in PO_HIGH mode. I.e., the PO
output pin becomes active when the temperature goes above temp1_max and stays
active until the temperature falls below temp1_min.
The PO output pin of the DS620 operates active-low.
@@ -0,0 +1,81 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver e50sn12051
========================
Supported chips:
* Delta E50SN12051
Prefix: 'e50sn12051'
Addresses scanned: -
Datasheet:
Provided by Delta upon request and NDA
Description
-----------
E50SN12051 is a 600W non-isolated 1/8th brick DC-DC power module.
This driver supports the E50SN12051 PMBus compliant monitor device.
The device provides measurements for:
* Input voltage
* Output current
* Output voltage
* Temperature
The driver is based on the PMBus core and exposes standard hwmon
sysfs attributes.
Sysfs attributes
----------------
======================= =======================================================
curr1_label "iout1"
curr1_crit Critical maximum current.
From IOUT_OC_FAULT_LIMIT register.
curr1_crit_alarm Current critical high alarm.
From IOUT_OC_FAULT status.
curr1_input Measured current.
From READ_IOUT register.
curr1_max Maximum current.
From IOUT_OC_WARN_LIMIT register.
curr1_max_alarm Current high alarm.
From IOUT_OC_WARN_LIMIT status.
in1_label "vin"
in1_alarm Input voltage alarm.
in1_input Measured voltage.
From READ_VIN register.
in2_label "vout1"
in2_crit Critical maximum voltage.
From VOUT_OV_FAULT_LIMIT register.
in2_crit_alarm Voltage critical high alarm.
From VOLTAGE_OV_FAULT status.
in2_input Measured voltage.
From READ_VOUT register.
in2_max Maximum voltage.
From VOUT_OV_WARN_LIMIT register.
in2_max_alarm Voltage high alarm.
From VOLTAGE_OV_WARNING status.
temp1_crit Critical high temperature.
From OT_FAULT_LIMIT register.
temp1_crit_alarm Module temperature critical high alarm.
Set by comparing READ_TEMPERATURE_1 with OT_FAULT_LIMIT
if TEMP_OT_FAULT status is set.
temp1_input Measured module's hot spot temperature.
From READ_TEMPERATURE_1 register.
temp1_max Maximum temperature.
From OT_WARN_LIMIT register.
temp1_max_alarm Module temperature high alarm.
Set by comparing READ_TEMPERATURE_1 with OT_WARN_LIMIT if
TEMP_OT_WARNING status is set.
======================= =======================================================
@@ -0,0 +1,91 @@
Kernel driver emc1403
=====================
Supported chips:
* SMSC / Microchip EMC1402, EMC1412
Addresses scanned: I2C 0x18, 0x1c, 0x29, 0x4c, 0x4d, 0x5c
Prefix: 'emc1402'
Datasheets:
- http://ww1.microchip.com/downloads/en/DeviceDoc/1412.pdf
- https://ww1.microchip.com/downloads/en/DeviceDoc/1402.pdf
* SMSC / Microchip EMC1403, EMC1404, EMC1413, EMC1414
Addresses scanned: I2C 0x18, 0x29, 0x4c, 0x4d
Prefix: 'emc1403', 'emc1404'
Datasheets:
- http://ww1.microchip.com/downloads/en/DeviceDoc/1403_1404.pdf
- http://ww1.microchip.com/downloads/en/DeviceDoc/1413_1414.pdf
* SMSC / Microchip EMC1422
Addresses scanned: I2C 0x4c
Prefix: 'emc1422'
Datasheet:
- https://ww1.microchip.com/downloads/en/DeviceDoc/1422.pdf
* SMSC / Microchip EMC1423, EMC1424
Addresses scanned: I2C 0x4c
Prefix: 'emc1423', 'emc1424'
Datasheet:
- https://ww1.microchip.com/downloads/en/DeviceDoc/1423_1424.pdf
* SMSC / Microchip EMC1428, EMC1438
Addresses scanned: I2C 0x18, 0x4c, 0x4d
Prefix: 'emc1428', 'emc1438'
Datasheets:
- https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/DataSheets/20005275A.pdf
- https://ww1.microchip.com/downloads/en/DeviceDoc/EMC1438%20DS%20Rev.%201.0%20(04-29-10).pdf
Author:
Kalhan Trisal <kalhan.trisal@intel.com>
Description
-----------
The Standard Microsystems Corporation (SMSC) / Microchip EMC14xx chips
contain up to eight temperature sensors. EMC14x2 support two sensors
(one internal, one external). EMC14x3 support three sensors (one internal,
two external), EMC14x4 support four sensors (one internal, three external),
and EMC14x8 support eight sensors (one internal, seven external).
The chips implement three limits for each sensor: low (tempX_min), high
(tempX_max) and critical (tempX_crit.) The chips also implement an
hysteresis mechanism which applies to all limits. The relative difference
is stored in a single register on the chip, which means that the relative
difference between the limit and its hysteresis is always the same for
all three limits.
This implementation detail implies the following:
* When setting a limit, its hysteresis will automatically follow, the
difference staying unchanged. For example, if the old critical limit
was 80 degrees C, and the hysteresis was 75 degrees C, and you change
the critical limit to 90 degrees C, then the hysteresis will
automatically change to 85 degrees C.
* The hysteresis values can't be set independently. We decided to make
only temp1_crit_hyst writable, while all other hysteresis attributes
are read-only. Setting temp1_crit_hyst writes the difference between
temp1_crit_hyst and temp1_crit into the chip, and the same relative
hysteresis applies automatically to all other limits.
* The limits should be set before the hysteresis.
@@ -0,0 +1,67 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver emc1812
=====================
Supported chips:
* Microchip EMC1812, EMC1813, EMC1814, EMC1815, EMC1833
Prefix: 'emc1812'
Datasheets:
- https://ww1.microchip.com/downloads/aemDocuments/documents/MSLD/ProductDocuments/DataSheets/EMC1812-3-4-5-33-Data-Sheet-DS20005751.pdf
Author:
Marius Cristea <marius.cristea@microchip.com>
Description
-----------
The Microchip EMC181x/33 chips contain up to 4 remote temperature sensors
and one internal.
- The EMC1812 is a single channel remote temperature sensor.
- The EMC1813 and EMC1833 are dual channel remote temperature sensor. The
remote channels for this selection of devices can support substrate diodes,
discrete diode-connected transistors or CPU/GPU thermal diodes.
- The EMC1814 is a three channel remote temperature sensor that supports
Anti-Parallel Diode (APD) only on one channel. For the channel that does not
support APD functionality, substrate diodes, discrete diode-connected
transistors or CPU/GPU thermal diodes are supported. For the channel that
supports APD, only discrete diode-connected transistors may be implemented.
However, if APD is disabled on the EMC1814, then the channel that supports
APD will be functional with substrate diodes, discrete diode-connected
transistors and CPU/GPU thermal diodes.
- The EMC1815 is a four channel remote temperature sensor.
The EMC1815 and EMC1833 support APD on all channels. When APD is enabled,
the channels support only diode-connected transistors. If APD is disabled,
then the channels will support substrate transistors, discrete diode-connected
transistors and CPU/GPU thermal diodes.
Note: Disabling APD functionality to implement substrate diodes on devices
that support APD eliminates the benefit of APD (two diodes on one channel).
The chips implement three limits for each sensor: low (tempX_min), high
(tempX_max) and critical (tempX_crit). The chips also implement an
hysteresis mechanism which applies to all limits. The relative difference
is stored in a single register on the chip, which means that the relative
difference between the limit and its hysteresis is always the same for
all three limits.
This implementation detail implies the following:
* When setting a limit, its hysteresis will automatically follow, the
difference staying unchanged. For example, if the old critical limit was
80 degrees C, and the hysteresis was 75 degrees C, and you change the
critical limit to 90 degrees C, then the hysteresis will automatically
change to 85 degrees C.
* The hysteresis values can't be set independently. We decided to make
only tempX_crit_hyst writable, while all other hysteresis attributes
are read-only. Setting tempX_crit_hyst writes the difference between
tempX_crit_hyst and tempX_crit into the chip, and the same relative
hysteresis applies automatically to all other limits.
* The limits should be set before the hysteresis. At power up the device
starts with 10 degree hysteresis.
@@ -0,0 +1,37 @@
Kernel driver emc2103
======================
Supported chips:
* SMSC EMC2103
Addresses scanned: I2C 0x2e
Prefix: 'emc2103'
Datasheet: Not public
Authors:
Steve Glendinning <steve.glendinning@smsc.com>
Description
-----------
The Standard Microsystems Corporation (SMSC) EMC2103 chips
contain up to 4 temperature sensors and a single fan controller.
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. Not all RPM values can accurately be
represented, so some rounding is done. With a divider of 1, the lowest
representable value is 480 RPM.
This driver supports RPM based control, to use this a fan target
should be written to fan1_target and pwm1_enable should be set to 3.
The 2103-2 and 2103-4 variants have a third temperature sensor, which can
be connected to two anti-parallel diodes. These values can be read
as temp3 and temp4. If only one diode is attached to this channel, temp4
will show as "fault". The module parameter "apd=0" can be used to suppress
this 4th channel when anti-parallel diodes are not fitted.
@@ -0,0 +1,36 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver emc2305
=====================
Supported chips:
Microchip EMC2305, EMC2303, EMC2302, EMC2301
Prefixes: 'emc2305'
Datasheet: Publicly available at the Microchip website :
https://www.microchip.com/en-us/product/EMC2305
Description:
------------
This driver implements support for Microchip EMC2301/2/3/5 RPM-based PWM Fan Controller.
The EMC2305 Fan Controller supports up to 5 independently controlled PWM fan drives.
Fan rotation speeds are reported in RPM.
The driver supports the RPM-based PWM control to keep a fan at the desired speed.
The driver provides the possibility to have one common PWM interface for all FANs
or up to the maximum available or configured independent PWMs.
The driver provides the following sysfs interfaces in hwmon subsystem:
================= == ===================================================
fan[1-5]_fault RO files for tachometers TACH1-TACH5 fault indication
fan[1-5]_input RO files for tachometers TACH1-TACH5 input (in RPM)
pwm[1-5] RW file for fan[1-5] target duty cycle (0..255)
================= == ===================================================
sysfs interfaces in thermal subsystem:
================= == ========================================================================
cur_state RW file for the current cooling state of the cooling device (0..max_state)
max_state RO file for the maximum cooling state of the cooling device
================= == ========================================================================
@@ -0,0 +1,47 @@
Kernel driver emc6w201
======================
Supported chips:
* SMSC EMC6W201
Prefix: 'emc6w201'
Addresses scanned: I2C 0x2c, 0x2d, 0x2e
Datasheet: Not public
Author: Jean Delvare <jdelvare@suse.de>
Description
-----------
From the datasheet:
"The EMC6W201 is an environmental monitoring device with automatic fan
control capability and enhanced system acoustics for noise suppression.
This ACPI compliant device provides hardware monitoring for up to six
voltages (including its own VCC) and five external thermal sensors,
measures the speed of up to five fans, and controls the speed of
multiple DC fans using three Pulse Width Modulator (PWM) outputs. Note
that it is possible to control more than three fans by connecting two
fans to one PWM output. The EMC6W201 will be available in a 36-pin
QFN package."
The device is functionally close to the EMC6D100 series, but is
register-incompatible.
The driver currently only supports the monitoring of the voltages,
temperatures and fan speeds. Limits can be changed. Alarms are not
supported, and neither is fan speed control.
Known Systems With EMC6W201
---------------------------
The EMC6W201 is a rare device, only found on a few systems, made in
2005 and 2006. Known systems with this device:
* Dell Precision 670 workstation
* Gigabyte 2CEWH mainboard
+181
View File
@@ -0,0 +1,181 @@
Kernel driver f71805f
=====================
Supported chips:
* Fintek F71805F/FG
Prefix: 'f71805f'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Available from the Fintek website
* Fintek F71806F/FG
Prefix: 'f71872f'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Available from the Fintek website
* Fintek F71872F/FG
Prefix: 'f71872f'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Available from the Fintek website
Author: Jean Delvare <jdelvare@suse.de>
Thanks to Denis Kieft from Barracuda Networks for the donation of a
test system (custom Jetway K8M8MS motherboard, with CPU and RAM) and
for providing initial documentation.
Thanks to Kris Chen and Aaron Huang from Fintek for answering technical
questions and providing additional documentation.
Thanks to Chris Lin from Jetway for providing wiring schematics and
answering technical questions.
Description
-----------
The Fintek F71805F/FG Super I/O chip includes complete hardware monitoring
capabilities. It can monitor up to 9 voltages (counting its own power
source), 3 fans and 3 temperature sensors.
This chip also has fan controlling features, using either DC or PWM, in
three different modes (one manual, two automatic).
The Fintek F71872F/FG Super I/O chip is almost the same, with two
additional internal voltages monitored (VSB and battery). It also features
6 VID inputs. The VID inputs are not yet supported by this driver.
The Fintek F71806F/FG Super-I/O chip is essentially the same as the
F71872F/FG, and is undistinguishable therefrom.
The driver assumes that no more than one chip is present, which seems
reasonable.
Voltage Monitoring
------------------
Voltages are sampled by an 8-bit ADC with a LSB of 8 mV. The supported
range is thus from 0 to 2.040 V. Voltage values outside of this range
need external resistors. An exception is in0, which is used to monitor
the chip's own power source (+3.3V), and is divided internally by a
factor 2. For the F71872F/FG, in9 (VSB) and in10 (battery) are also
divided internally by a factor 2.
The two LSB of the voltage limit registers are not used (always 0), so
you can only set the limits in steps of 32 mV (before scaling).
The wirings and resistor values suggested by Fintek are as follow:
======= ======= =========== ==== ======= ============ ==============
in pin expected
name use R1 R2 divider raw val.
======= ======= =========== ==== ======= ============ ==============
in0 VCC VCC3.3V int. int. 2.00 1.65 V
in1 VIN1 VTT1.2V 10K - 1.00 1.20 V
in2 VIN2 VRAM 100K 100K 2.00 ~1.25 V [1]_
in3 VIN3 VCHIPSET 47K 100K 1.47 2.24 V [2]_
in4 VIN4 VCC5V 200K 47K 5.25 0.95 V
in5 VIN5 +12V 200K 20K 11.00 1.05 V
in6 VIN6 VCC1.5V 10K - 1.00 1.50 V
in7 VIN7 VCORE 10K - 1.00 ~1.40 V [1]_
in8 VIN8 VSB5V 200K 47K 1.00 0.95 V
in10 VSB VSB3.3V int. int. 2.00 1.65 V [3]_
in9 VBAT VBATTERY int. int. 2.00 1.50 V [3]_
======= ======= =========== ==== ======= ============ ==============
.. [1] Depends on your hardware setup.
.. [2] Obviously not correct, swapping R1 and R2 would make more sense.
.. [3] F71872F/FG only.
These values can be used as hints at best, as motherboard manufacturers
are free to use a completely different setup. As a matter of fact, the
Jetway K8M8MS uses a significantly different setup. You will have to
find out documentation about your own motherboard, and edit sensors.conf
accordingly.
Each voltage measured has associated low and high limits, each of which
triggers an alarm when crossed.
Fan Monitoring
--------------
Fan rotation speeds are reported as 12-bit values from a gated clock
signal. Speeds down to 366 RPM can be measured. There is no theoretical
high limit, but values over 6000 RPM seem to cause problem. The effective
resolution is much lower than you would expect, the step between different
register values being 10 rather than 1.
The chip assumes 2 pulse-per-revolution fans.
An alarm is triggered if the rotation speed drops below a programmable
limit or is too low to be measured.
Temperature Monitoring
----------------------
Temperatures are reported in degrees Celsius. Each temperature measured
has a high limit, those crossing triggers an alarm. There is an associated
hysteresis value, below which the temperature has to drop before the
alarm is cleared.
All temperature channels are external, there is no embedded temperature
sensor. Each channel can be used for connecting either a thermal diode
or a thermistor. The driver reports the currently selected mode, but
doesn't allow changing it. In theory, the BIOS should have configured
everything properly.
Fan Control
-----------
Both PWM (pulse-width modulation) and DC fan speed control methods are
supported. The right one to use depends on external circuitry on the
motherboard, so the driver assumes that the BIOS set the method
properly. The driver will report the method, but won't let you change
it.
When the PWM method is used, you can select the operating frequency,
from 187.5 kHz (default) to 31 Hz. The best frequency depends on the
fan model. As a rule of thumb, lower frequencies seem to give better
control, but may generate annoying high-pitch noise. So a frequency just
above the audible range, such as 25 kHz, may be a good choice; if this
doesn't give you good linear control, try reducing it. Fintek recommends
not going below 1 kHz, as the fan tachometers get confused by lower
frequencies as well.
When the DC method is used, Fintek recommends not going below 5 V, which
corresponds to a pwm value of 106 for the driver. The driver doesn't
enforce this limit though.
Three different fan control modes are supported; the mode number is written
to the pwm<n>_enable file.
* 1: Manual mode
You ask for a specific PWM duty cycle or DC voltage by writing to the
pwm<n> file.
* 2: Temperature mode
You define 3 temperature/fan speed trip points using the
pwm<n>_auto_point<m>_temp and _fan files. These define a staircase
relationship between temperature and fan speed with two additional points
interpolated between the values that you define. When the temperature
is below auto_point1_temp the fan is switched off.
* 3: Fan speed mode
You ask for a specific fan speed by writing to the fan<n>_target file.
Both of the automatic modes require that pwm1 corresponds to fan1, pwm2 to
fan2 and pwm3 to fan3. Temperature mode also requires that temp1 corresponds
to pwm1 and fan1, etc.
@@ -0,0 +1,193 @@
Kernel driver f71882fg
======================
Supported chips:
* Fintek F71808E
Prefix: 'f71808e'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Not public
* Fintek F71808A
Prefix: 'f71808a'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Not public
* Fintek F71858FG
Prefix: 'f71858fg'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Available from the Fintek website
* Fintek F71862FG and F71863FG
Prefix: 'f71862fg'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Available from the Fintek website
* Fintek F71869F and F71869E
Prefix: 'f71869'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Available from the Fintek website
* Fintek F71869A
Prefix: 'f71869a'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Not public
* Fintek F71882FG and F71883FG
Prefix: 'f71882fg'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Available from the Fintek website
* Fintek F71889FG
Prefix: 'f71889fg'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Available from the Fintek website
* Fintek F71889ED
Prefix: 'f71889ed'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Should become available on the Fintek website soon
* Fintek F71889A
Prefix: 'f71889a'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Should become available on the Fintek website soon
* Fintek F8000
Prefix: 'f8000'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Not public
* Fintek F81801U
Prefix: 'f71889fg'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Not public
Note:
This is the 64-pin variant of the F71889FG, they have the
same device ID and are fully compatible as far as hardware
monitoring is concerned.
* Fintek F81865F
Prefix: 'f81865f'
Addresses scanned: none, address read from Super I/O config space
Datasheet: Available from the Fintek website
Author: Hans de Goede <hdegoede@redhat.com>
Description
-----------
Fintek F718xx/F8000 Super I/O chips include complete hardware monitoring
capabilities. They can monitor up to 9 voltages, 4 fans and 3 temperature
sensors.
These chips also have fan controlling features, using either DC or PWM, in
three different modes (one manual, two automatic).
The driver assumes that no more than one chip is present, which seems
reasonable.
Monitoring
----------
The Voltage, Fan and Temperature Monitoring uses the standard sysfs
interface as documented in sysfs-interface, without any exceptions.
Fan Control
-----------
Both PWM (pulse-width modulation) and DC fan speed control methods are
supported. The right one to use depends on external circuitry on the
motherboard, so the driver assumes that the BIOS set the method
properly.
Note that the lowest numbered temperature zone trip point corresponds to
the border between the highest and one but highest temperature zones, and
vica versa. So the temperature zone trip points 1-4 (or 1-2) go from high temp
to low temp! This is how things are implemented in the IC, and the driver
mimics this.
There are 2 modes to specify the speed of the fan, PWM duty cycle (or DC
voltage) mode, where 0-100% duty cycle (0-100% of 12V) is specified. And RPM
mode where the actual RPM of the fan (as measured) is controlled and the speed
gets specified as 0-100% of the fan#_full_speed file.
Since both modes work in a 0-100% (mapped to 0-255) scale, there isn't a
whole lot of a difference when modifying fan control settings. The only
important difference is that in RPM mode the 0-100% controls the fan speed
between 0-100% of fan#_full_speed. It is assumed that if the BIOS programs
RPM mode, it will also set fan#_full_speed properly, if it does not then
fan control will not work properly, unless you set a sane fan#_full_speed
value yourself.
Switching between these modes requires re-initializing a whole bunch of
registers, so the mode which the BIOS has set is kept. The mode is
printed when loading the driver.
Three different fan control modes are supported; the mode number is written
to the pwm#_enable file. Note that not all modes are supported on all
chips, and some modes may only be available in RPM / PWM mode.
Writing an unsupported mode will result in an invalid parameter error.
* 1: Manual mode
You ask for a specific PWM duty cycle / DC voltage or a specific % of
fan#_full_speed by writing to the pwm# file. This mode is only
available on the F71858FG / F8000 if the fan channel is in RPM mode.
* 2: Normal auto mode
You can define a number of temperature/fan speed trip points that specify
the percentage at which the fan should run at each temperature, and which
temperature sensor a fan should follow, using the standard sysfs interface.
The number and type of trip points are chip dependent - see the available
files in sysfs.
Fan/PWM channel 3 of the F8000 is always in this mode!
* 3: Thermostat mode (Only available on the F8000 when in duty cycle mode)
The fan speed is regulated to keep the temp the fan is mapped to between
temp#_auto_point2_temp and temp#_auto_point3_temp.
All of the automatic modes require that pwm1 corresponds to fan1, pwm2 to
fan2 and pwm3 to fan3.
@@ -0,0 +1,131 @@
Kernel driver fam15h_power
==========================
Supported chips:
* AMD Family 15h Processors
* AMD Family 16h Processors
Prefix: 'fam15h_power'
Addresses scanned: PCI space
Datasheets:
- BIOS and Kernel Developer's Guide (BKDG) For AMD Family 15h Processors
- BIOS and Kernel Developer's Guide (BKDG) For AMD Family 16h Processors
- AMD64 Architecture Programmer's Manual Volume 2: System Programming
Author: Andreas Herrmann <herrmann.der.user@googlemail.com>
Description
-----------
1) Processor TDP (Thermal design power)
Given a fixed frequency and voltage, the power consumption of a
processor varies based on the workload being executed. Derated power
is the power consumed when running a specific application. Thermal
design power (TDP) is an example of derated power.
This driver permits reading of registers providing power information
of AMD Family 15h and 16h processors via TDP algorithm.
For AMD Family 15h and 16h processors the following power values can
be calculated using different processor northbridge function
registers:
* BasePwrWatts:
Specifies in watts the maximum amount of power
consumed by the processor for NB and logic external to the core.
* ProcessorPwrWatts:
Specifies in watts the maximum amount of power
the processor can support.
* CurrPwrWatts:
Specifies in watts the current amount of power being
consumed by the processor.
This driver provides ProcessorPwrWatts and CurrPwrWatts:
* power1_crit (ProcessorPwrWatts)
* power1_input (CurrPwrWatts)
On multi-node processors the calculated value is for the entire
package and not for a single node. Thus the driver creates sysfs
attributes only for internal node0 of a multi-node processor.
2) Accumulated Power Mechanism
This driver also introduces an algorithm that should be used to
calculate the average power consumed by a processor during a
measurement interval Tm. The feature of accumulated power mechanism is
indicated by CPUID Fn8000_0007_EDX[12].
* Tsample:
compute unit power accumulator sample period
* Tref:
the PTSC counter period
* PTSC:
performance timestamp counter
* N:
the ratio of compute unit power accumulator sample period to the
PTSC period
* Jmax:
max compute unit accumulated power which is indicated by
MaxCpuSwPwrAcc MSR C001007b
* Jx/Jy:
compute unit accumulated power which is indicated by
CpuSwPwrAcc MSR C001007a
* Tx/Ty:
the value of performance timestamp counter which is indicated
by CU_PTSC MSR C0010280
* PwrCPUave:
CPU average power
i. Determine the ratio of Tsample to Tref by executing CPUID Fn8000_0007.
N = value of CPUID Fn8000_0007_ECX[CpuPwrSampleTimeRatio[15:0]].
ii. Read the full range of the cumulative energy value from the new
MSR MaxCpuSwPwrAcc.
Jmax = value returned.
iii. At time x, SW reads CpuSwPwrAcc MSR and samples the PTSC.
Jx = value read from CpuSwPwrAcc and Tx = value read from PTSC.
iv. At time y, SW reads CpuSwPwrAcc MSR and samples the PTSC.
Jy = value read from CpuSwPwrAcc and Ty = value read from PTSC.
v. Calculate the average power consumption for a compute unit over
time period (y-x). Unit of result is uWatt::
if (Jy < Jx) // Rollover has occurred
Jdelta = (Jy + Jmax) - Jx
else
Jdelta = Jy - Jx
PwrCPUave = N * Jdelta * 1000 / (Ty - Tx)
This driver provides PwrCPUave and interval(default is 10 millisecond
and maximum is 1 second):
* power1_average (PwrCPUave)
* power1_average_interval (Interval)
The power1_average_interval can be updated at /etc/sensors3.conf file
as below:
chip `fam15h_power-*`
set power1_average_interval 0.01
Then save it with "sensors -s".
@@ -0,0 +1,28 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver fsp3y
======================
Supported devices:
* 3Y POWER YH-5151E
* 3Y POWER YM-2151E
Author: Václav Kubernát <kubernat@cesnet.cz>
Description
-----------
This driver implements limited support for two 3Y POWER devices.
Sysfs entries
-------------
* in1_input input voltage
* in2_input 12V output voltage
* in3_input 5V output voltage
* curr1_input input current
* curr2_input 12V output current
* curr3_input 5V output current
* fan1_input fan rpm
* temp1_input temperature 1
* temp2_input temperature 2
* temp3_input temperature 3
* power1_input input power
* power2_input output power
@@ -0,0 +1,42 @@
Kernel driver ftsteutates
=========================
Supported chips:
* FTS Teutates
Prefix: 'ftsteutates'
Addresses scanned: I2C 0x73 (7-Bit)
Author: Thilo Cestonaro <thilo.cestonaro@ts.fujitsu.com>
Description
-----------
The BMC Teutates is the Eleventh generation of Superior System
monitoring and thermal management solution. It is builds on the basic
functionality of the BMC Theseus and contains several new features and
enhancements. It can monitor up to 4 voltages, 16 temperatures and
8 fans. It also contains an integrated watchdog which is currently
implemented in this driver.
The ``pwmX_auto_channels_temp`` attributes show which temperature sensor
is currently driving which fan channel. This value might dynamically change
during runtime depending on the temperature sensor selected by
the fan control circuit.
The 4 voltages require a board-specific multiplier, since the BMC can
only measure voltages up to 3.3V and thus relies on voltage dividers.
Consult your motherboard manual for details.
To clear a temperature or fan alarm, execute the following command with the
correct path to the alarm file::
echo 0 >XXXX_alarm
Specifications of the chip can be found at the `Kontron FTP Server <http://ftp.kontron.com/>`_ (username = "anonymous", no password required)
under the following path:
/Services/Software_Tools/Linux_SystemMonitoring_Watchdog_GPIO/BMC-Teutates_Specification_V1.21.pdf
+40
View File
@@ -0,0 +1,40 @@
Kernel driver g760a
===================
Supported chips:
* Global Mixed-mode Technology Inc. G760A
Prefix: 'g760a'
Datasheet: Publicly available at the GMT website
http://www.gmt.com.tw/product/datasheet/EDS-760A.pdf
Author: Herbert Valerio Riedel <hvr@gnu.org>
Description
-----------
The GMT G760A Fan Speed PWM Controller is connected directly to a fan
and performs closed-loop control of the fan speed.
The fan speed is programmed by setting the period via 'pwm1' of two
consecutive speed pulses. The period is defined in terms of clock
cycle counts of an assumed 32kHz clock source.
Setting a period of 0 stops the fan; setting the period to 255 sets
fan to maximum speed.
The measured fan rotation speed returned via 'fan1_input' is derived
from the measured speed pulse period by assuming again a 32kHz clock
source and a 2 pulse-per-revolution fan.
The 'alarms' file provides access to the two alarm bits provided by
the G760A chip's status register: Bit 0 is set when the actual fan
speed differs more than 20% with respect to the programmed fan speed;
bit 1 is set when fan speed is below 1920 RPM.
The g760a driver will not update its values more frequently than every
other second; reading them more often will do no harm, but will return
'old' values.
+74
View File
@@ -0,0 +1,74 @@
Kernel driver g762
==================
The GMT G762 Fan Speed PWM Controller is connected directly to a fan
and performs closed-loop or open-loop control of the fan speed. Two
modes - PWM or DC - are supported by the device.
For additional information, a detailed datasheet is available at
http://natisbad.org/NAS/ref/GMT_EDS-762_763-080710-0.2.pdf. sysfs
bindings are described in Documentation/hwmon/sysfs-interface.rst.
The following entries are available to the user in a subdirectory of
/sys/bus/i2c/drivers/g762/ to control the operation of the device.
This can be done manually using the following entries but is usually
done via a userland daemon like fancontrol.
Note that those entries do not provide ways to setup the specific
hardware characteristics of the system (reference clock, pulses per
fan revolution, ...); Those can be modified via devicetree bindings
documented in Documentation/devicetree/bindings/hwmon/gmt,g762.yaml or
using a specific platform_data structure in board initialization
file (see include/linux/platform_data/g762.h).
fan1_target:
set desired fan speed. This only makes sense in closed-loop
fan speed control (i.e. when pwm1_enable is set to 2).
fan1_input:
provide current fan rotation value in RPM as reported by
the fan to the device.
fan1_div:
fan clock divisor. Supported value are 1, 2, 4 and 8.
fan1_pulses:
number of pulses per fan revolution. Supported values
are 2 and 4.
fan1_fault:
reports fan failure, i.e. no transition on fan gear pin for
about 0.7s (if the fan is not voluntarily set off).
fan1_alarm:
in closed-loop control mode, if fan RPM value is 25% out
of the programmed value for over 6 seconds 'fan1_alarm' is
set to 1.
pwm1_enable:
set current fan speed control mode i.e. 1 for manual fan
speed control (open-loop) via pwm1 described below, 2 for
automatic fan speed control (closed-loop) via fan1_target
above.
pwm1_mode:
set or get fan driving mode: 1 for PWM mode, 0 for DC mode.
pwm1:
get or set PWM fan control value in open-loop mode. This is an
integer value between 0 and 255. 0 stops the fan, 255 makes
it run at full speed.
Both in PWM mode ('pwm1_mode' set to 1) and DC mode ('pwm1_mode' set to 0),
when current fan speed control mode is open-loop ('pwm1_enable' set to 1),
the fan speed is programmed by setting a value between 0 and 255 via 'pwm1'
entry (0 stops the fan, 255 makes it run at full speed). In closed-loop mode
('pwm1_enable' set to 2), the expected rotation speed in RPM can be passed to
the chip via 'fan1_target'. In closed-loop mode, the target speed is compared
with current speed (available via 'fan1_input') by the device and a feedback
is performed to match that target value. The fan speed value is computed
based on the parameters associated with the physical characteristics of the
system: a reference clock source frequency, a number of pulses per fan
revolution, etc.
Note that the driver will update its values at most once per second.
@@ -0,0 +1,47 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver gigabyte_waterforce
=================================
Supported devices:
* Gigabyte AORUS WATERFORCE X240
* Gigabyte AORUS WATERFORCE X280
* Gigabyte AORUS WATERFORCE X360
Author: Aleksa Savic
Description
-----------
This driver enables hardware monitoring support for the listed Gigabyte Waterforce
all-in-one CPU liquid coolers. Available sensors are pump and fan speed in RPM, as
well as coolant temperature. Also available through debugfs is the firmware version.
Attaching a fan is optional and allows it to be controlled from the device. If
it's not connected, the fan-related sensors will report zeroes.
The addressable RGB LEDs and LCD screen are not supported in this driver and should
be controlled through userspace tools.
Usage notes
-----------
As these are USB HIDs, the driver can be loaded automatically by the kernel and
supports hot swapping.
Sysfs entries
-------------
=========== =============================================
fan1_input Fan speed (in rpm)
fan2_input Pump speed (in rpm)
temp1_input Coolant temperature (in millidegrees Celsius)
=========== =============================================
Debugfs entries
---------------
================ =======================
firmware_version Device firmware version
================ =======================
@@ -0,0 +1,80 @@
Kernel driver gl518sm
=====================
Supported chips:
* Genesys Logic GL518SM release 0x00
Prefix: 'gl518sm'
Addresses scanned: I2C 0x2c and 0x2d
* Genesys Logic GL518SM release 0x80
Prefix: 'gl518sm'
Addresses scanned: I2C 0x2c and 0x2d
Datasheet: http://www.genesyslogic.com/
Authors:
- Frodo Looijaard <frodol@dds.nl>,
- Kyösti Mälkki <kmalkki@cc.hut.fi>
- Hong-Gunn Chew <hglinux@gunnet.org>
- Jean Delvare <jdelvare@suse.de>
Description
-----------
.. important::
For the revision 0x00 chip, the in0, in1, and in2 values (+5V, +3V,
and +12V) CANNOT be read. This is a limitation of the chip, not the driver.
This driver supports the Genesys Logic GL518SM chip. There are at least
two revision of this chip, which we call revision 0x00 and 0x80. Revision
0x80 chips support the reading of all voltages and revision 0x00 only
for VIN3.
The GL518SM implements one temperature sensor, two fan rotation speed
sensors, and four voltage sensors. It can report alarms through the
computer speakers.
Temperatures are measured in degrees Celsius. An alarm goes off while the
temperature is above the over temperature limit, and has not yet dropped
below the hysteresis limit. The alarm always reflects the current
situation. Measurements are guaranteed between -10 degrees and +110
degrees, with a accuracy of +/-3 degrees.
Rotation speeds are reported in RPM (rotations per minute). An alarm is
triggered if the rotation speed has dropped below a programmable limit. In
case when you have selected to turn fan1 off, no fan1 alarm is triggered.
Fan readings can be divided by a programmable divider (1, 2, 4 or 8) to
give the readings more range or accuracy. Not all RPM values can
accurately be represented, so some rounding is done. With a divider
of 2, the lowest representable value is around 1900 RPM.
Voltage sensors (also known as VIN 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 VDD input
measures voltages between 0.000 and 5.865 volt, with a resolution of 0.023
volt. The other inputs measure voltages between 0.000 and 4.845 volt, with
a resolution of 0.019 volt. Note that revision 0x00 chips do not support
reading the current voltage of any input except for VIN3; limit setting and
alarms work fine, though.
When an alarm is triggered, you can be warned by a beeping signal through your
computer speaker. It is possible to enable all beeping globally, or only the
beeping for some alarms.
If an alarm triggers, it will remain triggered until the hardware register
is read at least once (except for temperature alarms). 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 GL518SM only updates its values each 1.5 seconds; reading it more often
will do no harm, but will return 'old' values.
@@ -0,0 +1,81 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver gpd-fan
=========================
Author:
- Cryolitia PukNgae <cryolitia@uniontech.com>
Description
------------
Handheld devices from Shenzhen GPD Technology Co., Ltd. provide fan readings
and fan control through their embedded controllers.
Supported devices
-----------------
Currently the driver supports the following handhelds:
- GPD Win Mini (7840U)
- GPD Win Mini (8840U)
- GPD Win Mini (HX370)
- GPD Pocket 4
- GPD Duo
- GPD Win Max 2 (6800U)
- GPD Win Max 2 2023 (7840U)
- GPD Win Max 2 2024 (8840U)
- GPD Win Max 2 2025 (HX370)
- GPD Win 4 (6800U)
- GPD Win 4 (7840U)
- GPD Micro PC 2
Module parameters
-----------------
gpd_fan_board
Force specific which module quirk should be used.
Use it like "gpd_fan_board=wm2".
- wm2
- GPD Win 4 (7840U)
- GPD Win Max 2 (6800U)
- GPD Win Max 2 2023 (7840U)
- GPD Win Max 2 2024 (8840U)
- GPD Win Max 2 2025 (HX370)
- win4
- GPD Win 4 (6800U)
- win_mini
- GPD Win Mini (7840U)
- GPD Win Mini (8840U)
- GPD Win Mini (HX370)
- GPD Pocket 4
- GPD Duo
- mpc2
- GPD Micro PC 2
Sysfs entries
-------------
The following attributes are supported:
fan1_input
Read Only. Reads current fan RPM.
pwm1_enable
Read/Write. Enable manual fan control. Write "0" to disable control and run
at full speed. Write "1" to set to manual, write "2" to let the EC control
decide fan speed. Read this attribute to see current status.
NB:In consideration of the safety of the device, when setting to manual mode,
the pwm speed will be set to the maximum value (255) by default. You can set
a different value by writing pwm1 later.
pwm1
Read/Write. Read this attribute to see current duty cycle in the range
[0-255]. When pwm1_enable is set to "1" (manual) write any value in the
range [0-255] to set fan speed.
NB: Many boards (except listed under wm2 above) don't support reading the
current pwm value in auto mode. That will just return EOPNOTSUPP. In manual
mode it will always return the real value.
@@ -0,0 +1,53 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver gsc-hwmon
=======================
Supported chips: Gateworks GSC
Datasheet: http://trac.gateworks.com/wiki/gsc
Author: Tim Harvey <tharvey@gateworks.com>
Description:
------------
This driver supports hardware monitoring for the temperature sensor,
various ADC's connected to the GSC, and optional FAN controller available
on some boards.
Voltage Monitoring
------------------
The voltage inputs are scaled either internally or by the driver depending
on the GSC version and firmware. The values returned by the driver do not need
further scaling. The voltage input labels provide the voltage rail name:
inX_input Measured voltage (mV).
inX_label Name of voltage rail.
Temperature Monitoring
----------------------
Temperatures are measured with 12-bit or 10-bit resolution and are scaled
either internally or by the driver depending on the GSC version and firmware.
The values returned by the driver reflect millidegree Celsius:
tempX_input Measured temperature.
tempX_label Name of temperature input.
PWM Output Control
------------------
The GSC features 1 PWM output that operates in automatic mode where the
PWM value will be scaled depending on 6 temperature boundaries.
The tempeature boundaries are read-write and in millidegree Celsius and the
read-only PWM values range from 0 (off) to 255 (full speed).
Fan speed will be set to minimum (off) when the temperature sensor reads
less than pwm1_auto_point1_temp and maximum when the temperature sensor
equals or exceeds pwm1_auto_point6_temp.
pwm1_auto_point[1-6]_pwm PWM value.
pwm1_auto_point[1-6]_temp Temperature boundary.
@@ -0,0 +1,28 @@
.. SPDX-License-Identifier: GPL-2.0-only
Kernel driver gxp-fan-ctrl
==========================
Supported chips:
* HPE GXP SOC
Author: Nick Hawkins <nick.hawkins@hpe.com>
Description
-----------
gxp-fan-ctrl is a driver which provides fan control for the hpe gxp soc.
The driver allows the gathering of fan status and the use of fan
PWM control.
Sysfs attributes
----------------
======================= ===========================================================
pwm[0-7] Fan 0 to 7 respective PWM value (0-255)
fan[0-7]_fault Fan 0 to 7 respective fault status: 1 fail, 0 ok
fan[0-7]_enable Fan 0 to 7 respective enabled status: 1 enabled, 0 disabled
======================= ===========================================================
@@ -0,0 +1,37 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver hac300s
=====================
Supported chips:
* HiTRON HAC300S
Prefix: 'hac300s'
Datasheet: Publicly available at HiTRON website.
Author:
- Vasileios Amoiridis <vasileios.amoiridis@cern.ch>
Description
-----------
This driver supports the HiTRON HAC300S PSU. It is a Universal AC input
harmonic correction AC-DC hot-swappable CompactPCI Serial Dual output
(with 5V standby) 312 Watts active current sharing switching power supply.
The device has an input of 90-264VAC and 2 nominal output voltaged at 12V and
5V which they can supplu up to 25A and 2.5A respectively.
Sysfs entries
-------------
======= ==========================================
curr1 Output current
in1 Output voltage
power1 Output power
temp1 Ambient temperature inside the module
temp2 Internal secondary component's temperature
======= ==========================================
@@ -0,0 +1,45 @@
Kernel driver hih6130
=====================
Supported chips:
* Honeywell HIH-6130 / HIH-6131
Prefix: 'hih6130'
Addresses scanned: none
Datasheet: Publicly available at the Honeywell website
http://sensing.honeywell.com/index.php?ci_id=3106&la_id=1&defId=44872
Author:
Iain Paton <ipaton0@gmail.com>
Description
-----------
The HIH-6130 & HIH-6131 are humidity and temperature sensors in a SO8 package.
The difference between the two devices is that the HIH-6131 has a condensation
filter.
The devices communicate with the I2C protocol. All sensors are set to the same
I2C address 0x27 by default, so an entry with I2C_BOARD_INFO("hih6130", 0x27)
can be used in the board setup code.
Please see Documentation/i2c/instantiating-devices.rst for details on how to
instantiate I2C devices.
sysfs-Interface
---------------
temp1_input
temperature input
humidity1_input
humidity input
Notes
-----
Command mode and alarms are not currently supported.
@@ -0,0 +1,140 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
.. include:: <isonum.txt>
===========================
Linux HP WMI Sensors Driver
===========================
:Copyright: |copy| 2023 James Seo <james@equiv.tech>
Description
===========
Hewlett-Packard (and some HP Compaq) business-class computers report hardware
monitoring information via Windows Management Instrumentation (WMI).
This driver exposes that information to the Linux hwmon subsystem, allowing
userspace utilities like ``sensors`` to gather numeric sensor readings.
sysfs interface
===============
When the driver is loaded, it discovers the sensors available on the
system and creates the following sysfs attributes as necessary within
``/sys/class/hwmon/hwmon[X]``:
(``[X]`` is some number that depends on other system components.)
======================= ======= ===================================
Name Perm Description
======================= ======= ===================================
``curr[X]_input`` RO Current in milliamperes (mA).
``curr[X]_label`` RO Current sensor label.
``fan[X]_input`` RO Fan speed in RPM.
``fan[X]_label`` RO Fan sensor label.
``fan[X]_fault`` RO Fan sensor fault indicator.
``fan[X]_alarm`` RO Fan sensor alarm indicator.
``in[X]_input`` RO Voltage in millivolts (mV).
``in[X]_label`` RO Voltage sensor label.
``temp[X]_input`` RO Temperature in millidegrees Celsius
(m\ |deg|\ C).
``temp[X]_label`` RO Temperature sensor label.
``temp[X]_fault`` RO Temperature sensor fault indicator.
``temp[X]_alarm`` RO Temperature sensor alarm indicator.
``intrusion[X]_alarm`` RW Chassis intrusion alarm indicator.
======================= ======= ===================================
``fault`` attributes
Reading ``1`` instead of ``0`` as the ``fault`` attribute for a sensor
indicates that it has encountered some issue during operation such that
measurements from it should not be trusted. If a sensor with the fault
condition recovers later, reading this attribute will return ``0`` again.
``alarm`` attributes
Reading ``1`` instead of ``0`` as the ``alarm`` attribute for a sensor
indicates that one of the following has occurred, depending on its type:
- ``fan``: The fan has stalled or has been disconnected while running.
- ``temp``: The sensor reading has reached a critical threshold.
The exact threshold is system-dependent.
- ``intrusion``: The system's chassis has been opened.
After ``1`` is read from an ``alarm`` attribute, the attribute resets itself
and returns ``0`` on subsequent reads. As an exception, an
``intrusion[X]_alarm`` can only be manually reset by writing ``0`` to it.
debugfs interface
=================
.. warning:: The debugfs interface is subject to change without notice
and is only available when the kernel is compiled with
``CONFIG_DEBUG_FS`` defined.
The standard hwmon interface in sysfs exposes sensors of several common types
that are connected as of driver initialization. However, there are usually
other sensors in WMI that do not meet these criteria. In addition, a number of
system-dependent "platform events objects" used for ``alarm`` attributes may
be present. A debugfs interface is therefore provided for read-only access to
all available HP WMI sensors and platform events objects.
``/sys/kernel/debug/hp-wmi-sensors-[X]/sensor``
contains one numbered entry per sensor with the following attributes:
=============================== =======================================
Name Example
=============================== =======================================
``name`` ``CPU0 Fan``
``description`` ``Reports CPU0 fan speed``
``sensor_type`` ``12``
``other_sensor_type`` (an empty string)
``operational_status`` ``2``
``possible_states`` ``Normal,Caution,Critical,Not Present``
``current_state`` ``Normal``
``base_units`` ``19``
``unit_modifier`` ``0``
``current_reading`` ``1008``
``rate_units`` ``0`` (only exists on some systems)
=============================== =======================================
If platform events objects are available,
``/sys/kernel/debug/hp-wmi-sensors-[X]/platform_events``
contains one numbered entry per object with the following attributes:
=============================== ====================
Name Example
=============================== ====================
``name`` ``CPU0 Fan Stall``
``description`` ``CPU0 Fan Speed``
``source_namespace`` ``root\wmi``
``source_class`` ``HPBIOS_BIOSEvent``
``category`` ``3``
``possible_severity`` ``25``
``possible_status`` ``5``
=============================== ====================
These represent the properties of the underlying ``HPBIOS_BIOSNumericSensor``
and ``HPBIOS_PlatformEvents`` WMI objects, which vary between systems.
See [#]_ for more details and Managed Object Format (MOF) definitions.
Known issues and limitations
============================
- If the existing hp-wmi driver for non-business-class HP systems is already
loaded, ``alarm`` attributes will be unavailable even on systems that
support them. This is because the same WMI event GUID used by this driver
for ``alarm`` attributes is used on those systems for e.g. laptop hotkeys.
- Dubious sensor hardware and inconsistent BIOS WMI implementations have been
observed to cause inaccurate readings and peculiar behavior, such as alarms
failing to occur or occurring only once per boot.
- Only temperature, fan speed, and intrusion sensor types have been seen in
the wild so far. Support for voltage and current sensors is therefore
provisional.
- Although HP WMI sensors may claim to be of any type, any oddball sensor
types unknown to hwmon will not be supported.
References
==========
.. [#] Hewlett-Packard Development Company, L.P.,
"HP Client Management Interface Technical White Paper", 2005. [Online].
Available: https://h20331.www2.hp.com/hpsub/downloads/cmi_whitepaper.pdf
@@ -0,0 +1,37 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver HS3001
====================
Supported chips:
* Renesas HS3001, HS3002, HS3003, HS3004
Prefix: 'hs3001'
Addresses scanned: -
Datasheet: https://www.renesas.com/us/en/document/dst/hs300x-datasheet?r=417401
Author:
- Andre Werner <andre.werner@systec-electronic.com>
Description
-----------
This driver implements support for the Renesas HS3001 chips, a humidity
and temperature family. Temperature is measured in degrees celsius, relative
humidity is expressed as a percentage. In the sysfs interface, all values are
scaled by 1000, i.e. the value for 31.5 degrees celsius is 31500.
The device communicates with the I2C protocol. Sensors have the I2C
address 0x44 by default.
sysfs-Interface
---------------
=================== =================
temp1_input: temperature input
humidity1_input: humidity input
=================== =================
+44
View File
@@ -0,0 +1,44 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver HTU31
====================
Supported chips:
* Measurement Specialties HTU31
Prefix: 'htu31'
Addresses scanned: -
Datasheet: Publicly available from https://www.te.com/en/product-CAT-HSC0007.html
Author:
- Andrei Lalaev <andrey.lalaev@gmail.com>
Description
-----------
HTU31 is a humidity and temperature sensor.
Supported temperature range is from -40 to 125 degrees Celsius.
Communication with the device is performed via I2C protocol. Sensor's default address
is 0x40.
sysfs-Interface
---------------
=================== =================
temp1_input: temperature input
humidity1_input: humidity input
heater_enable: heater control
=================== =================
debugfs-Interface
-----------------
=================== =========================================
serial_number: unique serial number of the sensor
=================== =========================================
@@ -0,0 +1,382 @@
The Linux Hardware Monitoring kernel API
========================================
Guenter Roeck
Introduction
------------
This document describes the API that can be used by hardware monitoring
drivers that want to use the hardware monitoring framework.
This document does not describe what a hardware monitoring (hwmon) Driver or
Device is. It also does not describe the API which can be used by user space
to communicate with a hardware monitoring device. If you want to know this
then please read the following file: Documentation/hwmon/sysfs-interface.rst.
For additional guidelines on how to write and improve hwmon drivers, please
also read Documentation/hwmon/submitting-patches.rst.
The API
-------
Each hardware monitoring driver must #include <linux/hwmon.h> and, in some
cases, <linux/hwmon-sysfs.h>. linux/hwmon.h declares the following
register/unregister functions::
struct device *
hwmon_device_register_with_info(struct device *dev,
const char *name, void *drvdata,
const struct hwmon_chip_info *info,
const struct attribute_group **extra_groups);
struct device *
devm_hwmon_device_register_with_info(struct device *dev,
const char *name,
void *drvdata,
const struct hwmon_chip_info *info,
const struct attribute_group **extra_groups);
void hwmon_device_unregister(struct device *dev);
char *hwmon_sanitize_name(const char *name);
char *devm_hwmon_sanitize_name(struct device *dev, const char *name);
void hwmon_lock(struct device *dev);
void hwmon_unlock(struct device *dev);
hwmon_device_register_with_info registers a hardware monitoring device.
It creates the standard sysfs attributes in the hardware monitoring core,
letting the driver focus on reading from and writing to the chip instead
of having to bother with sysfs attributes. The parent device parameter
as well as the chip parameter must not be NULL. Its parameters are described
in more detail below.
devm_hwmon_device_register_with_info is similar to
hwmon_device_register_with_info. However, it is device managed, meaning the
hwmon device does not have to be removed explicitly by the removal function.
All other hardware monitoring device registration functions are deprecated
and must not be used in new drivers.
hwmon_device_unregister deregisters a registered hardware monitoring device.
The parameter of this function is the pointer to the registered hardware
monitoring device structure. This function must be called from the driver
remove function if the hardware monitoring device was registered with
hwmon_device_register_with_info.
All supported hwmon device registration functions only accept valid device
names. Device names including invalid characters (whitespace, '*', or '-')
will be rejected. If NULL is passed as name parameter, the hardware monitoring
device name will be derived from the parent device name.
If the driver doesn't use a static device name (for example it uses
dev_name()), and therefore cannot make sure the name only contains valid
characters, hwmon_sanitize_name can be used. This convenience function
will duplicate the string and replace any invalid characters with an
underscore. It will allocate memory for the new string and it is the
responsibility of the caller to release the memory when the device is
removed.
devm_hwmon_sanitize_name is the resource managed version of
hwmon_sanitize_name; the memory will be freed automatically on device
removal.
When using ``[devm_]hwmon_device_register_with_info()`` to register the
hardware monitoring device, accesses using the associated access functions
are serialised by the hardware monitoring core. If a driver needs locking
for other functions such as interrupt handlers, attributes which are fully
implemented in the driver, or debugfs functions, hwmon_lock() and hwmon_unlock()
can be used to ensure that calls to those functions are serialized. Those
functions also support guard() and scoped_guard() variants.
Using devm_hwmon_device_register_with_info()
--------------------------------------------
hwmon_device_register_with_info() registers a hardware monitoring device.
The parameters to this function are
=============================================== ===============================================
`struct device *dev` Pointer to parent device
`const char *name` Device name
`void *drvdata` Driver private data
`const struct hwmon_chip_info *info` Pointer to chip description.
`const struct attribute_group **extra_groups` Null-terminated list of additional non-standard
sysfs attribute groups.
=============================================== ===============================================
This function returns a pointer to the created hardware monitoring device
on success and a negative error code for failure.
The hwmon_chip_info structure looks as follows::
struct hwmon_chip_info {
const struct hwmon_ops *ops;
const struct hwmon_channel_info * const *info;
};
It contains the following fields:
* ops:
Pointer to device operations.
* info:
NULL-terminated list of device channel descriptors.
The list of hwmon operations is defined as::
struct hwmon_ops {
umode_t (*is_visible)(const void *, enum hwmon_sensor_types type,
u32 attr, int);
int (*read)(struct device *, enum hwmon_sensor_types type,
u32 attr, int, long *);
int (*write)(struct device *, enum hwmon_sensor_types type,
u32 attr, int, long);
};
It defines the following operations.
* is_visible:
Pointer to a function to return the file mode for each supported
attribute. This function is mandatory.
* read:
Pointer to a function for reading a value from the chip. This function
is optional, but must be provided if any readable attributes exist.
* write:
Pointer to a function for writing a value to the chip. This function is
optional, but must be provided if any writeable attributes exist.
Each sensor channel is described with struct hwmon_channel_info, which is
defined as follows::
struct hwmon_channel_info {
enum hwmon_sensor_types type;
u32 *config;
};
It contains following fields:
* type:
The hardware monitoring sensor type.
Supported sensor types are
================== ==================================================
hwmon_chip A virtual sensor type, used to describe attributes
which are not bound to a specific input or output
hwmon_temp Temperature sensor
hwmon_in Voltage sensor
hwmon_curr Current sensor
hwmon_power Power sensor
hwmon_energy Energy sensor
hwmon_energy64 Energy sensor, reported as 64-bit signed value
hwmon_humidity Humidity sensor
hwmon_fan Fan speed sensor
hwmon_pwm PWM control
================== ==================================================
* config:
Pointer to a 0-terminated list of configuration values for each
sensor of the given type. Each value is a combination of bit values
describing the attributes supposed by a single sensor.
As an example, here is the complete description file for a LM75 compatible
sensor chip. The chip has a single temperature sensor. The driver wants to
register with the thermal subsystem (HWMON_C_REGISTER_TZ), and it supports
the update_interval attribute (HWMON_C_UPDATE_INTERVAL). The chip supports
reading the temperature (HWMON_T_INPUT), it has a maximum temperature
register (HWMON_T_MAX) as well as a maximum temperature hysteresis register
(HWMON_T_MAX_HYST)::
static const u32 lm75_chip_config[] = {
HWMON_C_REGISTER_TZ | HWMON_C_UPDATE_INTERVAL,
0
};
static const struct hwmon_channel_info lm75_chip = {
.type = hwmon_chip,
.config = lm75_chip_config,
};
static const u32 lm75_temp_config[] = {
HWMON_T_INPUT | HWMON_T_MAX | HWMON_T_MAX_HYST,
0
};
static const struct hwmon_channel_info lm75_temp = {
.type = hwmon_temp,
.config = lm75_temp_config,
};
static const struct hwmon_channel_info * const lm75_info[] = {
&lm75_chip,
&lm75_temp,
NULL
};
The HWMON_CHANNEL_INFO() macro can and should be used when possible.
With this macro, the above example can be simplified to
static const struct hwmon_channel_info * const lm75_info[] = {
HWMON_CHANNEL_INFO(chip,
HWMON_C_REGISTER_TZ | HWMON_C_UPDATE_INTERVAL),
HWMON_CHANNEL_INFO(temp,
HWMON_T_INPUT | HWMON_T_MAX | HWMON_T_MAX_HYST),
NULL
};
The remaining declarations are as follows.
static const struct hwmon_ops lm75_hwmon_ops = {
.is_visible = lm75_is_visible,
.read = lm75_read,
.write = lm75_write,
};
static const struct hwmon_chip_info lm75_chip_info = {
.ops = &lm75_hwmon_ops,
.info = lm75_info,
};
A complete list of bit values indicating individual attribute support
is defined in include/linux/hwmon.h. Definition prefixes are as follows.
=============== =================================================
HWMON_C_xxxx Chip attributes, for use with hwmon_chip.
HWMON_T_xxxx Temperature attributes, for use with hwmon_temp.
HWMON_I_xxxx Voltage attributes, for use with hwmon_in.
HWMON_C_xxxx Current attributes, for use with hwmon_curr.
Notice the prefix overlap with chip attributes.
HWMON_P_xxxx Power attributes, for use with hwmon_power.
HWMON_E_xxxx Energy attributes, for use with hwmon_energy.
HWMON_H_xxxx Humidity attributes, for use with hwmon_humidity.
HWMON_F_xxxx Fan speed attributes, for use with hwmon_fan.
HWMON_PWM_xxxx PWM control attributes, for use with hwmon_pwm.
=============== =================================================
Driver callback functions
-------------------------
Each driver provides is_visible, read, and write functions. Parameters
and return values for those functions are as follows::
umode_t is_visible_func(const void *data, enum hwmon_sensor_types type,
u32 attr, int channel)
Parameters:
data:
Pointer to device private data structure.
type:
The sensor type.
attr:
Attribute identifier associated with a specific attribute.
For example, the attribute value for HWMON_T_INPUT would be
hwmon_temp_input. For complete mappings of bit fields to
attribute values please see include/linux/hwmon.h.
channel:
The sensor channel number.
Return value:
The file mode for this attribute. Typically, this will be 0 (the
attribute will not be created), 0444, or 0644.
::
int read_func(struct device *dev, enum hwmon_sensor_types type,
u32 attr, int channel, long *val)
Parameters:
dev:
Pointer to the hardware monitoring device.
type:
The sensor type.
attr:
Attribute identifier associated with a specific attribute.
For example, the attribute value for HWMON_T_INPUT would be
hwmon_temp_input. For complete mappings please see
include/linux/hwmon.h.
channel:
The sensor channel number.
val:
Pointer to attribute value.
For hwmon_energy64, `'val`' is passed as `long *` but needs
a typecast to `s64 *`.
Return value:
0 on success, a negative error number otherwise.
::
int write_func(struct device *dev, enum hwmon_sensor_types type,
u32 attr, int channel, long val)
Parameters:
dev:
Pointer to the hardware monitoring device.
type:
The sensor type.
attr:
Attribute identifier associated with a specific attribute.
For example, the attribute value for HWMON_T_INPUT would be
hwmon_temp_input. For complete mappings please see
include/linux/hwmon.h.
channel:
The sensor channel number.
val:
The value to write to the chip.
Return value:
0 on success, a negative error number otherwise.
Driver-provided sysfs attributes
--------------------------------
In most situations it should not be necessary for a driver to provide sysfs
attributes since the hardware monitoring core creates those internally.
Only additional non-standard sysfs attributes need to be provided.
The header file linux/hwmon-sysfs.h provides a number of useful macros to
declare and use hardware monitoring sysfs attributes.
In many cases, you can use the existing define DEVICE_ATTR or its variants
DEVICE_ATTR_{RW,RO,WO} to declare such attributes. This is feasible if an
attribute has no additional context. However, in many cases there will be
additional information such as a sensor index which will need to be passed
to the sysfs attribute handling function.
SENSOR_DEVICE_ATTR and SENSOR_DEVICE_ATTR_2 can be used to define attributes
which need such additional context information. SENSOR_DEVICE_ATTR requires
one additional argument, SENSOR_DEVICE_ATTR_2 requires two.
Simplified variants of SENSOR_DEVICE_ATTR and SENSOR_DEVICE_ATTR_2 are available
and should be used if standard attribute permissions and function names are
feasible. Standard permissions are 0644 for SENSOR_DEVICE_ATTR[_2]_RW,
0444 for SENSOR_DEVICE_ATTR[_2]_RO, and 0200 for SENSOR_DEVICE_ATTR[_2]_WO.
Standard functions, similar to DEVICE_ATTR_{RW,RO,WO}, have _show and _store
appended to the provided function name.
SENSOR_DEVICE_ATTR and its variants define a struct sensor_device_attribute
variable. This structure has the following fields::
struct sensor_device_attribute {
struct device_attribute dev_attr;
int index;
};
You can use to_sensor_dev_attr to get the pointer to this structure from the
attribute read or write function. Its parameter is the device to which the
attribute is attached.
SENSOR_DEVICE_ATTR_2 and its variants define a struct sensor_device_attribute_2
variable, which is defined as follows::
struct sensor_device_attribute_2 {
struct device_attribute dev_attr;
u8 index;
u8 nr;
};
Use to_sensor_dev_attr_2 to get the pointer to this structure. Its parameter
is the device to which the attribute is attached.
@@ -0,0 +1,57 @@
Kernel driver ibm-cffps
=======================
Supported chips:
* IBM Common Form Factor power supply
Author: Eddie James <eajames@us.ibm.com>
Description
-----------
This driver supports IBM Common Form Factor (CFF) power supplies. This driver
is a client to the core PMBus driver.
Usage Notes
-----------
This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.
Sysfs entries
-------------
The following attributes are supported:
======================= ======================================================
curr1_alarm Output current over-current alarm.
curr1_input Measured output current in mA.
curr1_label "iout1"
fan1_alarm Fan 1 warning.
fan1_fault Fan 1 fault.
fan1_input Fan 1 speed in RPM.
fan2_alarm Fan 2 warning.
fan2_fault Fan 2 fault.
fan2_input Fan 2 speed in RPM.
in1_alarm Input voltage under-voltage alarm.
in1_input Measured input voltage in mV.
in1_label "vin"
in2_alarm Output voltage over-voltage alarm.
in2_input Measured output voltage in mV.
in2_label "vout1"
power1_alarm Input fault or alarm.
power1_input Measured input power in uW.
power1_label "pin"
temp1_alarm PSU inlet ambient temperature over-temperature alarm.
temp1_input Measured PSU inlet ambient temp in millidegrees C.
temp2_alarm Secondary rectifier temp over-temperature alarm.
temp2_input Measured secondary rectifier temp in millidegrees C.
temp3_alarm ORing FET temperature over-temperature alarm.
temp3_input Measured ORing FET temperature in millidegrees C.
======================= ======================================================
@@ -0,0 +1,44 @@
Kernel driver ibmaem
====================
This driver talks to the IBM Systems Director Active Energy Manager, known
henceforth as AEM.
Supported systems:
* Any recent IBM System X server with AEM support.
This includes the x3350, x3550, x3650, x3655, x3755, x3850 M2,
x3950 M2, and certain HC10/HS2x/LS2x/QS2x blades.
The IPMI host interface
driver ("ipmi-si") needs to be loaded for this driver to do anything.
Prefix: 'ibmaem'
Datasheet: Not available
Author: Darrick J. Wong
Description
-----------
This driver implements sensor reading support for the energy and power meters
available on various IBM System X hardware through the BMC. All sensor banks
will be exported as platform devices; this driver can talk to both v1 and v2
interfaces. This driver is completely separate from the older ibmpex driver.
The v1 AEM interface has a simple set of features to monitor energy use. There
is a register that displays an estimate of raw energy consumption since the
last BMC reset, and a power sensor that returns average power use over a
configurable interval.
The v2 AEM interface is a bit more sophisticated, being able to present a wider
range of energy and power use registers, the power cap as set by the AEM
software, and temperature sensors.
Special Features
----------------
The "power_cap" value displays the current system power cap, as set by the AEM
software. Setting the power cap from the host is not currently supported.
@@ -0,0 +1,87 @@
Kernel Driver IBMPOWERNV
========================
Supported systems:
* Any recent IBM P servers based on POWERNV platform
Author: Neelesh Gupta
Description
-----------
This driver implements reading the platform sensors data like temperature/fan/
voltage/power for 'POWERNV' platform.
The driver uses the platform device infrastructure. It probes the device tree
for sensor devices during the __init phase and registers them with the 'hwmon'.
'hwmon' populates the 'sysfs' tree having attribute files, each for a given
sensor type and its attribute data.
All the nodes in the DT appear under "/ibm,opal/sensors" and each valid node in
the DT maps to an attribute file in 'sysfs'. The node exports unique 'sensor-id'
which the driver uses to make an OPAL call to the firmware.
Usage notes
-----------
The driver is built statically with the kernel by enabling the config
CONFIG_SENSORS_IBMPOWERNV. It can also be built as module 'ibmpowernv'.
Sysfs attributes
----------------
======================= =======================================================
fanX_input Measured RPM value.
fanX_min Threshold RPM for alert generation.
fanX_fault - 0: No fail condition
- 1: Failing fan
tempX_input Measured ambient temperature.
tempX_max Threshold ambient temperature for alert generation.
tempX_highest Historical maximum temperature
tempX_lowest Historical minimum temperature
tempX_enable Enable/disable all temperature sensors belonging to the
sub-group. In POWER9, this attribute corresponds to
each OCC. Using this attribute each OCC can be asked to
disable/enable all of its temperature sensors.
- 1: Enable
- 0: Disable
inX_input Measured power supply voltage (millivolt)
inX_fault - 0: No fail condition.
- 1: Failing power supply.
inX_highest Historical maximum voltage
inX_lowest Historical minimum voltage
inX_enable Enable/disable all voltage sensors belonging to the
sub-group. In POWER9, this attribute corresponds to
each OCC. Using this attribute each OCC can be asked to
disable/enable all of its voltage sensors.
- 1: Enable
- 0: Disable
powerX_input Power consumption (microWatt)
powerX_input_highest Historical maximum power
powerX_input_lowest Historical minimum power
powerX_enable Enable/disable all power sensors belonging to the
sub-group. In POWER9, this attribute corresponds to
each OCC. Using this attribute each OCC can be asked to
disable/enable all of its power sensors.
- 1: Enable
- 0: Disable
currX_input Measured current (milliampere)
currX_highest Historical maximum current
currX_lowest Historical minimum current
currX_enable Enable/disable all current sensors belonging to the
sub-group. In POWER9, this attribute corresponds to
each OCC. Using this attribute each OCC can be asked to
disable/enable all of its current sensors.
- 1: Enable
- 0: Disable
energyX_input Cumulative energy (microJoule)
======================= =======================================================
@@ -0,0 +1,99 @@
Kernel driver ina209
====================
Supported chips:
* Burr-Brown / Texas Instruments INA209
Prefix: 'ina209'
Addresses scanned: -
Datasheet:
https://www.ti.com/lit/gpn/ina209
Author:
- Paul Hays <Paul.Hays@cattail.ca>
- Ira W. Snyder <iws@ovro.caltech.edu>
- Guenter Roeck <linux@roeck-us.net>
Description
-----------
The TI / Burr-Brown INA209 monitors voltage, current, and power on the high side
of a D.C. power supply. It can perform measurements and calculations in the
background to supply readings at any time. It includes a programmable
calibration multiplier to scale the displayed current and power values.
Sysfs entries
-------------
The INA209 chip is highly configurable both via hardwiring and via
the I2C bus. See the datasheet for details.
This tries to expose most monitoring features of the hardware via
sysfs. It does not support every feature of this chip.
======================= =======================================================
in0_input shunt voltage (mV)
in0_input_highest shunt voltage historical maximum reading (mV)
in0_input_lowest shunt voltage historical minimum reading (mV)
in0_reset_history reset shunt voltage history
in0_max shunt voltage max alarm limit (mV)
in0_min shunt voltage min alarm limit (mV)
in0_crit_max shunt voltage crit max alarm limit (mV)
in0_crit_min shunt voltage crit min alarm limit (mV)
in0_max_alarm shunt voltage max alarm limit exceeded
in0_min_alarm shunt voltage min alarm limit exceeded
in0_crit_max_alarm shunt voltage crit max alarm limit exceeded
in0_crit_min_alarm shunt voltage crit min alarm limit exceeded
in1_input bus voltage (mV)
in1_input_highest bus voltage historical maximum reading (mV)
in1_input_lowest bus voltage historical minimum reading (mV)
in1_reset_history reset bus voltage history
in1_max bus voltage max alarm limit (mV)
in1_min bus voltage min alarm limit (mV)
in1_crit_max bus voltage crit max alarm limit (mV)
in1_crit_min bus voltage crit min alarm limit (mV)
in1_max_alarm bus voltage max alarm limit exceeded
in1_min_alarm bus voltage min alarm limit exceeded
in1_crit_max_alarm bus voltage crit max alarm limit exceeded
in1_crit_min_alarm bus voltage crit min alarm limit exceeded
power1_input power measurement (uW)
power1_input_highest power historical maximum reading (uW)
power1_reset_history reset power history
power1_max power max alarm limit (uW)
power1_crit power crit alarm limit (uW)
power1_max_alarm power max alarm limit exceeded
power1_crit_alarm power crit alarm limit exceeded
curr1_input current measurement (mA)
update_interval data conversion time; affects number of samples used
to average results for shunt and bus voltages.
======================= =======================================================
General Remarks
---------------
The power and current registers in this chip require that the calibration
register is programmed correctly before they are used. Normally this is expected
to be done in the BIOS. In the absence of BIOS programming, the shunt resistor
voltage can be provided using platform data. The driver uses platform data from
the ina2xx driver for this purpose. If calibration register data is not provided
via platform data, the driver checks if the calibration register has been
programmed (ie has a value not equal to zero). If so, this value is retained.
Otherwise, a default value reflecting a shunt resistor value of 10 mOhm is
programmed into the calibration register.
Output Pins
-----------
Output pin programming is a board feature which depends on the BIOS. It is
outside the scope of a hardware monitoring driver to enable or disable output
pins.
@@ -0,0 +1,75 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver ina233
====================
Supported chips:
* TI INA233
Prefix: 'ina233'
* Datasheet
Publicly available at the TI website : https://www.ti.com/lit/ds/symlink/ina233.pdf
Author: Leo Yang <leo.yang.sy0@gmail.com>
Usage Notes
-----------
The shunt resistor value can be configured by a device tree property;
see Documentation/devicetree/bindings/hwmon/ti,ina2xx.yaml for details.
Description
-----------
This driver supports hardware monitoring for TI INA233.
The driver is a client driver to the core PMBus driver. Please see
Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
The driver provides the following attributes for input voltage:
**in1_input**
**in1_label**
**in1_max**
**in1_max_alarm**
**in1_min**
**in1_min_alarm**
The driver provides the following attributes for shunt voltage:
**in2_input**
**in2_label**
The driver provides the following attributes for output voltage:
**in3_input**
**in3_label**
**in3_alarm**
The driver provides the following attributes for output current:
**curr1_input**
**curr1_label**
**curr1_max**
**curr1_max_alarm**
The driver provides the following attributes for input power:
**power1_input**
**power1_label**
+113
View File
@@ -0,0 +1,113 @@
.. SPDX-License-Identifier: GPL-2.0-only
Kernel driver ina238
====================
Supported chips:
* Texas Instruments INA228
Prefix: 'ina228'
Addresses: I2C 0x40 - 0x4f
Datasheet:
https://www.ti.com/lit/gpn/ina228
* Texas Instruments INA237
Prefix: 'ina237'
Addresses: I2C 0x40 - 0x4f
Datasheet:
https://www.ti.com/lit/gpn/ina237
* Texas Instruments INA238
Prefix: 'ina238'
Addresses: I2C 0x40 - 0x4f
Datasheet:
https://www.ti.com/lit/gpn/ina238
* Texas Instruments INA700
Datasheet:
https://www.ti.com/product/ina700
* Texas Instruments INA780
Datasheet:
https://www.ti.com/product/ina780a
* Silergy SQ52206
Prefix: 'SQ52206'
Addresses: I2C 0x40 - 0x4f
Author: Nathan Rossi <nathan.rossi@digi.com>
Description
-----------
The INA238 is a current shunt, power and temperature monitor with an I2C
interface. It includes a number of programmable functions including alerts,
conversion rate, sample averaging and selectable shunt voltage accuracy.
The shunt value in micro-ohms can be set via device properties, either from
platform code or from device tree data. Please refer to
Documentation/devicetree/bindings/hwmon/ti,ina2xx.yaml for bindings if
device tree is used.
INA237 is a functionally equivalent variant of INA238 with slightly
different accuracy. INA228 is another variant of INA238 with higher ADC
resolution. This chip also reports the energy.
INA700 and INA780 are variants of the chip series with built-in shunt resistor.
They also report the energy.
SQ52206 is a mostly compatible chip from Sylergy. It reports the energy
as well as the peak power consumption.
Sysfs entries
-------------
======================= =======================================================
in0_input Shunt voltage (mV)
in0_min Minimum shunt voltage threshold (mV)
in0_min_alarm Minimum shunt voltage alarm
in0_max Maximum shunt voltage threshold (mV)
in0_max_alarm Maximum shunt voltage alarm
in1_input Bus voltage (mV)
in1_min Minimum bus voltage threshold (mV)
in1_min_alarm Minimum shunt voltage alarm
in1_max Maximum bus voltage threshold (mV)
in1_max_alarm Maximum shunt voltage alarm
power1_input Power measurement (uW)
power1_max Maximum power threshold (uW)
power1_max_alarm Maximum power alarm
power1_input_highest Peak Power (uW)
(SQ52206 only)
curr1_input Current measurement (mA)
curr1_min Minimum current threshold (mA)
curr1_min_alarm Minimum current alarm
curr1_max Maximum current threshold (mA)
curr1_max_alarm Maximum current alarm
energy1_input Energy measurement (uJ)
(SQ52206, INA237, and INA780 only)
temp1_input Die temperature measurement (mC)
temp1_max Maximum die temperature threshold (mC)
temp1_max_alarm Maximum die temperature alarm
samples ADC averaging count (1, 4, 16, 64, 128, 256, 512, 1024)
update_interval Total ADC conversion cycle time including averaging (ms)
update_interval_us Total ADC conversion cycle time including averaging (us)
======================= =======================================================
+182
View File
@@ -0,0 +1,182 @@
Kernel driver ina2xx
====================
Supported chips:
* Texas Instruments INA219
Prefix: 'ina219'
Addresses: I2C 0x40 - 0x4f
Datasheet: Publicly available at the Texas Instruments website
https://www.ti.com/
* Texas Instruments INA220
Prefix: 'ina220'
Addresses: I2C 0x40 - 0x4f
Datasheet: Publicly available at the Texas Instruments website
https://www.ti.com/
* Texas Instruments INA226
Prefix: 'ina226'
Addresses: I2C 0x40 - 0x4f
Datasheet: Publicly available at the Texas Instruments website
https://www.ti.com/
* Texas Instruments INA230
Prefix: 'ina230'
Addresses: I2C 0x40 - 0x4f
Datasheet: Publicly available at the Texas Instruments website
https://www.ti.com/
* Texas Instruments INA231
Prefix: 'ina231'
Addresses: I2C 0x40 - 0x4f
Datasheet: Publicly available at the Texas Instruments website
https://www.ti.com/
* Texas Instruments INA260
Prefix: 'ina260'
Addresses: I2C 0x40 - 0x4f
Datasheet: Publicly available at the Texas Instruments website
https://www.ti.com/
* Silergy SY24655
Prefix: 'sy24655'
Addresses: I2C 0x40 - 0x4f
Datasheet: Publicly available at the Silergy website
https://us1.silergy.com/
* Texas Instruments INA234
Prefix: 'ina234'
Addresses: I2C 0x40 - 0x43
Datasheet: Publicly available at the Texas Instruments website
https://www.ti.com/
Author: Lothar Felten <lothar.felten@gmail.com>
Description
-----------
The INA219 is a high-side current shunt and power monitor with an I2C
interface. The INA219 monitors both shunt drop and supply voltage, with
programmable conversion times and filtering.
The INA220 is a high or low side current shunt and power monitor with an I2C
interface. The INA220 monitors both shunt drop and supply voltage.
The INA226 is a current shunt and power monitor with an I2C interface.
The INA226 monitors both a shunt voltage drop and bus supply voltage.
INA230, INA231, and INA234 are high or low side current shunt and power monitors
with an I2C interface. The chips monitor both a shunt voltage drop and
bus supply voltage.
INA260 is a high or low side current and power monitor with integrated shunt
resistor.
The SY24655 is a high- and low-side current shunt and power monitor with an I2C
interface. The SY24655 supports both shunt drop and supply voltage, with
programmable calibration value and conversion times. The SY24655 can also
calculate average power for use in energy conversion.
The shunt value in micro-ohms can be set via platform data or device tree at
compile-time or via the shunt_resistor attribute in sysfs at run-time. Please
refer to the Documentation/devicetree/bindings/hwmon/ti,ina2xx.yaml for bindings
if the device tree is used.
Additionally ina226 supports update_interval attribute as described in
Documentation/hwmon/sysfs-interface.rst. Internally the interval is the sum of
bus and shunt voltage conversion times multiplied by the averaging rate. We
don't touch the conversion times and only modify the number of averages. The
lower limit of the update_interval is 2 ms, the upper limit is 2253 ms.
The actual programmed interval may vary from the desired value.
General sysfs entries
---------------------
======================= ===============================================
in0_input Shunt voltage(mV) channel
in1_input Bus voltage(mV) channel
curr1_input Current(mA) measurement channel
power1_input Power(uW) measurement channel
shunt_resistor Shunt resistance(uOhm) channel (not for ina260)
======================= ===============================================
Additional sysfs entries
------------------------
Additional entries are available for the following chips:
* ina226
* ina230
* ina231
* ina234
* ina260
* sy24655
======================= ====================================================
curr1_lcrit Critical low current
curr1_crit Critical high current
curr1_lcrit_alarm Current critical low alarm
curr1_crit_alarm Current critical high alarm
in0_lcrit Critical low shunt voltage
in0_crit Critical high shunt voltage
in0_lcrit_alarm Shunt voltage critical low alarm
in0_crit_alarm Shunt voltage critical high alarm
in1_lcrit Critical low bus voltage
in1_crit Critical high bus voltage
in1_lcrit_alarm Bus voltage critical low alarm
in1_crit_alarm Bus voltage critical high alarm
power1_crit Critical high power
power1_crit_alarm Power critical high alarm
update_interval data conversion time; affects number of samples used
to average results for shunt and bus voltages.
======================= ====================================================
Sysfs entries for sy24655 only
------------------------------
======================= ====================================================
power1_average average power from last reading to the present.
======================= ====================================================
.. note::
- Configure `shunt_resistor` before configure `power1_crit`, because power
value is calculated based on `shunt_resistor` set.
- Because of the underlying register implementation, only one `*crit` setting
and its `alarm` can be active. Writing to one `*crit` setting clears other
`*crit` settings and alarms. Writing 0 to any `*crit` setting clears all
`*crit` settings and alarms.
@@ -0,0 +1,74 @@
Kernel driver ina3221
=====================
Supported chips:
* Texas Instruments INA3221
Prefix: 'ina3221'
Addresses: I2C 0x40 - 0x43
Datasheet: Publicly available at the Texas Instruments website
https://www.ti.com/
Author: Andrew F. Davis <afd@ti.com>
Description
-----------
The Texas Instruments INA3221 monitors voltage, current, and power on the high
side of up to three D.C. power supplies. The INA3221 monitors both shunt drop
and supply voltage, with programmable conversion times and averaging, current
and power are calculated host-side from these.
Sysfs entries
-------------
======================= =======================================================
in[123]_label Voltage channel labels
in[123]_enable Voltage channel enable controls
in[123]_input Bus voltage(mV) channels
curr[123]_input Current(mA) measurement channels
shunt[123]_resistor Shunt resistance(uOhm) channels
curr[123]_crit Critical alert current(mA) setting, activates the
corresponding alarm when the respective current
is above this value
curr[123]_crit_alarm Critical alert current limit exceeded
curr[123]_max Warning alert current(mA) setting, activates the
corresponding alarm when the respective current
average is above this value.
curr[123]_max_alarm Warning alert current limit exceeded
in[456]_input Shunt voltage(uV) for channels 1, 2, and 3 respectively
in7_input Sum of shunt voltage(uV) channels
in7_label Channel label for sum of shunt voltage
curr4_input Sum of current(mA) measurement channels,
(only available when all channels use the same resistor
value for their shunt resistors)
curr4_crit Critical alert current(mA) setting for sum of current
measurements, activates the corresponding alarm
when the respective current is above this value
(only effective when all channels use the same resistor
value for their shunt resistors)
curr4_crit_alarm Critical alert current limit exceeded for sum of
current measurements.
samples Number of samples using in the averaging mode.
Supports the list of number of samples:
1, 4, 16, 64, 128, 256, 512, 1024
update_interval Data conversion time in millisecond, following:
update_interval = C x S x (BC + SC)
* C: number of enabled channels
* S: number of samples
* BC: bus-voltage conversion time in millisecond
* SC: shunt-voltage conversion time in millisecond
Affects both Bus- and Shunt-voltage conversion time.
Note that setting update_interval to 0ms sets both BC
and SC to 140 us (minimum conversion time).
======================= =======================================================
+298
View File
@@ -0,0 +1,298 @@
.. SPDX-License-Identifier: GPL-2.0
===================
Hardware Monitoring
===================
.. toctree::
:maxdepth: 1
hwmon-kernel-api
pmbus-core
submitting-patches
sysfs-interface
userspace-tools
Hardware Monitoring Kernel Drivers
==================================
.. toctree::
:maxdepth: 1
abituguru
abituguru3
acbel-fsg032
acpi_power_meter
ad7314
adc128d818
adm1025
adm1026
adm1031
adm1177
adm1266
adm1275
adm9240
adp1050
ads7828
adt7410
adt7411
adt7462
adt7470
adt7475
aht10
amc6821
aps-379
aquacomputer_d5next
arctic_fan_controller
asb100
asc7621
aspeed-g6-pwm-tach
aspeed-pwm-tacho
asus_ec_sensors
asus_rog_ryujin
asus_wmi_sensors
bcm54140
bel-pfe
bpa-rs600
cgbc-hwmon
chipcap2
coretemp
corsair-cpro
corsair-psu
cros_ec_hwmon
crps
d1u74t
da9052
da9055
dell-smm-hwmon
dme1737
dps920ab
drivetemp
ds1621
ds620
e50sn12051
emc1403
emc1812
emc2103
emc2305
emc6w201
f71805f
f71882fg
fam15h_power
fsp-3y
ftsteutates
g760a
g762
gigabyte_waterforce
gsc-hwmon
gl518sm
gpd-fan
gxp-fan-ctrl
hac300s
hih6130
hp-wmi-sensors
hs3001
htu31
ibmaem
ibm-cffps
ibmpowernv
ina209
ina2xx
ina233
ina238
ina3221
inspur-ipsps1
intel-m10-bmc-hwmon
ir35221
ir38064
ir36021
isl28022
isl68137
it87
jc42
k10temp
k8temp
kbatt
kfan
lan966x
lattepanda-sigma-ec
lineage-pem
lm25066
lm63
lm70
lm73
lm75
lm77
lm78
lm80
lm83
lm85
lm87
lm90
lm92
lm93
lm95234
lm95245
lochnagar
lt3074
lt7182s
ltc2992
ltc2945
ltc2947
ltc2978
ltc2990
ltc2991
ltc3815
ltc4151
ltc4215
ltc4245
ltc4260
ltc4261
ltc4282
ltc4283
ltc4286
lx1308
macsmc-hwmon
max127
max15301
max16064
max16065
max1619
max16601
max1668
max17616
max197
max20730
max20751
max20830
max20860a
max31722
max31730
max31760
max31785
max31790
max31827
max34440
max6620
max6639
max6650
max6697
max77705
max8688
mc13783-adc
mc33xs2410_hwmon
mc34vr500
mcp3021
mcp9982
menf21bmc
mlxreg-fan
mp2856
mp2869
mp2888
mp2891
mp2925
mp29502
mp2975
mp2985
mp2993
mp5023
mp5920
mp5926
mp5990
mp9941
mp9945
mpq8785
nct6683
nct6775
nct7363
nct7802
nct7904
npcm750-pwm-fan
nsa320
ntc_thermistor
nzxt-kraken2
nzxt-kraken3
nzxt-smart2
occ
pc87360
pc87427
pcf8591
pim4328
pli1209bc
pm6764tr
peci-cputemp
peci-dimmtemp
pmbus
powerz
powr1220
prom21-xhci
pt5161l
pxe1610
pwm-fan
q54sj108a2
qnap-mcu-hwmon
raspberrypi-hwmon
sbrmi
sbtsi_temp
sch5627
sch5636
scpi-hwmon
sfctemp
sg2042-mcu
sht15
sht21
sht3x
sht4x
shtc1
sis5595
sl28cpld
stef48h28
smpro-hwmon
smsc47b397
smsc47m192
smsc47m1
sparx5-temp
spd5118
stpddc60
surface_fan
sy7636a-hwmon
tc654
tc74
thmc50
tmp102
tmp103
tmp108
tmp401
tmp421
tmp464
tmp513
tps23861
tps25990
tps40422
tps53679
tps546d24
tsc1641
twl4030-madc-hwmon
ucd9000
ucd9200
vexpress
via686a
vt1211
w83627ehf
w83627hf
w83773g
w83781d
w83791d
w83792d
w83793
w83795
w83l785ts
w83l786ng
wm831x
wm8350
xgene-hwmon
xdp710
xdpe12284
xdpe152c4
yogafan
zl6100
@@ -0,0 +1,79 @@
Kernel driver inspur-ipsps1
===========================
Supported chips:
* Inspur Power System power supply unit
Author: John Wang <wangzqbj@inspur.com>
Description
-----------
This driver supports Inspur Power System power supplies. This driver
is a client to the core PMBus driver.
Usage Notes
-----------
This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.
Sysfs entries
-------------
The following attributes are supported:
======================= ======================================================
curr1_input Measured input current
curr1_label "iin"
curr1_max Maximum current
curr1_max_alarm Current high alarm
curr2_input Measured output current in mA.
curr2_label "iout1"
curr2_crit Critical maximum current
curr2_crit_alarm Current critical high alarm
curr2_max Maximum current
curr2_max_alarm Current high alarm
fan1_alarm Fan 1 warning.
fan1_fault Fan 1 fault.
fan1_input Fan 1 speed in RPM.
in1_alarm Input voltage under-voltage alarm.
in1_input Measured input voltage in mV.
in1_label "vin"
in2_input Measured output voltage in mV.
in2_label "vout1"
in2_lcrit Critical minimum output voltage
in2_lcrit_alarm Output voltage critical low alarm
in2_max Maximum output voltage
in2_max_alarm Output voltage high alarm
in2_min Minimum output voltage
in2_min_alarm Output voltage low alarm
power1_alarm Input fault or alarm.
power1_input Measured input power in uW.
power1_label "pin"
power1_max Input power limit
power2_max_alarm Output power high alarm
power2_max Output power limit
power2_input Measured output power in uW.
power2_label "pout"
temp[1-3]_input Measured temperature
temp[1-2]_max Maximum temperature
temp[1-3]_max_alarm Temperature high alarm
vendor Manufacturer name
model Product model
part_number Product part number
serial_number Product serial number
fw_version Firmware version
hw_version Hardware version
mode Work mode. Can be set to active or
standby, when set to standby, PSU will
automatically switch between standby
and redundancy mode.
======================= ======================================================
@@ -0,0 +1,78 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver intel-m10-bmc-hwmon
=================================
Supported chips:
* Intel MAX 10 BMC for Intel PAC N3000
Prefix: 'n3000bmc-hwmon'
Author: Xu Yilun <yilun.xu@intel.com>
Description
-----------
This driver adds the temperature, voltage, current and power reading
support for the Intel MAX 10 Board Management Controller (BMC) chip.
The BMC chip is integrated in some Intel Programmable Acceleration
Cards (PAC). It connects to a set of sensor chips to monitor the
sensor data of different components on the board. The BMC firmware is
responsible for sensor data sampling and recording in shared
registers. The host driver reads the sensor data from these shared
registers and exposes them to users as hwmon interfaces.
The BMC chip is implemented using the Intel MAX 10 CPLD. It could be
reprogramed to some variants in order to support different Intel
PACs. The driver is designed to be able to distinguish between the
variants, but now it only supports the BMC for Intel PAC N3000.
Sysfs attributes
----------------
The following attributes are supported:
- Intel MAX 10 BMC for Intel PAC N3000:
======================= =======================================================
tempX_input Temperature of the component (specified by tempX_label)
tempX_max Temperature maximum setpoint of the component
tempX_crit Temperature critical setpoint of the component
tempX_max_hyst Hysteresis for temperature maximum of the component
tempX_crit_hyst Hysteresis for temperature critical of the component
temp1_label "Board Temperature"
temp2_label "FPGA Die Temperature"
temp3_label "QSFP0 Temperature"
temp4_label "QSFP1 Temperature"
temp5_label "Retimer A Temperature"
temp6_label "Retimer A SerDes Temperature"
temp7_label "Retimer B Temperature"
temp8_label "Retimer B SerDes Temperature"
inX_input Measured voltage of the component (specified by
inX_label)
in0_label "QSFP0 Supply Voltage"
in1_label "QSFP1 Supply Voltage"
in2_label "FPGA Core Voltage"
in3_label "12V Backplane Voltage"
in4_label "1.2V Voltage"
in5_label "12V AUX Voltage"
in6_label "1.8V Voltage"
in7_label "3.3V Voltage"
currX_input Measured current of the component (specified by
currX_label)
curr1_label "FPGA Core Current"
curr2_label "12V Backplane Current"
curr3_label "12V AUX Current"
powerX_input Measured power of the component (specified by
powerX_label)
power1_label "Board Power"
======================= =======================================================
All the attributes are read-only.
@@ -0,0 +1,92 @@
Kernel driver ir35221
=====================
Supported chips:
* Infineon IR35221
Prefix: 'ir35221'
Addresses scanned: -
Datasheet: Datasheet is not publicly available.
Author: Samuel Mendoza-Jonas <sam@mendozajonas.com>
Description
-----------
IR35221 is a Digital DC-DC Multiphase Converter
Usage Notes
-----------
This driver does not probe for PMBus devices. You will have to instantiate
devices explicitly.
Example: the following commands will load the driver for an IR35221
at address 0x70 on I2C bus #4::
# modprobe ir35221
# echo ir35221 0x70 > /sys/bus/i2c/devices/i2c-4/new_device
Sysfs attributes
----------------
======================= =======================================================
curr1_label "iin"
curr1_input Measured input current
curr1_max Maximum current
curr1_max_alarm Current high alarm
curr[2-3]_label "iout[1-2]"
curr[2-3]_input Measured output current
curr[2-3]_crit Critical maximum current
curr[2-3]_crit_alarm Current critical high alarm
curr[2-3]_highest Highest output current
curr[2-3]_lowest Lowest output current
curr[2-3]_max Maximum current
curr[2-3]_max_alarm Current high alarm
in1_label "vin"
in1_input Measured input voltage
in1_crit Critical maximum input voltage
in1_crit_alarm Input voltage critical high alarm
in1_highest Highest input voltage
in1_lowest Lowest input voltage
in1_min Minimum input voltage
in1_min_alarm Input voltage low alarm
in[2-3]_label "vout[1-2]"
in[2-3]_input Measured output voltage
in[2-3]_lcrit Critical minimum output voltage
in[2-3]_lcrit_alarm Output voltage critical low alarm
in[2-3]_crit Critical maximum output voltage
in[2-3]_crit_alarm Output voltage critical high alarm
in[2-3]_highest Highest output voltage
in[2-3]_lowest Lowest output voltage
in[2-3]_max Maximum output voltage
in[2-3]_max_alarm Output voltage high alarm
in[2-3]_min Minimum output voltage
in[2-3]_min_alarm Output voltage low alarm
power1_label "pin"
power1_input Measured input power
power1_alarm Input power high alarm
power1_max Input power limit
power[2-3]_label "pout[1-2]"
power[2-3]_input Measured output power
power[2-3]_max Output power limit
power[2-3]_max_alarm Output power high alarm
temp[1-2]_input Measured temperature
temp[1-2]_crit Critical high temperature
temp[1-2]_crit_alarm Chip temperature critical high alarm
temp[1-2]_highest Highest temperature
temp[1-2]_lowest Lowest temperature
temp[1-2]_max Maximum temperature
temp[1-2]_max_alarm Chip temperature high alarm
======================= =======================================================
@@ -0,0 +1,63 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver ir36021
=====================
Supported chips:
* Infineon IR36021
Prefix: ir36021
Addresses scanned: -
Datasheet: Publicly available at the Infineon website
https://www.infineon.com/dgdl/ir36021.pdf?fileId=5546d462533600a4015355d0aa2d1775
Authors:
- Chris Packham <chris.packham@alliedtelesis.co.nz>
Description
-----------
The IR36021 is a dual-loop digital multi-phase buck controller designed for
point of load applications.
Usage Notes
-----------
This driver does not probe for PMBus devices. You will have to instantiate
devices explicitly.
Sysfs attributes
----------------
======================= ===========================
curr1_label "iin"
curr1_input Measured input current
curr1_alarm Input fault alarm
curr2_label "iout1"
curr2_input Measured output current
curr2_alarm Output over-current alarm
in1_label "vin"
in1_input Measured input voltage
in1_alarm Input under-voltage alarm
in2_label "vout1"
in2_input Measured output voltage
in2_alarm Output over-voltage alarm
power1_label "pin"
power1_input Measured input power
power1_alarm Input under-voltage alarm
power2_label "pout1"
power2_input Measured output power
temp1_input Measured temperature
temp1_alarm Temperature alarm
temp2_input Measured other loop temperature
temp2_alarm Temperature alarm
======================= ===========================
@@ -0,0 +1,90 @@
Kernel driver ir38064
=====================
Supported chips:
* Infineon IR38060
Prefix: 'IR38060'
Addresses scanned: -
Datasheet: Publicly available at the Infineon website
https://www.infineon.com/dgdl/Infineon-IR38060M-DS-v03_16-EN.pdf?fileId=5546d4625c167129015c3291ea9a4cee
* Infineon IR38064
Prefix: 'ir38064'
Addresses scanned: -
Datasheet: Publicly available at the Infineon website
https://www.infineon.com/dgdl/Infineon-IR38064MTRPBF-DS-v03_07-EN.pdf?fileId=5546d462584d1d4a0158db0d9efb67ca
* Infineon IR38164
Prefix: 'ir38164'
Addresses scanned: -
Datasheet: Publicly available at the Infineon website
https://www.infineon.com/dgdl/Infineon-IR38164M-DS-v02_02-EN.pdf?fileId=5546d462636cc8fb01640046efea1248
* Infineon ir38263
Prefix: 'ir38263'
Addresses scanned: -
Datasheet: Publicly available at the Infineon website
https://www.infineon.com/dgdl/Infineon-IR38263M-DataSheet-v03_05-EN.pdf?fileId=5546d4625b62cd8a015bcf81f90a6e52
Authors:
- Maxim Sloyko <maxims@google.com>
- Patrick Venture <venture@google.com>
Description
-----------
IR38x6x are a Single-input Voltage, Synchronous Buck Regulator, DC-DC Converter.
Usage Notes
-----------
This driver does not probe for PMBus devices. You will have to instantiate
devices explicitly.
Sysfs attributes
----------------
======================= ===========================
curr1_label "iout1"
curr1_input Measured output current
curr1_crit Critical maximum current
curr1_crit_alarm Current critical high alarm
curr1_max Maximum current
curr1_max_alarm Current high alarm
in1_label "vin"
in1_input Measured input voltage
in1_crit Critical maximum input voltage
in1_crit_alarm Input voltage critical high alarm
in1_min Minimum input voltage
in1_min_alarm Input voltage low alarm
in2_label "vout1"
in2_input Measured output voltage
in2_lcrit Critical minimum output voltage
in2_lcrit_alarm Output voltage critical low alarm
in2_crit Critical maximum output voltage
in2_crit_alarm Output voltage critical high alarm
in2_max Maximum output voltage
in2_max_alarm Output voltage high alarm
in2_min Minimum output voltage
in2_min_alarm Output voltage low alarm
power1_label "pout1"
power1_input Measured output power
temp1_input Measured temperature
temp1_crit Critical high temperature
temp1_crit_alarm Chip temperature critical high alarm
temp1_max Maximum temperature
temp1_max_alarm Chip temperature high alarm
======================= ===========================
@@ -0,0 +1,64 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver isl28022
======================
Supported chips:
* Renesas ISL28022
Prefix: 'isl28022'
Addresses scanned: none
Datasheet: Publicly available at the Renesas website
https://www.renesas.com/us/en/www/doc/datasheet/isl28022.pdf
Author:
Carsten Spieß <mail@carsten-spiess.de>
Description
-----------
The ISL28022 is a power monitor with I2C interface. The device monitors
voltage, current via shunt resistor and calculated power.
Usage Notes
-----------
This driver does not auto-detect devices. You will have to instantiate the
device explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details.
The shunt value in micro-ohms, shunt voltage range and averaging can be set
with device properties.
Please refer to the Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml
for bindings if the device tree is used.
The driver supports only shunt and bus continuous ADC mode at 15bit resolution.
Averaging can be set from 1 to 128 samples (power of 2) on both channels.
Shunt voltage range of 40, 80, 160 or 320mV is allowed
The bus voltage range is 60V fixed.
Sysfs entries
-------------
The following attributes are supported. All attributes are read-only.
======================= =======================================================
in0_input bus voltage (milli Volt)
in1_input shunt voltage (milli Volt)
curr1_input current (milli Ampere)
power1_input power (micro Watt)
======================= =======================================================
Debugfs entries
---------------
The following attributes are supported. All attributes are read-only.
======================= =======================================================
shunt_voltage shunt voltage (micro Volt)
======================= =======================================================
@@ -0,0 +1,655 @@
Kernel driver isl68137
======================
Supported chips:
* Renesas ISL68137
Prefix: 'isl68137'
Addresses scanned: -
Datasheet:
Publicly available at the Renesas website
https://www.renesas.com/us/en/www/doc/datasheet/isl68137.pdf
* Renesas ISL68220
Prefix: 'isl68220'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL68221
Prefix: 'isl68221'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL68222
Prefix: 'isl68222'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL68223
Prefix: 'isl68223'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL68224
Prefix: 'isl68224'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL68225
Prefix: 'isl68225'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL68226
Prefix: 'isl68226'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL68227
Prefix: 'isl68227'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL68229
Prefix: 'isl68229'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL68233
Prefix: 'isl68233'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL68239
Prefix: 'isl68239'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69222
Prefix: 'isl69222'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69223
Prefix: 'isl69223'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69224
Prefix: 'isl69224'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69225
Prefix: 'isl69225'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69227
Prefix: 'isl69227'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69228
Prefix: 'isl69228'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69234
Prefix: 'isl69234'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69236
Prefix: 'isl69236'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69239
Prefix: 'isl69239'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69242
Prefix: 'isl69242'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69243
Prefix: 'isl69243'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69247
Prefix: 'isl69247'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69248
Prefix: 'isl69248'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69254
Prefix: 'isl69254'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69255
Prefix: 'isl69255'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69256
Prefix: 'isl69256'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69259
Prefix: 'isl69259'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69260
Prefix: 'isl69260'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69268
Prefix: 'isl69268'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69269
Prefix: 'isl69269'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas ISL69298
Prefix: 'isl69298'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas RAA228000
Prefix: 'raa228000'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas RAA228004
Prefix: 'raa228004'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas RAA228006
Prefix: 'raa228006'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas RAA228228
Prefix: 'raa228228'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas RAA228244
Prefix: 'raa228244'
Addresses scanned: -
Datasheet:
Provided by Renesas upon request and NDA
* Renesas RAA228246
Prefix: 'raa228246'
Addresses scanned: -
Datasheet:
Provided by Renesas upon request and NDA
* Renesas RAA228942
Prefix: 'raa228942'
Addresses scanned: -
Datasheet:
Provided by Renesas upon request and NDA
* Renesas RAA228943
Prefix: 'raa228943'
Addresses scanned: -
Datasheet:
Provided by Renesas upon request and NDA
* Renesas RAA229001
Prefix: 'raa229001'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas RAA229004
Prefix: 'raa229004'
Addresses scanned: -
Datasheet:
Publicly available (after August 2020 launch) at the Renesas website
* Renesas RAA229141
Prefix: 'raa229141'
Addresses scanned: -
Datasheet:
Provided by Renesas upon request and NDA
Authors:
- Maxim Sloyko <maxims@google.com>
- Robert Lippert <rlippert@google.com>
- Patrick Venture <venture@google.com>
- Grant Peltier <grant.peltier.jg@renesas.com>
Description
-----------
This driver supports the Renesas ISL68137 and all 2nd generation Renesas
digital multiphase voltage regulators (raa_dmpvr2). The ISL68137 is a digital
output 7-phase configurable PWM controller with an AVSBus interface. 2nd
generation devices are grouped into 4 distinct configurations: '1rail' for
single-rail devices, '2rail' for dual-rail devices, '3rail' for 3-rail devices,
and 'hv' for high voltage single-rail devices. Consult the individual datasheets
for more information.
Usage Notes
-----------
This driver does not probe for PMBus devices. You will have to instantiate
devices explicitly.
The ISL68137 AVS operation mode must be enabled/disabled at runtime.
Beyond the normal sysfs pmbus attributes, the driver exposes a control attribute
for the ISL68137.
For 2nd generation Renesas digital multiphase voltage regulators, only the
normal sysfs pmbus attributes are supported.
ISL68137 sysfs attributes
-------------------------
======================= ====================================
avs(0|1)_enable Controls the AVS state of each rail.
curr1_label "iin"
curr1_input Measured input current
curr1_crit Critical maximum current
curr1_crit_alarm Current critical high alarm
curr[2-3]_label "iout[1-2]"
curr[2-3]_input Measured output current
curr[2-3]_crit Critical maximum current
curr[2-3]_crit_alarm Current critical high alarm
in1_label "vin"
in1_input Measured input voltage
in1_lcrit Critical minimum input voltage
in1_lcrit_alarm Input voltage critical low alarm
in1_crit Critical maximum input voltage
in1_crit_alarm Input voltage critical high alarm
in[2-3]_label "vout[1-2]"
in[2-3]_input Measured output voltage
in[2-3]_lcrit Critical minimum output voltage
in[2-3]_lcrit_alarm Output voltage critical low alarm
in[2-3]_crit Critical maximum output voltage
in[2-3]_crit_alarm Output voltage critical high alarm
power1_label "pin"
power1_input Measured input power
power1_alarm Input power high alarm
power[2-3]_label "pout[1-2]"
power[2-3]_input Measured output power
temp[1-3]_input Measured temperature
temp[1-3]_crit Critical high temperature
temp[1-3]_crit_alarm Chip temperature critical high alarm
temp[1-3]_max Maximum temperature
temp[1-3]_max_alarm Chip temperature high alarm
======================= ====================================
raa_dmpvr2_1rail/hv sysfs attributes
------------------------------------
======================= ==========================================
curr1_label "iin"
curr1_input Measured input current
curr1_crit Critical maximum current
curr1_crit_alarm Current critical high alarm
curr2_label "iout"
curr2_input Measured output current
curr2_crit Critical maximum current
curr2_crit_alarm Current critical high alarm
in1_label "vin"
in1_input Measured input voltage
in1_lcrit Critical minimum input voltage
in1_lcrit_alarm Input voltage critical low alarm
in1_crit Critical maximum input voltage
in1_crit_alarm Input voltage critical high alarm
in2_label "vmon"
in2_input Scaled VMON voltage read from the VMON pin
in3_label "vout"
in3_input Measured output voltage
in3_lcrit Critical minimum output voltage
in3_lcrit_alarm Output voltage critical low alarm
in3_crit Critical maximum output voltage
in3_crit_alarm Output voltage critical high alarm
power1_label "pin"
power1_input Measured input power
power1_alarm Input power high alarm
power2_label "pout"
power2_input Measured output power
temp[1-3]_input Measured temperature
temp[1-3]_crit Critical high temperature
temp[1-3]_crit_alarm Chip temperature critical high alarm
temp[1-3]_max Maximum temperature
temp[1-3]_max_alarm Chip temperature high alarm
======================= ==========================================
raa_dmpvr2_2rail sysfs attributes
---------------------------------
======================= ==========================================
curr[1-2]_label "iin[1-2]"
curr[1-2]_input Measured input current
curr[1-2]_crit Critical maximum current
curr[1-2]_crit_alarm Current critical high alarm
curr[3-4]_label "iout[1-2]"
curr[3-4]_input Measured output current
curr[3-4]_crit Critical maximum current
curr[3-4]_crit_alarm Current critical high alarm
in1_label "vin"
in1_input Measured input voltage
in1_lcrit Critical minimum input voltage
in1_lcrit_alarm Input voltage critical low alarm
in1_crit Critical maximum input voltage
in1_crit_alarm Input voltage critical high alarm
in2_label "vmon"
in2_input Scaled VMON voltage read from the VMON pin
in[3-4]_label "vout[1-2]"
in[3-4]_input Measured output voltage
in[3-4]_lcrit Critical minimum output voltage
in[3-4]_lcrit_alarm Output voltage critical low alarm
in[3-4]_crit Critical maximum output voltage
in[3-4]_crit_alarm Output voltage critical high alarm
power[1-2]_label "pin[1-2]"
power[1-2]_input Measured input power
power[1-2]_alarm Input power high alarm
power[3-4]_label "pout[1-2]"
power[3-4]_input Measured output power
temp[1-5]_input Measured temperature
temp[1-5]_crit Critical high temperature
temp[1-5]_crit_alarm Chip temperature critical high alarm
temp[1-5]_max Maximum temperature
temp[1-5]_max_alarm Chip temperature high alarm
======================= ==========================================
raa_dmpvr2_3rail sysfs attributes
---------------------------------
======================= ==========================================
curr[1-3]_label "iin[1-3]"
curr[1-3]_input Measured input current
curr[1-3]_crit Critical maximum current
curr[1-3]_crit_alarm Current critical high alarm
curr[4-6]_label "iout[1-3]"
curr[4-6]_input Measured output current
curr[4-6]_crit Critical maximum current
curr[4-6]_crit_alarm Current critical high alarm
in1_label "vin"
in1_input Measured input voltage
in1_lcrit Critical minimum input voltage
in1_lcrit_alarm Input voltage critical low alarm
in1_crit Critical maximum input voltage
in1_crit_alarm Input voltage critical high alarm
in2_label "vmon"
in2_input Scaled VMON voltage read from the VMON pin
in[3-5]_label "vout[1-3]"
in[3-5]_input Measured output voltage
in[3-5]_lcrit Critical minimum output voltage
in[3-5]_lcrit_alarm Output voltage critical low alarm
in[3-5]_crit Critical maximum output voltage
in[3-5]_crit_alarm Output voltage critical high alarm
power[1-3]_label "pin[1-3]"
power[1-3]_input Measured input power
power[1-3]_alarm Input power high alarm
power[4-6]_label "pout[1-3]"
power[4-6]_input Measured output power
temp[1-7]_input Measured temperature
temp[1-7]_crit Critical high temperature
temp[1-7]_crit_alarm Chip temperature critical high alarm
temp[1-7]_max Maximum temperature
temp[1-7]_max_alarm Chip temperature high alarm
======================= ==========================================
+399
View File
@@ -0,0 +1,399 @@
Kernel driver it87
==================
Supported chips:
* IT8603E/IT8623E
Prefix: 'it8603'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8620E
Prefix: 'it8620'
Addresses scanned: from Super I/O config space (8 I/O ports)
* IT8628E
Prefix: 'it8628'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8689E
Prefix: 'it8689'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8705F
Prefix: 'it87'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Once publicly available at the ITE website, but no longer
* IT8712F
Prefix: 'it8712'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Once publicly available at the ITE website, but no longer
* IT8716F/IT8726F
Prefix: 'it8716'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Once publicly available at the ITE website, but no longer
* IT8718F
Prefix: 'it8718'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Once publicly available at the ITE website, but no longer
* IT8720F
Prefix: 'it8720'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8721F/IT8758E
Prefix: 'it8721'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8728F
Prefix: 'it8728'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8732F
Prefix: 'it8732'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8771E
Prefix: 'it8771'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8772E
Prefix: 'it8772'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8781F
Prefix: 'it8781'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8782F
Prefix: 'it8782'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8783E/F
Prefix: 'it8783'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8786E
Prefix: 'it8786'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8790E
Prefix: 'it8790'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT8792E/IT8795E
Prefix: 'it8792'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* IT87952E
Prefix: 'it87952'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: Not publicly available
* SiS950 [clone of IT8705F]
Prefix: 'it87'
Addresses scanned: from Super I/O config space (8 I/O ports)
Datasheet: No longer be available
Authors:
- Christophe Gauthron
- Jean Delvare <jdelvare@suse.de>
Module Parameters
-----------------
* update_vbat bool
0 if vbat should report power on value, 1 if vbat should be updated after
each read. Default is 0. On some boards the battery voltage is provided
by either the battery or the onboard power supply. Only the first reading
at power on will be the actual battery voltage (which the chip does
automatically). On other boards the battery voltage is always fed to
the chip so can be read at any time. Excessive reading may decrease
battery life but no information is given in the datasheet.
* fix_pwm_polarity bool
Force PWM polarity to active high (DANGEROUS). Some chips are
misconfigured by BIOS - PWM values would be inverted. This option tries
to fix this. Please contact your BIOS manufacturer and ask him for fix.
* force_id short, short
Force multiple chip ID to specified value, separated by ','.
For example "force_id=0x8689,0x8633". A value of 0 is ignored
for that chip.
Note: A single force_id value (e.g. "force_id=0x8689") is used for
all chips, to only set the first chip use "force_id=0x8689,0".
Should only be used for testing.
* ignore_resource_conflict bool
Similar to acpi_enforce_resources=lax, but only affects this driver.
ACPI resource conflicts are ignored if this parameter is provided and
set to 1.
Provided since there are reports that system-wide acpi_enfore_resources=lax
can result in boot failures on some systems.
Note: This is inherently risky since it means that both ACPI and this driver
may access the chip at the same time. This can result in race conditions and,
worst case, result in unexpected system reboots.
Hardware Interfaces
-------------------
All the chips supported by this driver are LPC Super-I/O chips, accessed
through the LPC bus (ISA-like I/O ports). The IT8712F additionally has an
SMBus interface to the hardware monitoring functions. This driver no
longer supports this interface though, as it is slower and less reliable
than the ISA access, and was only available on a small number of
motherboard models.
Description
-----------
This driver implements support for the IT8603E, IT8620E, IT8623E, IT8628E,
IT8689E, IT8705F, IT8712F, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F,
IT8728F, IT8732F, IT8758E, IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F,
IT8786E, IT8790E, IT8792E/IT8795E, IT87952E and SiS950 chips.
These chips are 'Super I/O chips', supporting floppy disks, infrared ports,
joysticks and other miscellaneous stuff. For hardware monitoring, they
include an 'environment controller' with 3 temperature sensors, 3 fan
rotation speed sensors, 8 voltage sensors, associated alarms, and chassis
intrusion detection.
The IT8712F and IT8716F additionally feature VID inputs, used to report
the Vcore voltage of the processor. The early IT8712F have 5 VID pins,
the IT8716F and late IT8712F have 6. They are shared with other functions
though, so the functionality may not be available on a given system.
The IT8718F and IT8720F also features VID inputs (up to 8 pins) but the value
is stored in the Super-I/O configuration space. Due to technical limitations,
this value can currently only be read once at initialization time, so
the driver won't notice and report changes in the VID value. The two
upper VID bits share their pins with voltage inputs (in5 and in6) so you
can't have both on a given board.
The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E and later IT8712F revisions
have support for 2 additional fans. The additional fans are supported by the
driver.
The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E, IT8732F, IT8781F, IT8782F,
IT8783E/F, and late IT8712F and IT8705F also have optional 16-bit tachometer
counters for fans 1 to 3. This is better (no more fan clock divider mess) but
not compatible with the older chips and revisions. The 16-bit tachometer mode
is enabled by the driver when one of the above chips is detected.
The IT8726F is just bit enhanced IT8716F with additional hardware
for AMD power sequencing. Therefore the chip will appear as IT8716F
to userspace applications.
The IT8728F, IT8771E, and IT8772E are considered compatible with the IT8721F,
until a datasheet becomes available (hopefully.)
The IT8603E/IT8623E is a custom design, hardware monitoring part is similar to
IT8728F. It only supports 3 fans, 16-bit fan mode, and the full speed mode
of the fan is not supported (value 0 of pwmX_enable).
The IT8620E and IT8628E are custom designs, hardware monitoring part is similar
to IT8728F. It only supports 16-bit fan mode. Both chips support up to 6 fans.
The IT8689E supports newer autopwm, 12mV ADC, 16-bit fans, six fans, six PWM
channels, PWM frequency 2, six temperature inputs, and AVCC3 (in9).
The IT8790E, IT8792E/IT8795E and IT87952E support up to 3 fans. 16-bit fan
mode is always enabled.
The IT8732F supports a closed-loop mode for fan control, but this is not
currently implemented by the driver.
Temperatures are measured in degrees Celsius. An alarm is triggered once
when the Overtemperature Shutdown limit is crossed.
Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
triggered if the rotation speed has dropped below a programmable limit. When
16-bit tachometer counters aren't used, fan readings can be divided by
a programmable divider (1, 2, 4 or 8) to give the readings more range or
accuracy. With a divider of 2, the lowest representable value is around
2600 RPM. 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. On most chips, all
voltage inputs can measure voltages between 0 and 4.08 volts, with a resolution
of 0.016 volt. IT8603E, IT8721F/IT8758E and IT8728F can measure between 0 and
3.06 volts, with a resolution of 0.012 volt. IT8732F can measure between 0 and
2.8 volts with a resolution of 0.0109 volt. The battery voltage in8 does not
have limit registers.
On the IT8603E, IT8620E, IT8628E, IT8689E, IT8721F/IT8758E, IT8732F, IT8781F,
IT8782F, and IT8783E/F, some voltage inputs are internal and scaled inside the
chip:
* in3 (optional)
* in7 (optional for IT8781F, IT8782F, and IT8783E/F)
* in8 (always)
* in9 (IT8603E, IT8622E, and IT8689E: always AVCC3; others: optional)
The driver handles this transparently so user-space doesn't have to care.
The VID lines (IT8712F/IT8716F/IT8718F/IT8720F) 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.
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.
Out-of-limit readings can also result in beeping, if the chip is properly
wired and configured. Beeping can be enabled or disabled per sensor type
(temperatures, voltages and fans.)
The IT87xx only updates its values each 1.5 seconds; reading it more often
will do no harm, but will return 'old' values.
To change sensor N to a thermistor, 'echo 4 > tempN_type' where N is 1, 2,
or 3. To change sensor N to a thermal diode, 'echo 3 > tempN_type'.
Give 0 for unused sensor. Any other value is invalid. To configure this at
startup, consult lm_sensors's /etc/sensors.conf. (4 = thermistor;
3 = thermal diode)
Fan speed control
-----------------
The fan speed control features are limited to manual PWM mode. Automatic
"Smart Guardian" mode control handling is only implemented for older chips
(see below.) However if you want to go for "manual mode" just write 1 to
pwmN_enable.
If you are only able to control the fan speed with very small PWM values,
try lowering the PWM base frequency (pwm1_freq). Depending on the fan,
it may give you a somewhat greater control range. The same frequency is
used to drive all fan outputs, which is why pwm2_freq and pwm3_freq are
read-only.
Automatic fan speed control (old interface)
-------------------------------------------
The driver supports the old interface to automatic fan speed control
which is implemented by IT8705F chips up to revision F and IT8712F
chips up to revision G.
This interface implements 4 temperature vs. PWM output trip points.
The PWM output of trip point 4 is always the maximum value (fan running
at full speed) while the PWM output of the other 3 trip points can be
freely chosen. The temperature of all 4 trip points can be freely chosen.
Additionally, trip point 1 has an hysteresis temperature attached, to
prevent fast switching between fan on and off.
The chip automatically computes the PWM output value based on the input
temperature, based on this simple rule: if the temperature value is
between trip point N and trip point N+1 then the PWM output value is
the one of trip point N. The automatic control mode is less flexible
than the manual control mode, but it reacts faster, is more robust and
doesn't use CPU cycles.
Trip points must be set properly before switching to automatic fan speed
control mode. The driver will perform basic integrity checks before
actually switching to automatic control mode.
Temperature offset attributes
-----------------------------
The driver supports temp[1-3]_offset sysfs attributes to adjust the reported
temperature for thermal diodes or diode-connected thermal transistors.
If a temperature sensor is configured for thermistors, the attribute values
are ignored. If the thermal sensor type is Intel PECI, the temperature offset
must be programmed to the critical CPU temperature.
+152
View File
@@ -0,0 +1,152 @@
Kernel driver jc42
==================
Supported chips:
* Analog Devices ADT7408
Datasheets:
https://www.analog.com/static/imported-files/data_sheets/ADT7408.pdf
* Atmel AT30TS00, AT30TS002A/B, AT30TSE004A
Datasheets:
http://www.atmel.com/Images/doc8585.pdf
http://www.atmel.com/Images/doc8711.pdf
http://www.atmel.com/Images/Atmel-8852-SEEPROM-AT30TSE002A-Datasheet.pdf
http://www.atmel.com/Images/Atmel-8868-DTS-AT30TSE004A-Datasheet.pdf
* IDT TSE2002B3, TSE2002GB2, TSE2004GB2, TS3000B3, TS3000GB0, TS3000GB2,
TS3001GB2
Datasheets:
Available from IDT web site
* Maxim MAX6604
Datasheets:
https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6604.pdf
* Microchip MCP9804, MCP9805, MCP9808, MCP98242, MCP98243, MCP98244, MCP9843
Datasheets:
https://ww1.microchip.com/downloads/en/DeviceDoc/22203C.pdf
https://ww1.microchip.com/downloads/en/DeviceDoc/21977b.pdf
https://ww1.microchip.com/downloads/en/DeviceDoc/25095A.pdf
https://ww1.microchip.com/downloads/en/DeviceDoc/21996a.pdf
https://ww1.microchip.com/downloads/en/DeviceDoc/22153c.pdf
https://ww1.microchip.com/downloads/en/DeviceDoc/22327A.pdf
* NXP Semiconductors SE97, SE97B, SE98, SE98A
Datasheets:
https://www.nxp.com/documents/data_sheet/SE97.pdf
https://www.nxp.com/documents/data_sheet/SE97B.pdf
https://www.nxp.com/documents/data_sheet/SE98.pdf
https://www.nxp.com/documents/data_sheet/SE98A.pdf
* ON Semiconductor CAT34TS02, CAT6095
Datasheet:
https://www.onsemi.com/pub_link/Collateral/CAT34TS02-D.PDF
https://www.onsemi.com/pub/Collateral/CAT6095-D.PDF
* ST Microelectronics STTS424, STTS424E02, STTS2002, STTS2004, STTS3000
Datasheets:
http://www.st.com/web/en/resource/technical/document/datasheet/CD00157556.pdf
http://www.st.com/web/en/resource/technical/document/datasheet/CD00157558.pdf
http://www.st.com/web/en/resource/technical/document/datasheet/CD00266638.pdf
http://www.st.com/web/en/resource/technical/document/datasheet/CD00225278.pdf
http://www.st.com/web/en/resource/technical/document/datasheet/DM00076709.pdf
* JEDEC JC 42.4 compliant temperature sensor chips
Datasheet:
http://www.jedec.org/sites/default/files/docs/4_01_04R19.pdf
Common for all chips:
Prefix: 'jc42'
Addresses scanned: I2C 0x18 - 0x1f
Author:
Guenter Roeck <linux@roeck-us.net>
Description
-----------
This driver implements support for JEDEC JC 42.4 compliant temperature sensors,
which are used on many DDR3 memory modules for mobile devices and servers. Some
systems use the sensor to prevent memory overheating by automatically throttling
the memory controller.
The driver auto-detects the chips listed above, but can be manually instantiated
to support other JC 42.4 compliant chips.
Example: the following will load the driver for a generic JC 42.4 compliant
temperature sensor at address 0x18 on I2C bus #1::
# modprobe jc42
# echo jc42 0x18 > /sys/bus/i2c/devices/i2c-1/new_device
A JC 42.4 compliant chip supports a single temperature sensor. Minimum, maximum,
and critical temperature can be configured. There are alarms for high, low,
and critical thresholds.
There is also an hysteresis to control the thresholds for resetting alarms.
Per JC 42.4 specification, the hysteresis threshold can be configured to 0, 1.5,
3.0, and 6.0 degrees C. Configured hysteresis values will be rounded to those
limits. The chip supports only a single register to configure the hysteresis,
which applies to all limits. This register can be written by writing into
temp1_crit_hyst. Other hysteresis attributes are read-only.
If the BIOS has configured the sensor for automatic temperature management, it
is likely that it has locked the registers, i.e., that the temperature limits
cannot be changed.
Sysfs entries
-------------
======================= ===========================================
temp1_input Temperature (RO)
temp1_min Minimum temperature (RO or RW)
temp1_max Maximum temperature (RO or RW)
temp1_crit Critical high temperature (RO or RW)
temp1_crit_hyst Critical hysteresis temperature (RO or RW)
temp1_max_hyst Maximum hysteresis temperature (RO)
temp1_min_alarm Temperature low alarm
temp1_max_alarm Temperature high alarm
temp1_crit_alarm Temperature critical alarm
======================= ===========================================
+134
View File
@@ -0,0 +1,134 @@
Kernel driver k10temp
=====================
Supported chips:
* AMD Family 10h processors:
Socket F: Quad-Core/Six-Core/Embedded Opteron (but see below)
Socket AM2+: Quad-Core Opteron, Phenom (II) X3/X4, Athlon X2 (but see below)
Socket AM3: Quad-Core Opteron, Athlon/Phenom II X2/X3/X4, Sempron II
Socket S1G3: Athlon II, Sempron, Turion II
* AMD Family 11h processors:
Socket S1G2: Athlon (X2), Sempron (X2), Turion X2 (Ultra)
* AMD Family 12h processors: "Llano" (E2/A4/A6/A8-Series)
* AMD Family 14h processors: "Brazos" (C/E/G/Z-Series)
* AMD Family 15h processors: "Bulldozer" (FX-Series), "Trinity", "Kaveri",
"Carrizo", "Stoney Ridge", "Bristol Ridge"
* AMD Family 16h processors: "Kabini", "Mullins"
* AMD Family 17h processors: "Zen", "Zen 2"
* AMD Family 18h processors: "Hygon Dhyana"
* AMD Family 19h processors: "Zen 3"
Prefix: 'k10temp'
Addresses scanned: PCI space
Datasheets:
BIOS and Kernel Developer's Guide (BKDG) For AMD Family 10h Processors:
http://support.amd.com/us/Processor_TechDocs/31116.pdf
BIOS and Kernel Developer's Guide (BKDG) for AMD Family 11h Processors:
http://support.amd.com/us/Processor_TechDocs/41256.pdf
BIOS and Kernel Developer's Guide (BKDG) for AMD Family 12h Processors:
http://support.amd.com/us/Processor_TechDocs/41131.pdf
BIOS and Kernel Developer's Guide (BKDG) for AMD Family 14h Models 00h-0Fh Processors:
http://support.amd.com/us/Processor_TechDocs/43170.pdf
Revision Guide for AMD Family 10h Processors:
http://support.amd.com/us/Processor_TechDocs/41322.pdf
Revision Guide for AMD Family 11h Processors:
http://support.amd.com/us/Processor_TechDocs/41788.pdf
Revision Guide for AMD Family 12h Processors:
http://support.amd.com/us/Processor_TechDocs/44739.pdf
Revision Guide for AMD Family 14h Models 00h-0Fh Processors:
http://support.amd.com/us/Processor_TechDocs/47534.pdf
AMD Family 11h Processor Power and Thermal Data Sheet for Notebooks:
http://support.amd.com/us/Processor_TechDocs/43373.pdf
AMD Family 10h Server and Workstation Processor Power and Thermal Data Sheet:
http://support.amd.com/us/Processor_TechDocs/43374.pdf
AMD Family 10h Desktop Processor Power and Thermal Data Sheet:
http://support.amd.com/us/Processor_TechDocs/43375.pdf
Author: Clemens Ladisch <clemens@ladisch.de>
Description
-----------
This driver permits reading of the internal temperature sensor of AMD
Family 10h/11h/12h/14h/15h/16h processors.
All these processors have a sensor, but on those for Socket F or AM2+,
the sensor may return inconsistent values (erratum 319). The driver
will refuse to load on these revisions unless you specify the "force=1"
module parameter.
Due to technical reasons, the driver can detect only the mainboard's
socket type, not the processor's actual capabilities. Therefore, if you
are using an AM3 processor on an AM2+ mainboard, you can safely use the
"force=1" parameter.
For CPUs older than Family 17h, there is one temperature measurement value,
available as temp1_input in sysfs. It is measured in degrees Celsius with a
resolution of 1/8th degree. Please note that it is defined as a relative
value; to quote the AMD manual::
Tctl is the processor temperature control value, used by the platform to
control cooling systems. Tctl is a non-physical temperature on an
arbitrary scale measured in degrees. It does _not_ represent an actual
physical temperature like die or case temperature. Instead, it specifies
the processor temperature relative to the point at which the system must
supply the maximum cooling for the processor's specified maximum case
temperature and maximum thermal power dissipation.
The maximum value for Tctl is available in the file temp1_max.
If the BIOS has enabled hardware temperature control, the threshold at
which the processor will throttle itself to avoid damage is available in
temp1_crit and temp1_crit_hyst.
On some AMD CPUs, there is a difference between the die temperature (Tdie) and
the reported temperature (Tctl). Tdie is the real measured temperature, and
Tctl is used for fan control. While Tctl is always available as temp1_input,
the driver exports Tdie temperature as temp2_input for those CPUs which support
it.
Models from 17h family report relative temperature, the driver aims to
compensate and report the real temperature.
On Family 17h and Family 18h CPUs, additional temperature sensors may report
Core Complex Die (CCD) temperatures. Up to 8 such temperatures are reported
as temp{3..10}_input, labeled Tccd{1..8}. Actual support depends on the CPU
variant.
@@ -0,0 +1,62 @@
Kernel driver k8temp
====================
Supported chips:
* AMD Athlon64/FX or Opteron CPUs
Prefix: 'k8temp'
Addresses scanned: PCI space
Datasheet: https://www.amd.com/system/files/TechDocs/32559.pdf
Author: Rudolf Marek
Contact: Rudolf Marek <r.marek@assembler.cz>
Description
-----------
This driver permits reading temperature sensor(s) embedded inside AMD K8
family CPUs (Athlon64/FX, Opteron). Official documentation says that it works
from revision F of K8 core, but in fact it seems to be implemented for all
revisions of K8 except the first two revisions (SH-B0 and SH-B3).
Please note that you will need at least lm-sensors 2.10.1 for proper userspace
support.
There can be up to four temperature sensors inside single CPU. The driver
will auto-detect the sensors and will display only temperatures from
implemented sensors.
Mapping of /sys files is as follows:
============= ===================================
temp1_input temperature of Core 0 and "place" 0
temp2_input temperature of Core 0 and "place" 1
temp3_input temperature of Core 1 and "place" 0
temp4_input temperature of Core 1 and "place" 1
============= ===================================
Temperatures are measured in degrees Celsius and measurement resolution is
1 degree C. It is expected that future CPU will have better resolution. The
temperature is updated once a second. Valid temperatures are from -49 to
206 degrees C.
Temperature known as TCaseMax was specified for processors up to revision E.
This temperature is defined as temperature between heat-spreader and CPU
case, so the internal CPU temperature supplied by this driver can be higher.
There is no easy way how to measure the temperature which will correlate
with TCaseMax temperature.
For newer revisions of CPU (rev F, socket AM2) there is a mathematically
computed temperature called TControl, which must be lower than TControlMax.
The relationship is following:
temp1_input - TjOffset*2 < TControlMax,
TjOffset is not yet exported by the driver, TControlMax is usually
70 degrees C. The rule of the thumb -> CPU temperature should not cross
60 degrees C too much.
+60
View File
@@ -0,0 +1,60 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver kbatt
===================
Supported chips:
* KEBA battery monitoring controller (IP core in FPGA)
Prefix: 'kbatt'
Authors:
Gerhard Engleder <eg@keba.com>
Petar Bojanic <boja@keba.com>
Description
-----------
The KEBA battery monitoring controller is an IP core for FPGAs, which
monitors the health of a coin cell battery. The coin cell battery is
typically used to supply the RTC during power off to keep the current
time. E.g., the CP500 FPGA includes this IP core to monitor the coin cell
battery of PLCs and the corresponding cp500 driver creates an auxiliary
device for the kbatt driver.
This driver provides information about the coin cell battery health to
user space. Actually the user space shall be informed that the coin cell
battery is nearly empty and needs to be replaced.
The coin cell battery must be tested actively to get to know if its nearly
empty or not. Therefore, a load is put on the coin cell battery and the
resulting voltage is evaluated. This evaluation is done by some hard wired
analog logic, which compares the voltage to a defined limit. If the
voltage is above the limit, then the coin cell battery is assumed to be
ok. If the voltage is below the limit, then the coin cell battery is
nearly empty (or broken, removed, ...) and shall be replaced by a new one.
The KEBA battery monitoring controller allows to start the test of the
coin cell battery and to get the result if the voltage is above or below
the limit. The actual voltage is not available. Only the information if
the voltage is below a limit is available.
The test load, which is put on the coin cell battery for the health check,
is similar to the load during power off. Therefore, the lifetime of the
coin cell battery is reduced directly by the duration of each test. To
limit the negative impact to the lifetime the test is limited to at most
once every 10 seconds. The test load is put on the coin cell battery for
100ms. Thus, in worst case the coin cell battery lifetime is reduced by
1% of the uptime or 3.65 days per year. As the coin cell battery lasts
multiple years, this lifetime reduction negligible.
This driver only provides a single alarm attribute, which is raised when
the coin cell battery is nearly empty.
====================== ==== ===================================================
Attribute R/W Contents
====================== ==== ===================================================
in0_min_alarm R voltage of coin cell battery under load is below
limit
====================== ==== ===================================================
+39
View File
@@ -0,0 +1,39 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver kfan
==================
Supported chips:
* KEBA fan controller (IP core in FPGA)
Prefix: 'kfan'
Authors:
Gerhard Engleder <eg@keba.com>
Petar Bojanic <boja@keba.com>
Description
-----------
The KEBA fan controller is an IP core for FPGAs, which monitors the health
and controls the speed of a fan. The fan is typically used to cool the CPU
and the whole device. E.g., the CP500 FPGA includes this IP core to monitor
and control the fan of PLCs and the corresponding cp500 driver creates an
auxiliary device for the kfan driver.
This driver provides information about the fan health to user space.
The user space shall be informed if the fan is removed or blocked.
Additionally, the speed in RPM is reported for fans with tacho signal.
For fan control PWM is supported. For PWM 255 equals 100%. None-regulable
fans can be turned on with PWM 255 and turned off with PWM 0.
====================== ==== ===================================================
Attribute R/W Contents
====================== ==== ===================================================
fan1_fault R Fan fault
fan1_input R Fan tachometer input (in RPM)
pwm1 RW Fan target duty cycle (0..255)
====================== ==== ===================================================
@@ -0,0 +1,40 @@
.. SPDX-License-Identifier: GPL-2.0
Kernel driver lan966x-hwmon
===========================
Supported chips:
* Microchip LAN9668 (sensor in SoC)
Prefix: 'lan9668-hwmon'
Datasheet: https://microchip-ung.github.io/lan9668_reginfo
Authors:
Michael Walle <michael@walle.cc>
Description
-----------
This driver implements support for the Microchip LAN9668 on-chip
temperature sensor as well as its fan controller. It provides one
temperature sensor and one fan controller. The temperature range
of the sensor is specified from -40 to +125 degrees Celsius and
its accuracy is +/- 5 degrees Celsius. The fan controller has a
tacho input and a PWM output with a customizable PWM output
frequency ranging from ~20Hz to ~650kHz.
No alarms are supported by the SoC.
The driver exports temperature values, fan tacho input and PWM
settings via the following sysfs files:
**temp1_input**
**fan1_input**
**pwm1**
**pwm1_freq**
@@ -0,0 +1,61 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver lattepanda-sigma-ec
=================================
Supported systems:
* LattePanda Sigma (Intel 13th Gen i5-1340P)
DMI vendor: LattePanda
DMI product: LattePanda Sigma
BIOS version: 5.27 (verified)
Datasheet: Not available (EC registers discovered empirically)
Author: Mariano Abad <weimaraner@gmail.com>
Description
-----------
This driver provides hardware monitoring for the LattePanda Sigma
single-board computer made by DFRobot. The board uses an ITE IT8613E
Embedded Controller to manage a CPU cooling fan and thermal sensors.
The BIOS declares the ACPI Embedded Controller (``PNP0C09``) with
``_STA`` returning 0, preventing the kernel's ACPI EC subsystem from
initializing. This driver reads the EC directly via the standard ACPI
EC I/O ports (``0x62`` data, ``0x66`` command/status).
Sysfs attributes
----------------
======================= ===============================================
``fan1_input`` Fan speed in RPM (EC registers 0x2E:0x2F,
16-bit big-endian)
``fan1_label`` "CPU Fan"
``temp1_input`` Board/ambient temperature in millidegrees
Celsius (EC register 0x60, unsigned)
``temp1_label`` "Board Temp"
``temp2_input`` CPU proximity temperature in millidegrees
Celsius (EC register 0x70, unsigned)
``temp2_label`` "CPU Temp"
======================= ===============================================
Module parameters
-----------------
``force`` (bool, default false)
Force loading on BIOS versions other than 5.27. The driver still
requires DMI vendor and product name matching.
Known limitations
-----------------
* Fan speed control is not supported. The fan is always under EC
automatic control.
* The EC register map was verified only on BIOS version 5.27.
Other versions may use different register offsets; use the ``force``
parameter at your own risk.

Some files were not shown because too many files have changed in this diff Show More