linux/Documentation/hwmon/lm90.rst
<<
>>
Prefs
   1Kernel driver lm90
   2==================
   3
   4Supported chips:
   5
   6  * National Semiconductor LM90
   7
   8    Prefix: 'lm90'
   9
  10    Addresses scanned: I2C 0x4c
  11
  12    Datasheet: Publicly available at the National Semiconductor website
  13
  14               http://www.national.com/pf/LM/LM90.html
  15
  16  * National Semiconductor LM89
  17
  18    Prefix: 'lm89' (no auto-detection)
  19
  20    Addresses scanned: I2C 0x4c and 0x4d
  21
  22    Datasheet: Publicly available at the National Semiconductor website
  23
  24               http://www.national.com/mpf/LM/LM89.html
  25
  26  * National Semiconductor LM99
  27
  28    Prefix: 'lm99'
  29
  30    Addresses scanned: I2C 0x4c and 0x4d
  31
  32    Datasheet: Publicly available at the National Semiconductor website
  33
  34               http://www.national.com/pf/LM/LM99.html
  35
  36  * National Semiconductor LM86
  37
  38    Prefix: 'lm86'
  39
  40    Addresses scanned: I2C 0x4c
  41
  42    Datasheet: Publicly available at the National Semiconductor website
  43
  44               http://www.national.com/mpf/LM/LM86.html
  45
  46  * Analog Devices ADM1032
  47
  48    Prefix: 'adm1032'
  49
  50    Addresses scanned: I2C 0x4c and 0x4d
  51
  52    Datasheet: Publicly available at the ON Semiconductor website
  53
  54               https://www.onsemi.com/PowerSolutions/product.do?id=ADM1032
  55
  56  * Analog Devices ADT7461
  57
  58    Prefix: 'adt7461'
  59
  60    Addresses scanned: I2C 0x4c and 0x4d
  61
  62    Datasheet: Publicly available at the ON Semiconductor website
  63
  64               https://www.onsemi.com/PowerSolutions/product.do?id=ADT7461
  65
  66  * Analog Devices ADT7461A
  67
  68    Prefix: 'adt7461a'
  69
  70    Addresses scanned: I2C 0x4c and 0x4d
  71
  72    Datasheet: Publicly available at the ON Semiconductor website
  73
  74               https://www.onsemi.com/PowerSolutions/product.do?id=ADT7461A
  75
  76  * ON Semiconductor NCT1008
  77
  78    Prefix: 'nct1008'
  79
  80    Addresses scanned: I2C 0x4c and 0x4d
  81
  82    Datasheet: Publicly available at the ON Semiconductor website
  83
  84               https://www.onsemi.com/PowerSolutions/product.do?id=NCT1008
  85
  86  * Maxim MAX6646
  87
  88    Prefix: 'max6646'
  89
  90    Addresses scanned: I2C 0x4d
  91
  92    Datasheet: Publicly available at the Maxim website
  93
  94               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3497
  95
  96  * Maxim MAX6647
  97
  98    Prefix: 'max6646'
  99
 100    Addresses scanned: I2C 0x4e
 101
 102    Datasheet: Publicly available at the Maxim website
 103
 104               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3497
 105
 106  * Maxim MAX6648
 107
 108    Prefix: 'max6646'
 109
 110    Addresses scanned: I2C 0x4c
 111
 112    Datasheet: Publicly available at the Maxim website
 113
 114               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500
 115
 116  * Maxim MAX6649
 117
 118    Prefix: 'max6646'
 119
 120    Addresses scanned: I2C 0x4c
 121
 122    Datasheet: Publicly available at the Maxim website
 123
 124               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3497
 125
 126  * Maxim MAX6654
 127
 128    Prefix: 'max6654'
 129
 130    Addresses scanned: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,
 131
 132                           0x4c, 0x4d and 0x4e
 133
 134    Datasheet: Publicly available at the Maxim website
 135
 136               https://www.maximintegrated.com/en/products/sensors/MAX6654.html
 137
 138  * Maxim MAX6657
 139
 140    Prefix: 'max6657'
 141
 142    Addresses scanned: I2C 0x4c
 143
 144    Datasheet: Publicly available at the Maxim website
 145
 146               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578
 147
 148  * Maxim MAX6658
 149
 150    Prefix: 'max6657'
 151
 152    Addresses scanned: I2C 0x4c
 153
 154    Datasheet: Publicly available at the Maxim website
 155
 156               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578
 157
 158  * Maxim MAX6659
 159
 160    Prefix: 'max6659'
 161
 162    Addresses scanned: I2C 0x4c, 0x4d, 0x4e
 163
 164    Datasheet: Publicly available at the Maxim website
 165
 166               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2578
 167
 168  * Maxim MAX6680
 169
 170    Prefix: 'max6680'
 171
 172    Addresses scanned: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,
 173
 174                           0x4c, 0x4d and 0x4e
 175
 176    Datasheet: Publicly available at the Maxim website
 177
 178               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3370
 179
 180  * Maxim MAX6681
 181
 182    Prefix: 'max6680'
 183
 184    Addresses scanned: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,
 185
 186                           0x4c, 0x4d and 0x4e
 187
 188    Datasheet: Publicly available at the Maxim website
 189
 190               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3370
 191
 192  * Maxim MAX6692
 193
 194    Prefix: 'max6646'
 195
 196    Addresses scanned: I2C 0x4c
 197
 198    Datasheet: Publicly available at the Maxim website
 199
 200               http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500
 201
 202  * Maxim MAX6695
 203
 204    Prefix: 'max6695'
 205
 206    Addresses scanned: I2C 0x18
 207
 208    Datasheet: Publicly available at the Maxim website
 209
 210               http://www.maxim-ic.com/datasheet/index.mvp/id/4199
 211
 212  * Maxim MAX6696
 213
 214    Prefix: 'max6695'
 215
 216    Addresses scanned: I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,
 217
 218                           0x4c, 0x4d and 0x4e
 219
 220    Datasheet: Publicly available at the Maxim website
 221
 222               http://www.maxim-ic.com/datasheet/index.mvp/id/4199
 223
 224  * Winbond/Nuvoton W83L771W/G
 225
 226    Prefix: 'w83l771'
 227
 228    Addresses scanned: I2C 0x4c
 229
 230    Datasheet: No longer available
 231
 232  * Winbond/Nuvoton W83L771AWG/ASG
 233
 234    Prefix: 'w83l771'
 235
 236    Addresses scanned: I2C 0x4c
 237
 238    Datasheet: Not publicly available, can be requested from Nuvoton
 239
 240  * Philips/NXP SA56004X
 241
 242    Prefix: 'sa56004'
 243
 244    Addresses scanned: I2C 0x48 through 0x4F
 245
 246    Datasheet: Publicly available at NXP website
 247
 248               http://ics.nxp.com/products/interface/datasheet/sa56004x.pdf
 249
 250  * GMT G781
 251
 252    Prefix: 'g781'
 253
 254    Addresses scanned: I2C 0x4c, 0x4d
 255
 256    Datasheet: Not publicly available from GMT
 257
 258  * Texas Instruments TMP451
 259
 260    Prefix: 'tmp451'
 261
 262    Addresses scanned: I2C 0x4c
 263
 264    Datasheet: Publicly available at TI website
 265
 266               https://www.ti.com/litv/pdf/sbos686
 267
 268Author: Jean Delvare <jdelvare@suse.de>
 269
 270
 271Description
 272-----------
 273
 274The LM90 is a digital temperature sensor. It senses its own temperature as
 275well as the temperature of up to one external diode. It is compatible
 276with many other devices, many of which are supported by this driver.
 277
 278Note that there is no easy way to differentiate between the MAX6657,
 279MAX6658 and MAX6659 variants. The extra features of the MAX6659 are only
 280supported by this driver if the chip is located at address 0x4d or 0x4e,
 281or if the chip type is explicitly selected as max6659.
 282The MAX6680 and MAX6681 only differ in their pinout, therefore they obviously
 283can't (and don't need to) be distinguished.
 284
 285The specificity of this family of chipsets over the ADM1021/LM84
 286family is that it features critical limits with hysteresis, and an
 287increased resolution of the remote temperature measurement.
 288
 289The different chipsets of the family are not strictly identical, although
 290very similar. For reference, here comes a non-exhaustive list of specific
 291features:
 292
 293LM90:
 294  * Filter and alert configuration register at 0xBF.
 295  * ALERT is triggered by temperatures over critical limits.
 296
 297LM86 and LM89:
 298  * Same as LM90
 299  * Better external channel accuracy
 300
 301LM99:
 302  * Same as LM89
 303  * External temperature shifted by 16 degrees down
 304
 305ADM1032:
 306  * Consecutive alert register at 0x22.
 307  * Conversion averaging.
 308  * Up to 64 conversions/s.
 309  * ALERT is triggered by open remote sensor.
 310  * SMBus PEC support for Write Byte and Receive Byte transactions.
 311
 312ADT7461, ADT7461A, NCT1008:
 313  * Extended temperature range (breaks compatibility)
 314  * Lower resolution for remote temperature
 315
 316MAX6654:
 317  * Better local resolution
 318  * Selectable address
 319  * Remote sensor type selection
 320  * Extended temperature range
 321  * Extended resolution only available when conversion rate <= 1 Hz
 322
 323MAX6657 and MAX6658:
 324  * Better local resolution
 325  * Remote sensor type selection
 326
 327MAX6659:
 328  * Better local resolution
 329  * Selectable address
 330  * Second critical temperature limit
 331  * Remote sensor type selection
 332
 333MAX6680 and MAX6681:
 334  * Selectable address
 335  * Remote sensor type selection
 336
 337MAX6695 and MAX6696:
 338  * Better local resolution
 339  * Selectable address (max6696)
 340  * Second critical temperature limit
 341  * Two remote sensors
 342
 343W83L771W/G
 344  * The G variant is lead-free, otherwise similar to the W.
 345  * Filter and alert configuration register at 0xBF
 346  * Moving average (depending on conversion rate)
 347
 348W83L771AWG/ASG
 349  * Successor of the W83L771W/G, same features.
 350  * The AWG and ASG variants only differ in package format.
 351  * Diode ideality factor configuration (remote sensor) at 0xE3
 352
 353SA56004X:
 354  * Better local resolution
 355
 356All temperature values are given in degrees Celsius. Resolution
 357is 1.0 degree for the local temperature, 0.125 degree for the remote
 358temperature, except for the MAX6654, MAX6657, MAX6658 and MAX6659 which have
 359a resolution of 0.125 degree for both temperatures.
 360
 361Each sensor has its own high and low limits, plus a critical limit.
 362Additionally, there is a relative hysteresis value common to both critical
 363values. To make life easier to user-space applications, two absolute values
 364are exported, one for each channel, but these values are of course linked.
 365Only the local hysteresis can be set from user-space, and the same delta
 366applies to the remote hysteresis.
 367
 368The lm90 driver will not update its values more frequently than configured with
 369the update_interval attribute; reading them more often will do no harm, but will
 370return 'old' values.
 371
 372SMBus Alert Support
 373-------------------
 374
 375This driver has basic support for SMBus alert. When an alert is received,
 376the status register is read and the faulty temperature channel is logged.
 377
 378The Analog Devices chips (ADM1032, ADT7461 and ADT7461A) and ON
 379Semiconductor chips (NCT1008) do not implement the SMBus alert protocol
 380properly so additional care is needed: the ALERT output is disabled when
 381an alert is received, and is re-enabled only when the alarm is gone.
 382Otherwise the chip would block alerts from other chips in the bus as long
 383as the alarm is active.
 384
 385PEC Support
 386-----------
 387
 388The ADM1032 is the only chip of the family which supports PEC. It does
 389not support PEC on all transactions though, so some care must be taken.
 390
 391When reading a register value, the PEC byte is computed and sent by the
 392ADM1032 chip. However, in the case of a combined transaction (SMBus Read
 393Byte), the ADM1032 computes the CRC value over only the second half of
 394the message rather than its entirety, because it thinks the first half
 395of the message belongs to a different transaction. As a result, the CRC
 396value differs from what the SMBus master expects, and all reads fail.
 397
 398For this reason, the lm90 driver will enable PEC for the ADM1032 only if
 399the bus supports the SMBus Send Byte and Receive Byte transaction types.
 400These transactions will be used to read register values, instead of
 401SMBus Read Byte, and PEC will work properly.
 402
 403Additionally, the ADM1032 doesn't support SMBus Send Byte with PEC.
 404Instead, it will try to write the PEC value to the register (because the
 405SMBus Send Byte transaction with PEC is similar to a Write Byte transaction
 406without PEC), which is not what we want. Thus, PEC is explicitly disabled
 407on SMBus Send Byte transactions in the lm90 driver.
 408
 409PEC on byte data transactions represents a significant increase in bandwidth
 410usage (+33% for writes, +25% for reads) in normal conditions. With the need
 411to use two SMBus transaction for reads, this overhead jumps to +50%. Worse,
 412two transactions will typically mean twice as much delay waiting for
 413transaction completion, effectively doubling the register cache refresh time.
 414I guess reliability comes at a price, but it's quite expensive this time.
 415
 416So, as not everyone might enjoy the slowdown, PEC can be disabled through
 417sysfs. Just write 0 to the "pec" file and PEC will be disabled. Write 1
 418to that file to enable PEC again.
 419