Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dff6d1c5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging: (23 commits)
  hwmon: Remove the deprecated adt7473 driver
  hwmon: Fix off-by-one kind values
  hwmon: (tmp421) Fix temperature conversions
  hwmon: (tmp421) Restore missing inputs
  hwmon: Driver for Andigilog aSC7621 family monitoring chips
  hwmon: (adt7411) Improve locking
  hwmon: Add driver for ADT7411 voltage and temperature sensor
  hwmon: (w83793) Add watchdog functionality
  hwmon: (g760a) Make rpm_from_cnt static
  hwmon: (it87) Validate auto pwm settings
  hwmon: (it87) Add support for old automatic fan speed control
  hwmon: (it87) Drop dead web links in documentation
  hwmon: (it87) Add an entry in MAINTAINERS
  hwmon: (it87) Use strict_strtol instead of simple_strtol
  hwmon: (it87) Fix many checkpatch errors and warnings
  hwmon: (it87) Add support for beep on alarm
  hwmon: (it87) Create vid attributes by group
  hwmon: (it87) Refactor attributes creation and removal
  hwmon: (it87) Expose the PWM/temperature mappings
  hwmon: (it87) Display fan outputs in automatic mode as such
  ...
parents 66ce3cf8 a0a5e348
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -449,12 +449,6 @@ Who: Alok N Kataria <akataria@vmware.com>

----------------------------

What:	adt7473 hardware monitoring driver
When:	February 2010
Why:	Obsoleted by the adt7475 driver.
Who:	Jean Delvare <khali@linux-fr.org>

---------------------------
What:	Support for lcd_switch and display_get in asus-laptop driver
When:	March 2010
Why:	These two features use non-standard interfaces. There are the
+42 −0
Original line number Diff line number Diff line
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
in[1-8]_input	- analog 1-8 input
temp1_input	- temperature input

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, external temperature sensor and limit registers are not supported yet.

Documentation/hwmon/adt7473

deleted100644 → 0
+0 −74
Original line number Diff line number Diff line
Kernel driver adt7473
======================

Supported chips:
  * Analog Devices ADT7473
    Prefix: 'adt7473'
    Addresses scanned: I2C 0x2C, 0x2D, 0x2E
    Datasheet: Publicly available at the Analog Devices website

Author: Darrick J. Wong

This driver is depreacted, please use the adt7475 driver instead.

Description
-----------

This driver implements support for the Analog Devices ADT7473 chip family.

The ADT7473 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) 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
ADT7473 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 ADT7473 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 ADT7473 will signal an ALARM if
any measured value exceeds either limit.

The ADT7473 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 ADT7473 have a 10-bit ADC and can therefore measure temperatures
with 0.25 degC resolution. Temperature readings can be configured either
for twos complement format or "Offset 64" format, wherein 63 is subtracted
from the raw value to get the temperature value.

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 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 ADT7473 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.

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.
+296 −0
Original line number Diff line number Diff line
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)
+38 −15
Original line number Diff line number Diff line
@@ -5,31 +5,23 @@ Supported chips:
  * IT8705F
    Prefix: 'it87'
    Addresses scanned: from Super I/O config space (8 I/O ports)
    Datasheet: Publicly available at the ITE website
               http://www.ite.com.tw/product_info/file/pc/IT8705F_V.0.4.1.pdf
    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: Publicly available at the ITE website
               http://www.ite.com.tw/product_info/file/pc/IT8712F_V0.9.1.pdf
               http://www.ite.com.tw/product_info/file/pc/Errata%20V0.1%20for%20IT8712F%20V0.9.1.pdf
               http://www.ite.com.tw/product_info/file/pc/IT8712F_V0.9.3.pdf
    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: Publicly available at the ITE website
               http://www.ite.com.tw/product_info/file/pc/IT8716F_V0.3.ZIP
               http://www.ite.com.tw/product_info/file/pc/IT8726F_V0.3.pdf
    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: Publicly available at the ITE website
               http://www.ite.com.tw/product_info/file/pc/IT8718F_V0.2.zip
               http://www.ite.com.tw/product_info/file/pc/IT8718F_V0%203_(for%20C%20version).zip
    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 yet publicly available.
    Datasheet: Not publicly available
  * SiS950   [clone of IT8705F]
    Prefix: 'it87'
    Addresses scanned: from Super I/O config space (8 I/O ports)
@@ -136,6 +128,10 @@ 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.

@@ -150,11 +146,38 @@ Fan speed control
-----------------

The fan speed control features are limited to manual PWM mode. Automatic
"Smart Guardian" mode control handling is not implemented. However
if you want to go for "manual mode" just write 1 to pwmN_enable.
"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.
Loading