内核驱动 lm90¶
支持的芯片
国家半导体 LM84
前缀:‘lm84’
扫描地址:I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册:可在国家半导体网站公开获取
国家半导体 LM90
前缀:‘lm90’
扫描地址:I2C 0x4c
数据手册:可在国家半导体网站公开获取
国家半导体 LM89
前缀:‘lm89’(无自动检测)
扫描地址:I2C 0x4c 和 0x4d
数据手册:可在国家半导体网站公开获取
国家半导体 LM99
前缀:‘lm99’
扫描地址:I2C 0x4c 和 0x4d
数据手册:可在国家半导体网站公开获取
国家半导体 LM86
前缀:‘lm86’
扫描地址:I2C 0x4c
数据手册:可在国家半导体网站公开获取
模拟器件 ADM1020
前缀:‘adm1020’
扫描地址:I2C 0x4c - 0x4e
数据手册:可在模拟器件网站公开获取
模拟器件 ADM1021
前缀:‘adm1021’
扫描地址:I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册:可在模拟器件网站公开获取
模拟器件 ADM1021A/ADM1023
前缀:‘adm1023’
扫描地址:I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册:可在模拟器件网站公开获取
模拟器件 ADM1032
前缀:‘adm1032’
扫描地址:I2C 0x4c 和 0x4d
数据手册:可在安森美半导体网站公开获取
模拟器件 ADT7461
前缀:‘adt7461’
扫描地址:I2C 0x4c 和 0x4d
数据手册:可在安森美半导体网站公开获取
模拟器件 ADT7461A
前缀:‘adt7461a’
扫描地址:I2C 0x4c 和 0x4d
数据手册:可在安森美半导体网站公开获取
模拟器件 ADT7481
前缀:‘adt7481’
扫描地址:I2C 0x4b 和 0x4c
数据手册:可在安森美半导体网站公开获取
模拟器件 ADT7482
前缀:‘adt7482’
扫描地址:I2C 0x4c
数据手册:可在安森美半导体网站公开获取
模拟器件 ADT7483A
前缀:‘adt7483a’
扫描地址:I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e
数据手册:可在安森美半导体网站公开获取
安森美半导体 NCT1008
前缀:‘nct1008’
扫描地址:I2C 0x4c 和 0x4d
数据手册:可在安森美半导体网站公开获取
安森美半导体 NCT210
前缀:‘adm1021’
扫描地址:I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册:可在安森美半导体网站公开获取
安森美半导体 NCT214
前缀:‘nct214’
扫描地址:I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册:可在安森美半导体网站公开获取
安森美半导体 NCT218
前缀:‘nct218’
扫描地址:I2C 0x4c - 0x4d
数据手册:可在安森美半导体网站公开获取
安森美半导体 NCT72
前缀:‘nct72’
扫描地址:I2C 0x4c - 0x4d
数据手册:可在安森美半导体网站公开获取
Maxim MAX1617
前缀:‘max1617’
扫描地址:I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册:可在 Maxim 网站公开获取
Maxim MAX1617A
前缀:‘max1617a’
扫描地址:I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册:可在 Maxim 网站公开获取
Maxim MAX6642
前缀:‘max6642’
扫描地址:I2C 0x48-0x4f
数据手册:可在 Maxim 网站公开获取
Maxim MAX6646
前缀:‘max6646’
扫描地址:I2C 0x4d
数据手册:可在 Maxim 网站公开获取
Maxim MAX6647
前缀:‘max6646’
扫描地址:I2C 0x4e
数据手册:可在 Maxim 网站公开获取
Maxim MAX6648
前缀:‘max6648’
扫描地址:I2C 0x4c
数据手册:可在 Maxim 网站公开获取
Maxim MAX6649
前缀:‘max6646’
扫描地址:I2C 0x4c
数据手册:可在 Maxim 网站公开获取
Maxim MAX6654
前缀:‘max6654’
扫描地址:I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,
0x4c, 0x4d 和 0x4e
数据手册:可在 Maxim 网站公开获取
Maxim MAX6657
前缀:‘max6657’
扫描地址:I2C 0x4c
数据手册:可在 Maxim 网站公开获取
Maxim MAX6658
前缀:‘max6657’
扫描地址:I2C 0x4c
数据手册:可在 Maxim 网站公开获取
Maxim MAX6659
前缀:‘max6659’
扫描地址:I2C 0x4c, 0x4d, 0x4e
数据手册:可在 Maxim 网站公开获取
Maxim MAX6680
前缀:‘max6680’
扫描地址:I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,
0x4c, 0x4d 和 0x4e
数据手册:可在 Maxim 网站公开获取
Maxim MAX6681
前缀:‘max6680’
扫描地址:I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,
0x4c, 0x4d 和 0x4e
数据手册:可在 Maxim 网站公开获取
Maxim MAX6692
前缀:‘max6648’
扫描地址:I2C 0x4c
数据手册:可在 Maxim 网站公开获取
Maxim MAX6695
前缀:‘max6695’
扫描地址:I2C 0x18
数据手册:可在 Maxim 网站公开获取
Maxim MAX6696
前缀:‘max6695’
扫描地址:I2C 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b,
0x4c, 0x4d 和 0x4e
数据手册:可在 Maxim 网站公开获取
华邦/新唐 W83L771W/G
前缀:‘w83l771’
扫描地址:I2C 0x4c
数据手册:不再可用
华邦/新唐 W83L771AWG/ASG
前缀:‘w83l771’
扫描地址:I2C 0x4c
数据手册:未公开提供,可从新唐索取
飞利浦/恩智浦 SA56004X
前缀:‘sa56004’
扫描地址:I2C 0x48 到 0x4F
数据手册:可在恩智浦网站公开获取
GMT G781
前缀:‘g781’
扫描地址:I2C 0x4c, 0x4d
数据手册:无法从 GMT 公开获取
德州仪器 TMP451
前缀:‘tmp451’
扫描地址:I2C 0x4c
数据手册:可在德州仪器网站公开获取
德州仪器 TMP461
前缀:‘tmp461’
扫描地址:I2C 0x48 到 0x4F
数据手册:可在德州仪器网站公开获取
飞利浦 NE1617, NE1617A
前缀:‘max1617’(可能被检测为 max1617)
扫描地址:I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册:可在飞利浦网站公开获取
飞利浦 NE1618
前缀:‘ne1618’
扫描地址:I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册:可在飞利浦网站公开获取
Genesys Logic GL523SM
前缀:‘gl523sm’
扫描地址:I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册
TI THMC10
前缀:‘thmc10’
扫描地址:I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册:可在德州仪器网站公开获取
Onsemi MC1066
前缀:‘mc1066’
扫描地址:I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
数据手册:可在安森美半导体网站公开获取
作者:Jean Delvare <jdelvare@suse.de>
描述¶
LM90 是一款数字温度传感器。它可以感应自身的温度以及最多一个外部二极管的温度。它与许多其他设备兼容,其中许多设备都受此驱动程序支持。
此驱动程序支持的芯片系列源自 MAX1617。该芯片以及各种兼容芯片支持具有 8 位精度的本地和远程温度传感器。后来的芯片提供了更高的精度和其他附加功能,例如滞后和温度偏移寄存器。
请注意,没有简单的方法来区分 MAX6657、MAX6658 和 MAX6659 变体。仅当芯片位于地址 0x4d 或 0x4e,或者芯片类型明确选择为 max6659 时,此驱动程序才支持 MAX6659 的额外功能。MAX6680 和 MAX6681 仅在引脚排列上有所不同,因此它们显然无法(并且不需要)区分。
该系列的各个芯片组并非完全相同,尽管非常相似。作为参考,以下列出了一些非详尽的特定功能列表
- LM84
8 位传感器分辨率
- ADM1020、ADM1021、GL523SM、MAX1617、NE1617、NE1617A、THMC10
8 位传感器分辨率
低温限制
- NCT210、NE1618
远程温度传感器的 11 位传感器分辨率
低温限制
- ADM1021A、ADM1023
远程温度传感器的温度偏移寄存器
远程温度传感器的 11 位分辨率
低温限制
- LM90
远程温度传感器的 11 位分辨率
远程温度传感器的温度偏移寄存器
低和临界温度限制
可配置的转换速率
位于 0xBF 的过滤器和警报配置寄存器。
ALERT 由超过临界限制的温度触发。
- LM86 和 LM89
与 LM90 相同
更好的外部通道精度
- LM99
与 LM89 相同
外部温度降低 16 度
- ADM1032
位于 0x22 的连续警报寄存器。
转换平均。
高达 64 次转换/秒。
ALERT 由打开的远程传感器触发。
SMBus PEC 支持写入字节和接收字节事务。
- ADT7461、ADT7461A、NCT1008
扩展温度范围(打破兼容性)
远程温度分辨率较低
SMBus PEC 支持写入字节和接收字节事务。
10 位温度分辨率
- ADT7481、ADT7482、ADT7483
温度偏移寄存器
SMBus PEC 支持
外部传感器的 10 位温度分辨率
两个远程传感器
可选地址 (ADT7483)
- MAX6642
无临界限制寄存器
转换速率不可配置
更好的本地分辨率 (10 位)
10 位外部传感器分辨率
- MAX6646、MAX6647、MAX6649
更好的本地分辨率
扩展范围的无符号外部温度
- MAX6648、MAX6692
更好的本地分辨率
无符号温度
- MAX6654、MAX6690
更好的本地分辨率
可选地址
远程传感器类型选择
扩展温度范围
仅当转换速率 <= 1 Hz 时才可用扩展分辨率
- MAX6657 和 MAX6658
更好的本地分辨率
远程传感器类型选择
- MAX6659
更好的本地分辨率
可选地址
第二个临界温度限制
远程传感器类型选择
- MAX6680 和 MAX6681
可选地址
远程传感器类型选择
- MAX6695 和 MAX6696
更好的本地分辨率
可选地址 (max6696)
第二个临界温度限制
两个远程传感器
- W83L771W/G
G 变体是无铅的,否则与 W 类似。
位于 0xBF 的过滤器和警报配置寄存器
移动平均值(取决于转换速率)
- W83L771AWG/ASG
W83L771W/G 的后继产品,具有相同的功能。
AWG 和 ASG 变体仅在封装格式上有所不同。
二极管理想因子配置(远程传感器)位于 0xE3
- SA56004X
更好的本地分辨率
所有温度值均以摄氏度为单位给出。本地温度的分辨率为 1.0 度,远程温度的分辨率为 0.125 度,但 MAX6654、MAX6657、MAX6658 和 MAX6659 除外,它们的两种温度的分辨率均为 0.125 度。
每个传感器都有自己的高低限制,外加一个临界限制。此外,两个临界值都有一个共同的相对滞后值。为了方便用户空间应用程序,导出了两个绝对值,每个通道一个,但这些值当然是链接的。只能从用户空间设置本地滞后,并且相同的 delta 应用于远程滞后。
lm90 驱动程序更新值的频率不会高于使用 update_interval 属性配置的频率;更频繁地读取它们不会造成任何危害,但会返回“旧”值。
SMBus 警报支持¶
此驱动程序对 SMBus 警报提供基本支持。当收到警报时,将读取状态寄存器并记录故障温度通道。
模拟器件芯片(ADM1032、ADT7461 和 ADT7461A)和安森美半导体芯片 (NCT1008) 未正确实现 SMBus 警报协议,因此需要额外注意:当收到警报时,ALERT 输出被禁用,并且只有在警报消失后才会重新启用。否则,只要警报处于活动状态,芯片就会阻止总线中其他芯片的警报。
PEC 支持¶
ADM1032 是该系列中唯一支持 PEC 的芯片。但是,它并非在所有事务上都支持 PEC,因此必须小心。
读取寄存器值时,PEC 字节由 ADM1032 芯片计算并发送。但是,在组合事务(SMBus 读取字节)的情况下,ADM1032 仅计算消息后半部分的 CRC 值,而不是整个消息的 CRC 值,因为它认为消息的前半部分属于不同的事务。因此,CRC 值与 SMBus 主设备期望的不同,并且所有读取都将失败。
因此,仅当总线支持 SMBus 发送字节和接收字节事务类型时,lm90 驱动程序才会为 ADM1032 启用 PEC。这些事务将用于读取寄存器值,而不是 SMBus 读取字节,并且 PEC 将正常工作。
此外,ADM1032 不支持带 PEC 的 SMBus 发送字节操作。相反,它会尝试将 PEC 值写入寄存器(因为带 PEC 的 SMBus 发送字节事务类似于不带 PEC 的写入字节事务),这不是我们想要的。因此,在 lm90 驱动程序中,SMBus 发送字节事务显式禁用了 PEC。
在正常情况下,字节数据事务上的 PEC 会显著增加带宽使用量(写入增加 +33%,读取增加 +25%)。由于读取需要使用两个 SMBus 事务,这种开销会跃升至 +50%。更糟糕的是,两个事务通常意味着等待事务完成的时间会增加一倍,从而有效地使寄存器缓存刷新时间加倍。我猜想可靠性是有代价的,但这次代价相当高昂。
因此,由于并非每个人都喜欢这种减速,默认情况下禁用了 PEC,并且可以通过 sysfs 启用。只需向 “pec” 文件写入 1,PEC 就会启用。向该文件写入 0 则会再次禁用 PEC。