内核驱动 adm9240

支持的芯片

作者

接口

上面列出的 I2C 地址假定 BIOS 没有更改芯片的 MSB 5 位地址。每个芯片都报告一个唯一的制造商识别码以及芯片修订版/步进级别。

描述

[来自 ADM9240] ADM9240 是一个完整的系统硬件监视器,适用于基于微处理器的系统,提供最多四个电源和两个处理器内核电压的测量和限制比较,以及温度、两个风扇速度和机箱入侵。 测量值可以通过 I2C 兼容的串行系统管理总线读出,并且限制比较的值可以通过相同的串行总线进行编程。 高速逐次逼近 ADC 允许频繁采样所有模拟通道,以确保对任何超出限制的测量做出快速中断响应。

ADM9240、DS1780 和 LM81 是寄存器兼容的,以下细节是这三个芯片共有的。 芯片差异在本节后描述。

测量

测量周期

adm9240 驱动程序的最快测量读取速度为每两秒一次。 用户空间读取 sysfs 接口的速度可能快于测量更新速率,并将收到来自最近一次测量的缓存数据。

ADM9240 具有非常快的 320us 温度和电压测量周期,以及独立的风扇速度测量周期,该周期会计算风扇转速输入的交替上升沿。

DS1780 测量周期约为每秒一次,包括风扇速度。

LM81 测量周期约为每 400 毫秒一次,包括风扇速度。 不支持 LM81 12 位扩展温度测量模式。

温度

片上温度报告为摄氏度,采用 9 位有符号数据,分辨率为 0.5 摄氏度。 高低温限制是 8 位有符号数据,分辨率为 1 摄氏度。

一旦温度超过上限,就会发出温度警报,并且当温度降至 temp1_max_hyst 值以下时,警报会被清除。

风扇速度

提供两个风扇转速输入,ADM9240 通过分频器将内部 22.5kHz 时钟门控到 8 位计数器。 风扇速度 (rpm) 的计算公式为

rpm = (22500 * 60) / (count * divider)

自动风扇时钟分频器

  • 用户将 0 设置为 fan_min 限制

    • 禁用低速警报

    • 风扇时钟分频器未更改

    • 启用自动风扇时钟调节器以进行有效的风扇速度读取

  • 用户将 fan_min 限制设置得太低

    • 启用低速警报

    • 风扇时钟分频器设置为最大值

    • fan_min 设置为寄存器值 254,对应于 adm9240 上的 664 rpm

    • 如果风扇速度低于最小可测量速度,则会发出低速警报

    • 禁用自动风扇时钟调节器

  • 用户设置合理的风扇速度

    • 启用低速警报

    • 风扇时钟分频器设置为适合 fan_min

    • 启用自动风扇时钟调节器:调整 fan_min

  • 用户设置不合理的高低风扇速度限制

    • 低速限制的分辨率可能会降低

    • 将发出警报

    • 启用自动风扇时钟调节器:调整 fan_min

  • 在自动风扇时钟分频器调节器将风扇速度时钟分频器恢复到芯片测量范围之前,风扇速度可能会显示为零,这将在几个测量周期内发生。

模拟输出

模拟输出提供 0 到 1.25 伏的信号,用于外部风扇速度放大器电路。 模拟输出在上电或重置时设置为最大值。 这在测试 Intel SE440BX-2 上没有多大作用。

电压监控


电压 (IN) 测量在内部进行缩放

编号

标签

标称

mV

最大值

mV

分辨率

mV

0

+2.5V

2500

3320

13.0

1

Vccp1

2700

3600

14.1

2

+3.3V

3300

4380

17.2

3

+5V

5000

6640

26.0

4

+12V

12000

15940

62.5

5

Vccp2

2700

3600

14.1

该读数是一个无符号 8 位值,标称电压测量由 192 的读数表示,即测量范围的 3/4。

对于低于或高于设定限制的任何电压,都会发出警报。

驱动程序报告并接受缩放到上表的电压限制。

VID 监控

该芯片有五个输入,用于读取 5 位 VID,并报告基于检测到的 CPU 类型的 mV 值。

机箱入侵

当 CI 引脚变为高电平时,会发出警报。 ADM9240 数据表提供了一个外部温度传感器驱动该引脚的示例。 在 Intel SE440BX-2 上,机箱入侵头连接到常开开关。

ADM9240 在此线上提供一个内部开漏,并且可以输出 20 毫秒的低电平有效脉冲来重置外部机箱入侵锁存器。

通过向 sysfs intrusion0_alarm 文件写入值 0 来清除 CI 锁存器。

警报标志报告为 16 位字

标签

注释

0

+2.5 V_Error

超过高限或低限

1

VCCP_Error

超过高限或低限

2

+3.3 V_Error

超过高限或低限

3

+5 V_Error

超过高限或低限

4

Temp_Error

温度错误

6

FAN1_Error

超过风扇低限

7

FAN2_Error

超过风扇低限

8

+12 V_Error

超过高限或低限

9

VCCP2_Error

超过高限或低限

12

Chassis_Error

CI 引脚变为高电平

剩余位被保留,因此未定义。 重要的是要注意,警报位可以在读取时清除,用户空间可以锁存警报并为最终用户提供清除警报内存的方法。