Kernel driver lm90
==================

Supported chips:

  * National Semiconductor LM84

    Prefix: 'lm84'

    Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e

    Datasheet: Publicly available at the TI website

	       https://www.ti.com/lit/ds/symlink/lm84.pdf

  * National Semiconductor LM90

    Prefix: 'lm90'

    Addresses scanned: I2C 0x4c

    Datasheet: Publicly available at the TI website

	       https://www.ti.com/lit/ds/symlink/lm90.pdf

  * National Semiconductor LM89

    Prefix: 'lm89' (no auto-detection)

    Addresses scanned: I2C 0x4c and 0x4d

    Datasheet: Publicly available at the TI website

	       https://www.ti.com/lit/ds/symlink/lm89.pdf

  * National Semiconductor LM99

    Prefix: 'lm99'

    Addresses scanned: I2C 0x4c and 0x4d

    Datasheet: Publicly available at the TI website

	       https://www.ti.com/lit/ds/symlink/lm99.pdf

  * National Semiconductor LM86

    Prefix: 'lm86'

    Addresses scanned: I2C 0x4c

    Datasheet: Publicly available at the TI website

	       https://www.ti.com/lit/ds/symlink/lm86.pdf

  * Analog Devices ADM1020

    Prefix: 'adm1020'

    Addresses scanned: I2C 0x4c - 0x4e

    Datasheet: Publicly available at the DigiKey website

	       https://media.digikey.com/pdf/Data%20Sheets/Analog%20Devices%20PDFs/ADM1020.pdf

  * Analog Devices ADM1021

    Prefix: 'adm1021'

    Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e

    Datasheet: Publicly available at the DigiKey website

	       https://media.digikey.com/pdf/Data%20Sheets/Analog%20Devices%20PDFs/ADM1021.pdf

  * Analog Devices ADM1021A/ADM1023

    Prefix: 'adm1023'

    Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e

    Datasheet: Publicly available at the Analog Devices website

	       https://media.digikey.com/pdf/Data%20Sheets/Analog%20Devices%20PDFs/ADM1021A.pdf
	       https://media.digikey.com/pdf/Data%20Sheets/Analog%20Devices%20PDFs/ADM1023.pdf

  * Analog Devices ADM1032

    Prefix: 'adm1032'

    Addresses scanned: I2C 0x4c and 0x4d

    Datasheet: Publicly available at the DigiKey website

	       https://www.digikey.com/htmldatasheets/production/53140/0/0/1/ADM1032.pdf

  * Analog Devices ADT7461

    Prefix: 'adt7461'

    Addresses scanned: I2C 0x4c and 0x4d

    Datasheet: Publicly available at the ON Semiconductor website

	       https://www.onsemi.com/PowerSolutions/product.do?id=ADT7461

  * Analog Devices ADT7461A

    Prefix: 'adt7461a'

    Addresses scanned: I2C 0x4c and 0x4d

    Datasheet: Publicly available at the ON Semiconductor website

	       https://www.onsemi.com/PowerSolutions/product.do?id=ADT7461A

  * Analog Devices ADT7481

    Prefix: 'adt7481'

    Addresses scanned: I2C 0x4b and 0x4c

    Datasheet: Publicly available at the DigiKey website

	       https://www.digikey.com/htmldatasheets/production/234607/0/0/1/ADT7481.pdf

  * Analog Devices ADT7482

    Prefix: 'adt7482'

    Addresses scanned: I2C 0x4c

    Datasheet: Publicly available at the ON Semiconductor website

	       https://www.onsemi.com/PowerSolutions/product.do?id=ADT7482

  * Analog Devices ADT7483A

    Prefix: 'adt7483a'

    Addresses scanned: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e

    Datasheet: Publicly available at the ON Semiconductor website

	       https://www.onsemi.com/PowerSolutions/product.do?id=ADT7483A

  * ON Semiconductor NCT1008

    Prefix: 'nct1008'

    Addresses scanned: I2C 0x4c and 0x4d

    Datasheet: Publicly available at the ON Semiconductor website

	       https://www.onsemi.com/PowerSolutions/product.do?id=NCT1008

  * ON Semiconductor NCT210

    Prefix: 'adm1021'

    Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e

    Datasheet: Publicly available at the ON Semiconductor website

	       https://www.onsemi.com/PowerSolutions/product.do?id=NCT210

  * ON Semiconductor NCT214

    Prefix: 'nct214'

    Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e

    Datasheet: Publicly available at the ON Semiconductor website

	       https://www.onsemi.com/PowerSolutions/product.do?id=NCT214

  * ON Semiconductor NCT218

    Prefix: 'nct218'

    Addresses scanned: I2C 0x4c - 0x4d

    Datasheet: Publicly available at the ON Semiconductor website

	       https://www.onsemi.com/PowerSolutions/product.do?id=NCT218

  * ON Semiconductor NCT72

    Prefix: 'nct72'

    Addresses scanned: I2C 0x4c - 0x4d

    Datasheet: Publicly available at the ON Semiconductor website

	       https://www.onsemi.com/PowerSolutions/product.do?id=NCT72

  * Maxim MAX1617

    Prefix: 'max1617'

    Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX1617.pdf

  * Maxim MAX1617A

    Prefix: 'max1617a'

    Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX1617A.pdf

  * Maxim MAX6642

    Prefix: 'max6642'

    Addresses scanned: I2C 0x48-0x4f

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6642.pdf

  * Maxim MAX6646

    Prefix: 'max6646'

    Addresses scanned: I2C 0x4d

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6646-MAX6649.pdf

  * Maxim MAX6647

    Prefix: 'max6646'

    Addresses scanned: I2C 0x4e

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6646-MAX6649.pdf

  * Maxim MAX6648

    Prefix: 'max6648'

    Addresses scanned: I2C 0x4c

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6648-MAX6692.pdf

  * Maxim MAX6649

    Prefix: 'max6646'

    Addresses scanned: I2C 0x4c

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX1617.pdf

  * Maxim MAX6654

    Prefix: 'max6654'

    Addresses scanned: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,

			   0x4c, 0x4d and 0x4e

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6654.pdf

  * Maxim MAX6657

    Prefix: 'max6657'

    Addresses scanned: I2C 0x4c

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6657-MAX6659.pdf

  * Maxim MAX6658

    Prefix: 'max6657'

    Addresses scanned: I2C 0x4c

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6657-MAX6659.pdf

  * Maxim MAX6659

    Prefix: 'max6659'

    Addresses scanned: I2C 0x4c, 0x4d, 0x4e

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6657-MAX6659.pdf

  * Maxim MAX6680

    Prefix: 'max6680'

    Addresses scanned: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,

			   0x4c, 0x4d and 0x4e

    Datasheet: Publicly available at the Analog Devices website

	      https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6680-MAX6681.pdf

  * Maxim MAX6681

    Prefix: 'max6680'

    Addresses scanned: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,

			   0x4c, 0x4d and 0x4e

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6680-MAX6681.pdf

  * Maxim MAX6692

    Prefix: 'max6648'

    Addresses scanned: I2C 0x4c

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6648-MAX6692.pdf

  * Maxim MAX6695

    Prefix: 'max6695'

    Addresses scanned: I2C 0x18

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6695-MAX6696.pdf

  * Maxim MAX6696

    Prefix: 'max6695'

    Addresses scanned: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,

			   0x4c, 0x4d and 0x4e

    Datasheet: Publicly available at the Analog Devices website

	       https://www.analog.com/media/en/technical-documentation/data-sheets/MAX6695-MAX6696.pdf

  * Winbond/Nuvoton W83L771W/G

    Prefix: 'w83l771'

    Addresses scanned: I2C 0x4c

    Datasheet: Publicly available at the DigiKey website

	       https://mm.digikey.com/Volume0/opasdata/d220001/medias/docus/1128/W83L771W%2CW83L771G.pdf

  * Winbond/Nuvoton W83L771AWG/ASG

    Prefix: 'w83l771'

    Addresses scanned: I2C 0x4c

    Datasheet: Not publicly available, can be requested from Nuvoton

  * Nuvoton NCT7716

    Prefix: 'nct7716'

    Addresses scanned: I2C 0x48, 0x49

    Datasheet: Not publicly available, can be requested from Nuvoton

  * Nuvoton NCT7717

    Prefix: 'nct7717'

    Addresses scanned: I2C 0x48

    Datasheet: Publicly available at Nuvoton website

	       https://www.nuvoton.com/resource-files/Nuvoton_NCT7717U_Datasheet_V111.pdf

  * Nuvoton NCT7718

    Prefix: 'nct7718'

    Addresses scanned: I2C 0x4c

    Datasheet: Publicly available at Nuvoton website

	       https://www.nuvoton.com/resource-files/Nuvoton_NCT7718W_Datasheet_V11.pdf

  * Philips/NXP SA56004X

    Prefix: 'sa56004'

    Addresses scanned: I2C 0x48 through 0x4F

    Datasheet: Publicly available at NXP website

	       https://www.nxp.com/docs/en/data-sheet/SA56004X.pdf

  * GMT G781

    Prefix: 'g781'

    Addresses scanned: I2C 0x4c, 0x4d

    Datasheet: Not publicly available from GMT

  * Texas Instruments TMP451

    Prefix: 'tmp451'

    Addresses scanned: I2C 0x4c

    Datasheet: Publicly available at TI website

	       https://www.ti.com/litv/pdf/sbos686

  * Texas Instruments TMP461

    Prefix: 'tmp461'

    Addresses scanned: I2C 0x48 through 0x4F

    Datasheet: Publicly available at TI website

	       https://www.ti.com/lit/gpn/tmp461

  * Philips NE1617, NE1617A

    Prefix: 'max1617' (probably detected as a max1617)

    Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e

    Datasheets: Publicly available at the DigiKey website

	       https://www.digikey.com/htmldatasheets/production/97606/0/0/1/ne1617.pdf

  * Philips NE1618

    Prefix: 'ne1618'

    Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e

    Datasheets: Publicly available at the DigiKey website

	       https://media.digikey.com/pdf/Data%20Sheets/NXP%20PDFs/NE1618.pdf

  * Genesys Logic GL523SM

    Prefix: 'gl523sm'

    Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e

    Datasheet: No longer available at Genesys Logic website

  * TI THMC10

    Prefix: 'thmc10'

    Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e

    Datasheet: No longer available at the TI website

  * Onsemi MC1066

    Prefix: 'mc1066'

    Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e

    Datasheet: No longer available at the Onsemi website

Author: Jean Delvare <jdelvare@suse.de>


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

The LM90 is a digital temperature sensor. It senses its own temperature as
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.

The family of chips supported by this driver is derived from MAX1617.
This chip as well as various compatible chips support a local and a remote
temperature sensor with 8 bit accuracy. Later chips provide improved accuracy
and other additional features such as hysteresis and temperature offset
registers.

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

The different chipsets of the family are not strictly identical, although
very similar. For reference, here comes a non-exhaustive list of specific
features:

LM84:
  * 8 bit sensor resolution

ADM1020, ADM1021, GL523SM, MAX1617, NE1617, NE1617A, THMC10:
  * 8 bit sensor resolution
  * Low temperature limits

NCT210, NE1618:
  * 11 bit sensor resolution for remote temperature sensor
  * Low temperature limits

ADM1021A, ADM1023:
  * Temperature offset register for remote temperature sensor
  * 11 bit resolution for remote temperature sensor
  * Low temperature limits

LM90:
  * 11 bit resolution for remote temperature sensor
  * Temperature offset register for remote temperature sensor
  * Low and critical temperature limits
  * Configurable conversion rate
  * Filter and alert configuration register at 0xBF.
  * ALERT is triggered by temperatures over critical limits.

LM86 and LM89:
  * Same as LM90
  * Better external channel accuracy

LM99:
  * Same as LM89
  * External temperature shifted by 16 degrees down

ADM1032:
  * Consecutive alert register at 0x22.
  * Conversion averaging.
  * Up to 64 conversions/s.
  * ALERT is triggered by open remote sensor.
  * SMBus PEC support for Write Byte and Receive Byte transactions.

ADT7461, ADT7461A, NCT1008:
  * Extended temperature range (breaks compatibility)
  * Lower resolution for remote temperature
  * SMBus PEC support for Write Byte and Receive Byte transactions.
  * 10 bit temperature resolution

ADT7481, ADT7482, ADT7483:
  * Temperature offset register
  * SMBus PEC support
  * 10 bit temperature resolution for external sensors
  * Two remote sensors
  * Selectable address (ADT7483)

MAX6642:
  * No critical limit register
  * Conversion rate not configurable
  * Better local resolution (10 bit)
  * 10 bit external sensor resolution

MAX6646, MAX6647, MAX6649:
  * Better local resolution
  * Extended range unsigned external temperature

MAX6648, MAX6692:
  * Better local resolution
  * Unsigned temperature

MAX6654, MAX6690:
  * Better local resolution
  * Selectable address
  * Remote sensor type selection
  * Extended temperature range
  * Extended resolution only available when conversion rate <= 1 Hz

MAX6657 and MAX6658:
  * Better local resolution
  * Remote sensor type selection

MAX6659:
  * Better local resolution
  * Selectable address
  * Second critical temperature limit
  * Remote sensor type selection

MAX6680 and MAX6681:
  * Selectable address
  * 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
  * Successor of the W83L771W/G, same features.
  * The AWG and ASG variants only differ in package format.
  * Diode ideality factor configuration (remote sensor) at 0xE3

NCT7716:
  * 8 bit sensor resolution
  * Selectable address
  * Configurable conversion rate

NCT7717:
  * 8 bit sensor resolution
  * Configurable conversion rate

NCT7718:
  * Temperature offset register for remote temperature sensor
  * 11 bit resolution for remote temperature sensor
  * Low temperature limits
  * Configurable conversion rate

SA56004X:
  * Better local resolution

All temperature values are given in degrees Celsius. Resolution
is 1.0 degree for the local temperature, 0.125 degree for the remote
temperature, except for the MAX6654, MAX6657, MAX6658 and MAX6659 which have
a resolution of 0.125 degree for both temperatures.

Each sensor has its own high and low limits, plus a critical limit.
Additionally, there is a relative hysteresis value common to both critical
values. To make life easier to user-space applications, two absolute values
are exported, one for each channel, but these values are of course linked.
Only the local hysteresis can be set from user-space, and the same delta
applies to the remote hysteresis.

The lm90 driver will not update its values more frequently than configured with
the update_interval attribute; reading them more often will do no harm, but will
return 'old' values.

SMBus Alert Support
-------------------

This driver has basic support for SMBus alert. When an alert is received,
the status register is read and the faulty temperature channel is logged.

The Analog Devices chips (ADM1032, ADT7461 and ADT7461A) and ON
Semiconductor chips (NCT1008) do not implement the SMBus alert protocol
properly so additional care is needed: the ALERT output is disabled when
an alert is received, and is re-enabled only when the alarm is gone.
Otherwise the chip would block alerts from other chips in the bus as long
as the alarm is active.

PEC Support
-----------

The ADM1032 is the only chip of the family which supports PEC. It does
not support PEC on all transactions though, so some care must be taken.

When reading a register value, the PEC byte is computed and sent by the
ADM1032 chip. However, in the case of a combined transaction (SMBus Read
Byte), the ADM1032 computes the CRC value over only the second half of
the message rather than its entirety, because it thinks the first half
of the message belongs to a different transaction. As a result, the CRC
value differs from what the SMBus master expects, and all reads fail.

For this reason, the lm90 driver will enable PEC for the ADM1032 only if
the bus supports the SMBus Send Byte and Receive Byte transaction types.
These transactions will be used to read register values, instead of
SMBus Read Byte, and PEC will work properly.

Additionally, the ADM1032 doesn't support SMBus Send Byte with PEC.
Instead, it will try to write the PEC value to the register (because the
SMBus Send Byte transaction with PEC is similar to a Write Byte transaction
without PEC), which is not what we want. Thus, PEC is explicitly disabled
on SMBus Send Byte transactions in the lm90 driver.

PEC on byte data transactions represents a significant increase in bandwidth
usage (+33% for writes, +25% for reads) in normal conditions. With the need
to use two SMBus transaction for reads, this overhead jumps to +50%. Worse,
two transactions will typically mean twice as much delay waiting for
transaction completion, effectively doubling the register cache refresh time.
I guess reliability comes at a price, but it's quite expensive this time.

So, as not everyone might enjoy the slowdown, PEC is disabled by default and
can be enabled through sysfs. Just write 1 to the "pec" file and PEC will be
enabled. Write 0 to that file to disable PEC again.
