内核驱动程序 lm85¶
支持的芯片
美国国家半导体 LM85 (B 和 C 版本)
前缀: ‘lm85b’ 或 ‘lm85c’
扫描地址: I2C 0x2c, 0x2d, 0x2e
德州仪器 LM96000
前缀: ‘lm9600’
扫描地址: I2C 0x2c, 0x2d, 0x2e
亚德诺半导体 ADM1027
前缀: ‘adm1027’
扫描地址: I2C 0x2c, 0x2d, 0x2e
数据手册: https://www.onsemi.com/PowerSolutions/product.do?id=ADM1027
亚德诺半导体 ADT7463
前缀: ‘adt7463’
扫描地址: I2C 0x2c, 0x2d, 0x2e
数据手册: https://www.onsemi.com/PowerSolutions/product.do?id=ADT7463
亚德诺半导体 ADT7468
前缀: ‘adt7468’
扫描地址: I2C 0x2c, 0x2d, 0x2e
数据手册: https://www.onsemi.com/PowerSolutions/product.do?id=ADT7468
SMSC EMC6D100, SMSC EMC6D101
前缀: ‘emc6d100’
扫描地址: I2C 0x2c, 0x2d, 0x2e
数据手册: http://www.smsc.com/media/Downloads_Public/discontinued/6d100.pdf
SMSC EMC6D102
前缀: ‘emc6d102’
扫描地址: I2C 0x2c, 0x2d, 0x2e
SMSC EMC6D103
前缀: ‘emc6d103’
扫描地址: I2C 0x2c, 0x2d, 0x2e
SMSC EMC6D103S
前缀: ‘emc6d103s’
扫描地址: I2C 0x2c, 0x2d, 0x2e
- 作者
Philip Pokorny <ppokorny@penguincomputing.com>,
Frodo Looijaard <frodol@dds.nl>,
Richard Barrington <rich_b_nz@clear.net.nz>,
Margit Schubert-While <margitsw@t-online.de>,
Justin Thiessen <jthiessen@penguincomputing.com>
描述¶
此驱动程序支持美国国家半导体的 LM85 及其兼容芯片,包括亚德诺半导体的 ADM1027、ADT7463、ADT7468 以及 SMSC EMC6D10x 系列芯片。
LM85 采用兼容 SMBUS 2.0 规范的 2 线接口。它使用模数转换器测量三 (3) 个温度和五 (5) 个电压。它有四 (4) 个 16 位计数器用于测量风扇速度。提供五 (5) 个数字输入用于采样从处理器到 VRM 的 VID 信号。最后,有三 (3) 个 PWM 输出可用于控制风扇速度。
电压输入具有内部比例电阻,因此可以在没有外部电阻的情况下测量以下电压
2.5V、3.3V、5V、12V 和 CPU 核心电压 (2.25V)
测量的温度包括一个内部二极管和两个远程二极管。远程 1 通常是 CPU 温度。这些输入旨在测量热敏二极管,例如 Pentium 4 处理器在 Socket 423 或 Socket 478 封装中的热敏二极管。它们也可以使用 2N3904 等晶体管测量温度。
LM85 中设计了一个复杂的 PWM 输出控制系统,允许根据三个温度传感器中的任何一个自动调节风扇速度。每个 PWM 输出都可以单独调节和编程。一旦配置,LM85 将根据测量的温度调整 PWM 输出,无需主机进一步干预。此功能也可以禁用,以实现 PWM 的手动控制。
每个测量输入(电压、温度、风扇速度)都有相应的高/低限值。如果任何测量值超过任一限值,LM85 将发出警报 (ALARM)。
LM85 持续采样所有输入。lm85 驱动程序读取寄存器的频率不会超过每秒一次。此外,配置数据每 5 分钟只读取一次。配置数据量是测量值的两倍,因此这似乎是一个值得进行的优化。
特殊功能¶
LM85 有四种风扇速度监控模式。ADM1027 只有两种。两者都有特殊电路来补偿 PWM 与风扇的 TACH 信号之间的相互作用。ADM1027 可以配置为测量两线风扇的速度,但 3 线和 2 线模式的输入调理电路不同。因此,两线风扇模式不向用户开放控制。BIOS 应该将它们初始化为正确的模式。如果您设计了自己的 ADM1027,您将需要修改 init_client 函数并添加一个 insmod 参数来设置此功能。
为了平滑风扇对温度变化的响应,LM85 有一个可选的温度平滑滤波器。ADM1027 具有相同的配置选项,但它将其用于限制风扇速度变化的速率。
ADM1027、ADT7463 和 ADT7468 具有 10 位 ADC,因此可以以 0.25 摄氏度的分辨率测量温度。它们还为温度读数提供一个偏移量,该偏移量在测量期间自动应用。此偏移量可用于消除因走线和放置引起的任何误差。文档称偏移量以 0.25 摄氏度为步长,但在 ADM1027 的初始测试中,它是以 1.00 摄氏度为步长。亚德诺半导体已确认此“错误”。据报道,ADT7463 的工作方式与文档中描述的一致。当前的 lm85 驱动程序不显示偏移寄存器。
ADT7468 具有高频 PWM 模式,所有 PWM 输出都由 22.5 kHz 时钟驱动。这是一种全局模式,而非每个 PWM 输出独立设置,这意味着将任何 PWM 频率设置到 11.3 kHz 以上,所有 3 个 PWM 输出都将切换到 22.5 kHz 的频率。相反,将任何 PWM 频率设置到 11.3 kHz 以下,所有 3 个 PWM 输出将切换到 10 到 100 Hz 之间的频率,然后可以单独进行调整。
有关更多信息,请参阅供应商数据手册。美国国家半导体有一份应用说明 (AN-1260),其中包含有关 LM85 的一些附加信息。亚德诺半导体的数据手册非常详细,并描述了确定自动 PWM 控制最佳配置的步骤。
SMSC EMC6D100 和 EMC6D101 监控外部电压、温度和风扇速度。它们利用这种监控能力在超出限制条件时向系统发出警报,并可以自动控制 PC 或嵌入式系统中多个风扇的速度。EMC6D101(采用 24 引脚 SSOP 封装)和 EMC6D100(采用 28 引脚 SSOP 封装)设计为寄存器兼容。EMC6D100 提供了 EMC6D101 的所有功能,并增加了额外的电压监控和系统控制功能。不幸的是,在寄存器层面无法区分封装版本,因此这些额外的电压输入可能读取为零。EMC6D102 和 EMC6D103 具有额外的 ADC 位,从而扩展了电压和温度通道的精度。
SMSC EMC6D103S 类似于 EMC6D103,但不支持 pwm#_auto_pwm_minctl 和 temp#_auto_temp_off。
LM96000 支持额外的高频 PWM 模式(22.5 kHz、24 kHz、25.7 kHz、27.7 kHz 和 30 kHz),这些模式可以按每个 PWM 进行配置。
硬件配置¶
LM85 可以通过跳线设置为 3 种不同的 SMBus 地址。LM85 没有其他硬件配置选项。
lm85 驱动程序检测芯片的 LM85B 和 LM85C 版本。有关差异的完整描述,请参阅数据手册。除了识别芯片之外,驱动程序在这两种芯片方面没有其他不同的行为。新设计建议使用 LM85B。
ADM1027、ADT7463 和 ADT7468 芯片具有可选的 SMBALERT 输出,可用于在超出限制或温度传感器故障时向芯片组发出信号。可以屏蔽单个传感器中断,使其不会触发 SMBALERT。如果配置,SMBALERT 输出将取代其他功能之一(PWM2 或 IN0)。当前驱动程序中未实现此功能。
ADT7463 和 ADT7468 还具有可选的 THERM 输出/输入,可以连接到处理器 PROC_HOT 输出。如果可用,可以启用自动风扇控制动态 Tmin 功能,以在最小风扇噪音下将系统温度保持在规格范围内(勉强?!)。
配置说明¶
除了标准接口,驱动程序还添加了以下内容
温度和区域
每个温度传感器都与一个区域关联。有三个传感器,因此有三个区域(#1、2 和 3)。每个区域都有以下温度配置点
- temp#_auto_temp_off
风扇应关闭或以非常低的速度旋转的温度。
- temp#_auto_temp_min
风扇开始旋转的温度。
- temp#_auto_temp_max
风扇全速旋转时的温度。
- temp#_auto_temp_crit
所有风扇将全速运行的温度。
PWM 控制¶
有三个 PWM 输出。LM85 数据手册建议 pwm3 输出同时控制 fan3 和 fan4。每个 PWM 都可以单独配置并分配到一个区域以获取其控制值。每个 PWM 都可以根据以下选项单独配置。
- pwm#_auto_pwm_min
这指定了 temp#_auto_temp_off 温度的 PWM 值。(PWM 值为 0 到 255)
- pwm#_auto_pwm_minctl
此标志选择 temp#_auto_temp_off 温度下风扇的行为。写入 1 让风扇以 pwm#_auto_pwm_min 速度旋转,或写入 0 让它们关闭。
注意
据报道,LM85 中存在一个错误,导致该标志与区域而非 PWM 关联。这与所有已发布的文档相矛盾。在这种情况下设置 pwm#_min_ctl 实际上会影响由区域“#”控制的所有 PWM。
PWM 控制区域选择¶
- pwm#_auto_channels
控制与 PWM 关联的区域
配置选项
值 |
含义 |
---|---|
1 |
由区域 1 控制 |
2 |
由区域 2 控制 |
3 |
由区域 3 控制 |
23 |
由区域 2 或 3 的较高温度控制 |
123 |
由区域 1、2 或 3 的最高温度控制 |
0 |
PWM 始终为 0% (关闭) |
-1 |
PWM 始终为 100% (全开) |
-2 |
手动控制(写入‘pwm#’进行设置) |
美国国家半导体的 LM85 具有两个供应商特定的配置功能:测速仪模式 (Tach. mode) 和启动控制 (Spinup Control)。有关这些功能的更多详细信息,请参阅 LM85 数据手册或应用笔记 AN-1260。lm85 驱动程序目前不支持这些功能。
亚德诺半导体的 ADM1027 具有多项供应商特定的增强功能。可以设置风扇的每转脉冲数,可以优化测速仪监控以适应 PWM 操作,并且可以对温度应用偏移量以补偿测量中的系统误差。lm85 驱动程序目前不支持这些功能。
除了 ADM1027 的功能外,ADT7463 和 ADT7468 还具有 Tmin 控制和 THERM 断言计数功能。自动 Tmin 控制用于调整 Tmin 值,以将测量的温度传感器维持在指定温度。ADT7463 数据手册中关于此功能的文档不多。当前驱动程序不支持此功能。