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

Commit 150cd843 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: (68 commits)
  hwmon: (it87) Add support for the IT8721F/IT8758E
  hwmon: (it87) Move conversion functions
  hwmon: Remove many EXPERIMENTAL flags
  hwmon: (lm85) Add support for ADT7468 high-frequency PWM mode
  hwmon: (lm85) Document the ADT7468 as supported
  hwmon: (lm85) Fix ADT7468 frequency table
  hwmon: I2C addresses are constant
  Move ams driver to macintosh
  hwmon: (pcf8591) Don't attempt to detect devices
  hwmon: (pcf8591) Register as a hwmon device
  hwmon: (w83795) Use standard attributes for chassis intrusion
  hwmon: (w83795) Exclude fan control feature by default
  hwmon: (w83795) Add myself as co-author and maintainer
  hwmon: (w83795) More style cleanups
  hwmon: (w83795) Fix LSB reading of voltage limits
  hwmon: (w83795) Use dev_get_drvdata() where possible
  hwmon: (w83795) Delay reading pwm config registers
  hwmon: (w83795) Delay reading limit registers
  hwmon: (w83795) Move register reads to dedicated functions
  hwmon: (w83795) Pack similar register reads
  ...
parents f063a0c0 44c1bcd4
Loading
Loading
Loading
Loading
+19 −9
Original line number Original line Diff line number Diff line
@@ -22,6 +22,10 @@ Supported chips:
    Prefix: 'it8720'
    Prefix: 'it8720'
    Addresses scanned: from Super I/O config space (8 I/O ports)
    Addresses scanned: from Super I/O config space (8 I/O ports)
    Datasheet: Not publicly available
    Datasheet: Not publicly available
  * IT8721F/IT8758E
    Prefix: 'it8721'
    Addresses scanned: from Super I/O config space (8 I/O ports)
    Datasheet: Not publicly available
  * SiS950   [clone of IT8705F]
  * SiS950   [clone of IT8705F]
    Prefix: 'it87'
    Prefix: 'it87'
    Addresses scanned: from Super I/O config space (8 I/O ports)
    Addresses scanned: from Super I/O config space (8 I/O ports)
@@ -67,7 +71,7 @@ Description
-----------
-----------


This driver implements support for the IT8705F, IT8712F, IT8716F,
This driver implements support for the IT8705F, IT8712F, IT8716F,
IT8718F, IT8720F, IT8726F and SiS950 chips.
IT8718F, IT8720F, IT8721F, IT8726F, IT8758E and SiS950 chips.


These chips are 'Super I/O chips', supporting floppy disks, infrared ports,
These chips are 'Super I/O chips', supporting floppy disks, infrared ports,
joysticks and other miscellaneous stuff. For hardware monitoring, they
joysticks and other miscellaneous stuff. For hardware monitoring, they
@@ -86,14 +90,15 @@ 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
upper VID bits share their pins with voltage inputs (in5 and in6) so you
can't have both on a given board.
can't have both on a given board.


The IT8716F, IT8718F, IT8720F and later IT8712F revisions have support for
The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E and later IT8712F revisions
2 additional fans. The additional fans are supported by the driver.
have support for 2 additional fans. The additional fans are supported by the
driver.


The IT8716F, IT8718F and IT8720F, and late IT8712F and IT8705F also have
The IT8716F, IT8718F, IT8720F and IT8721F/IT8758E, and late IT8712F and
optional 16-bit tachometer counters for fans 1 to 3. This is better (no more
IT8705F also have optional 16-bit tachometer counters for fans 1 to 3. This
fan clock divider mess) but not compatible with the older chips and
is better (no more fan clock divider mess) but not compatible with the older
revisions. The 16-bit tachometer mode is enabled by the driver when one
chips and revisions. The 16-bit tachometer mode is enabled by the driver when
of the above chips is detected.
one of the above chips is detected.


The IT8726F is just bit enhanced IT8716F with additional hardware
The IT8726F is just bit enhanced IT8716F with additional hardware
for AMD power sequencing. Therefore the chip will appear as IT8716F
for AMD power sequencing. Therefore the chip will appear as IT8716F
@@ -115,7 +120,12 @@ alarm is triggered if the voltage has crossed a programmable minimum or
maximum limit. Note that minimum in this case always means 'closest to
maximum limit. Note that minimum in this case always means 'closest to
zero'; this is important for negative voltage measurements. All voltage
zero'; this is important for negative voltage measurements. All voltage
inputs can measure voltages between 0 and 4.08 volts, with a resolution of
inputs can measure voltages between 0 and 4.08 volts, with a resolution of
0.016 volt. The battery voltage in8 does not have limit registers.
0.016 volt (except IT8721F/IT8758E: 0.012 volt.) The battery voltage in8 does
not have limit registers.

On the IT8721F/IT8758E, some voltage inputs are internal and scaled inside
the chip (in7, in8 and optionally in3). 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 VID lines (IT8712F/IT8716F/IT8718F/IT8720F) encode the core voltage value:
the voltage level your processor should work with. This is hardcoded by
the voltage level your processor should work with. This is hardcoded by
+36 −24
Original line number Original line Diff line number Diff line
@@ -14,6 +14,10 @@ Supported chips:
    Prefix: 'adt7463'
    Prefix: 'adt7463'
    Addresses scanned: I2C 0x2c, 0x2d, 0x2e
    Addresses scanned: I2C 0x2c, 0x2d, 0x2e
    Datasheet: http://www.onsemi.com/PowerSolutions/product.do?id=ADT7463
    Datasheet: http://www.onsemi.com/PowerSolutions/product.do?id=ADT7463
  * Analog Devices ADT7468
    Prefix: 'adt7468'
    Addresses scanned: I2C 0x2c, 0x2d, 0x2e
    Datasheet: http://www.onsemi.com/PowerSolutions/product.do?id=ADT7468
  * SMSC EMC6D100, SMSC EMC6D101
  * SMSC EMC6D100, SMSC EMC6D101
    Prefix: 'emc6d100'
    Prefix: 'emc6d100'
    Addresses scanned: I2C 0x2c, 0x2d, 0x2e
    Addresses scanned: I2C 0x2c, 0x2d, 0x2e
@@ -34,7 +38,7 @@ Description
-----------
-----------


This driver implements support for the National Semiconductor LM85 and
This driver implements support for the National Semiconductor LM85 and
compatible chips including the Analog Devices ADM1027, ADT7463 and
compatible chips including the Analog Devices ADM1027, ADT7463, ADT7468 and
SMSC EMC6D10x chips family.
SMSC EMC6D10x chips family.


The LM85 uses the 2-wire interface compatible with the SMBUS 2.0
The LM85 uses the 2-wire interface compatible with the SMBUS 2.0
@@ -87,14 +91,22 @@ To smooth the response of fans to changes in temperature, the LM85 has an
optional filter for smoothing temperatures. The ADM1027 has the same
optional filter for smoothing temperatures. The ADM1027 has the same
config option but uses it to rate limit the changes to fan speed instead.
config option but uses it to rate limit the changes to fan speed instead.


The ADM1027 and ADT7463 have a 10-bit ADC and can therefore measure
The ADM1027, ADT7463 and ADT7468 have a 10-bit ADC and can therefore
temperatures with 0.25 degC resolution. They also provide an offset to the
measure temperatures with 0.25 degC resolution. They also provide an offset
temperature readings that is automatically applied during measurement.
to the temperature readings that is automatically applied during
This offset can be used to zero out any errors due to traces and placement.
measurement. This offset can be used to zero out any errors due to traces
The documentation says that the offset is in 0.25 degC steps, but in
and placement. The documentation says that the offset is in 0.25 degC
initial testing of the ADM1027 it was 1.00 degC steps. Analog Devices has
steps, but in initial testing of the ADM1027 it was 1.00 degC steps. Analog
confirmed this "bug". The ADT7463 is reported to work as described in the
Devices has confirmed this "bug". The ADT7463 is reported to work as
documentation. The current lm85 driver does not show the offset register.
described in the documentation. The current lm85 driver does not show the
offset register.

The ADT7468 has a high-frequency PWM mode, where all PWM outputs are
driven by a 22.5 kHz clock. This is a global mode, not per-PWM output,
which means that setting any PWM frequency above 11.3 kHz will switch
all 3 PWM outputs to a 22.5 kHz frequency. Conversely, setting any PWM
frequency below 11.3 kHz will switch all 3 PWM outputs to a frequency
between 10 and 100 Hz, which can then be tuned separately.


See the vendor datasheets for more information. There is application note
See the vendor datasheets for more information. There is application note
from National (AN-1260) with some additional information about the LM85.
from National (AN-1260) with some additional information about the LM85.
@@ -125,17 +137,17 @@ datasheet for a complete description of the differences. Other than
identifying the chip, the driver behaves no differently with regard to
identifying the chip, the driver behaves no differently with regard to
these two chips. The LM85B is recommended for new designs.
these two chips. The LM85B is recommended for new designs.


The ADM1027 and ADT7463 chips have an optional SMBALERT output that can be
The ADM1027, ADT7463 and ADT7468 chips have an optional SMBALERT output
used to signal the chipset in case a limit is exceeded or the temperature
that can be used to signal the chipset in case a limit is exceeded or the
sensors fail. Individual sensor interrupts can be masked so they won't
temperature sensors fail. Individual sensor interrupts can be masked so
trigger SMBALERT. The SMBALERT output if configured replaces one of the other
they won't trigger SMBALERT. The SMBALERT output if configured replaces one
functions (PWM2 or IN0). This functionality is not implemented in current
of the other functions (PWM2 or IN0). This functionality is not implemented
driver.
in current driver.


The ADT7463 also has an optional THERM output/input which can be connected
The ADT7463 and ADT7468 also have an optional THERM output/input which can
to the processor PROC_HOT output. If available, the autofan control
be connected to the processor PROC_HOT output. If available, the autofan
dynamic Tmin feature can be enabled to keep the system temperature within
control dynamic Tmin feature can be enabled to keep the system temperature
spec (just?!) with the least possible fan noise.
within spec (just?!) with the least possible fan noise.


Configuration Notes
Configuration Notes
-------------------
-------------------
@@ -201,8 +213,8 @@ the temperatures to compensate for systemic errors in the
measurements. These features are not currently supported by the lm85
measurements. These features are not currently supported by the lm85
driver.
driver.


In addition to the ADM1027 features, the ADT7463 also has Tmin control
In addition to the ADM1027 features, the ADT7463 and ADT7468 also have
and THERM asserted counts. Automatic Tmin control acts to adjust the
Tmin control and THERM asserted counts. Automatic Tmin control acts to
Tmin value to maintain the measured temperature sensor at a specified
adjust the Tmin value to maintain the measured temperature sensor at a
temperature. There isn't much documentation on this feature in the
specified temperature. There isn't much documentation on this feature in
ADT7463 data sheet. This is not supported by current driver.
the ADT7463 data sheet. This is not supported by current driver.
+34 −8
Original line number Original line Diff line number Diff line
@@ -63,8 +63,8 @@ Supported chips:
    Datasheet: Publicly available at the Maxim website
    Datasheet: Publicly available at the Maxim website
               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578
               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578
  * Maxim MAX6659
  * Maxim MAX6659
    Prefix: 'max6657'
    Prefix: 'max6659'
    Addresses scanned: I2C 0x4c, 0x4d (unsupported 0x4e)
    Addresses scanned: I2C 0x4c, 0x4d, 0x4e
    Datasheet: Publicly available at the Maxim website
    Datasheet: Publicly available at the Maxim website
               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578
               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578
  * Maxim MAX6680
  * Maxim MAX6680
@@ -84,6 +84,21 @@ Supported chips:
    Addresses scanned: I2C 0x4c
    Addresses scanned: I2C 0x4c
    Datasheet: Publicly available at the Maxim website
    Datasheet: Publicly available at the Maxim website
               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500
               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500
  * Maxim MAX6695
    Prefix: 'max6695'
    Addresses scanned: I2C 0x18
    Datasheet: Publicly available at the Maxim website
               http://www.maxim-ic.com/datasheet/index.mvp/id/4199
  * Maxim MAX6696
    Prefix: 'max6695'
    Addresses scanned: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,
                           0x4c, 0x4d and 0x4e
    Datasheet: Publicly available at the Maxim website
               http://www.maxim-ic.com/datasheet/index.mvp/id/4199
  * Winbond/Nuvoton W83L771W/G
    Prefix: 'w83l771'
    Addresses scanned: I2C 0x4c
    Datasheet: No longer available
  * Winbond/Nuvoton W83L771AWG/ASG
  * Winbond/Nuvoton W83L771AWG/ASG
    Prefix: 'w83l771'
    Prefix: 'w83l771'
    Addresses scanned: I2C 0x4c
    Addresses scanned: I2C 0x4c
@@ -101,10 +116,11 @@ well as the temperature of up to one external diode. It is compatible
with many other devices, many of which are supported by this driver.
with many other devices, many of which are supported by this driver.


Note that there is no easy way to differentiate between the MAX6657,
Note that there is no easy way to differentiate between the MAX6657,
MAX6658 and MAX6659 variants. The extra address and features of the
MAX6658 and MAX6659 variants. The extra features of the MAX6659 are only
MAX6659 are not supported by this driver. The MAX6680 and MAX6681 only
supported by this driver if the chip is located at address 0x4d or 0x4e,
differ in their pinout, therefore they obviously can't (and don't need to)
or if the chip type is explicitly selected as max6659.
be distinguished.
The MAX6680 and MAX6681 only differ in their pinout, therefore they obviously
can't (and don't need to) be distinguished.


The specificity of this family of chipsets over the ADM1021/LM84
The specificity of this family of chipsets over the ADM1021/LM84
family is that it features critical limits with hysteresis, and an
family is that it features critical limits with hysteresis, and an
@@ -151,11 +167,21 @@ MAX6680 and MAX6681:
  * Selectable address
  * Selectable address
  * Remote sensor type selection
  * Remote sensor type selection


MAX6695 and MAX6696:
  * Better local resolution
  * Selectable address (max6696)
  * Second critical temperature limit
  * Two remote sensors

W83L771W/G
  * The G variant is lead-free, otherwise similar to the W.
  * Filter and alert configuration register at 0xBF
  * Moving average (depending on conversion rate)

W83L771AWG/ASG
W83L771AWG/ASG
  * Successor of the W83L771W/G, same features.
  * The AWG and ASG variants only differ in package format.
  * The AWG and ASG variants only differ in package format.
  * Filter and alert configuration register at 0xBF
  * Diode ideality factor configuration (remote sensor) at 0xE3
  * Diode ideality factor configuration (remote sensor) at 0xE3
  * Moving average (depending on conversion rate)


All temperature values are given in degrees Celsius. Resolution
All temperature values are given in degrees Celsius. Resolution
is 1.0 degree for the local temperature, 0.125 degree for the remote
is 1.0 degree for the local temperature, 0.125 degree for the remote
+8 −10
Original line number Original line Diff line number Diff line
@@ -4,7 +4,7 @@ Kernel driver pcf8591
Supported chips:
Supported chips:
  * Philips/NXP PCF8591
  * Philips/NXP PCF8591
    Prefix: 'pcf8591'
    Prefix: 'pcf8591'
    Addresses scanned: I2C 0x48 - 0x4f
    Addresses scanned: none
    Datasheet: Publicly available at the NXP website
    Datasheet: Publicly available at the NXP website
               http://www.nxp.com/pip/PCF8591_6.html
               http://www.nxp.com/pip/PCF8591_6.html


@@ -58,18 +58,16 @@ Module parameters
Accessing PCF8591 via /sys interface
Accessing PCF8591 via /sys interface
-------------------------------------
-------------------------------------


! Be careful !
The PCF8591 is plainly impossible to detect! Thus the driver won't even
The PCF8591 is plainly impossible to detect! Stupid chip.
try. You have to explicitly instantiate the device at the relevant
So every chip with address in the interval [0x48..0x4f] is
address (in the interval [0x48..0x4f]) either through platform data, or
detected as PCF8591. If you have other chips in this address
using the sysfs interface. See Documentation/i2c/instantiating-devices
range, the workaround is to load this module after the one
for details.
for your others chips.


On detection (i.e. insmod, modprobe et al.), directories are being
Directories are being created for each instantiated PCF8591:
created for each detected PCF8591:


/sys/bus/i2c/devices/<0>-<1>/
/sys/bus/i2c/devices/<0>-<1>/
where <0> is the bus the chip was detected on (e. g. i2c-0)
where <0> is the bus the chip is connected to (e. g. i2c-0)
and <1> the chip address ([48..4f])
and <1> the chip address ([48..4f])


Inside these directories, there are such files:
Inside these directories, there are such files:
+15 −0
Original line number Original line Diff line number Diff line
@@ -309,6 +309,20 @@ temp[1-*]_crit_hyst
		from the critical value.
		from the critical value.
		RW
		RW


temp[1-*]_emergency
		Temperature emergency max value, for chips supporting more than
		two upper temperature limits. Must be equal or greater than
		corresponding temp_crit values.
		Unit: millidegree Celsius
		RW

temp[1-*]_emergency_hyst
		Temperature hysteresis value for emergency limit.
		Unit: millidegree Celsius
		Must be reported as an absolute temperature, NOT a delta
		from the emergency value.
		RW

temp[1-*]_lcrit	Temperature critical min value, typically lower than
temp[1-*]_lcrit	Temperature critical min value, typically lower than
		corresponding temp_min values.
		corresponding temp_min values.
		Unit: millidegree Celsius
		Unit: millidegree Celsius
@@ -505,6 +519,7 @@ fan[1-*]_max_alarm
temp[1-*]_min_alarm
temp[1-*]_min_alarm
temp[1-*]_max_alarm
temp[1-*]_max_alarm
temp[1-*]_crit_alarm
temp[1-*]_crit_alarm
temp[1-*]_emergency_alarm
		Limit alarm
		Limit alarm
		0: no alarm
		0: no alarm
		1: alarm
		1: alarm
Loading