内核驱动 adm1026

支持的芯片
作者

模块参数

  • gpio_input:int 数组 (min = 1, max = 17)

    要编程为输入的 GPIO 引脚列表 (0-16)

  • gpio_output:int 数组 (min = 1, max = 17)

    要编程为输出的 GPIO 引脚列表 (0-16)

  • gpio_inverted:int 数组 (min = 1, max = 17)

    要编程为反相的 GPIO 引脚列表 (0-16)

  • gpio_normal:int 数组 (min = 1, max = 17)

    要编程为正常/非反相的 GPIO 引脚列表 (0-16)

  • gpio_fan:int 数组 (min = 1, max = 8)

    要编程为风扇转速计的 GPIO 引脚列表 (0-7)

描述

此驱动程序实现了对 Analog Devices ADM1026 的支持。 Analog Devices 称其为“完整的散热系统管理控制器”。

ADM1026 实现了三个 (3) 温度传感器、17 个电压传感器、16 个通用数字 I/O 线、八个 (8) 风扇速度传感器(8 位)、一个模拟输出和一个 PWM 输出,以及所有上述的限值、警报和屏蔽位。芯片上甚至还有 8k 字节的 EEPROM 存储器。

温度以摄氏度为单位测量。有两个外部传感器输入和一个内部传感器。每个传感器都有一个高限值和一个低限值。如果超过限值,则可以生成中断 (#SMBALERT)。中断可以被屏蔽。此外,每个传感器都有过温限制。如果超过此限制,则将置位 #THERM 输出。当前温度和限值的分辨率为 1 度。

风扇转速以 RPM(每分钟转数)报告,但以 22.5kHz 内部时钟的计数测量。每个风扇都有一个高限值,对应于最小风扇转速。如果超过限值,则可以生成中断。每个风扇都可以编程为将参考时钟除以 1、2、4 或 8。并非所有 RPM 值都可以准确表示,因此会进行一些舍入。当除数为 8 时,每次旋转产生两次脉冲的风扇的最低可测量速度为 661 RPM。

有 17 个电压传感器。如果电压超过可编程的最小值或最大值限制,则会触发警报。请注意,在这种情况下,最小值始终表示“最接近零”;这对于负电压测量很重要。有几个输入集成了衰减器,因此它们可以直接测量更高的电压。3.3V、5V、12V、-12V 和电池电压都有专用输入。有几个输入被缩放到 0-3V 的满量程范围,用于 SCSI 终结器电源。其余输入未缩放,具有 0-2.5V 的满量程范围。提供 2.5V 或 1.82V 的参考电压用于负电压测量。

如果触发警报,它将保持触发状态,直到至少读取一次硬件寄存器。这意味着警报的原因可能已经消失!请注意,在当前实现中,只要读取任何数据,就会读取所有硬件寄存器(除非距离上次更新的时间少于 2.0 秒)。这意味着您很容易错过一次性警报。

ADM1026 连续测量。模拟输入大约每秒测量 4 次。风扇速度测量时间取决于风扇速度和除数。测量所有风扇速度可能需要长达 1.5 秒的时间。

ADM1026 能够根据温度传感器输入自动控制风扇速度。PWM 输出和 DAC 输出都可用于控制风扇速度。通常只使用这两个输出之一。将最小 PWM 或 DAC 值写入相应的控制寄存器。然后在每个温度传感器的 tmin 值中设置低温限制。控制范围固定为 20 °C,温度传感器当前温度和 tmin 之间的最大差值设置控制输出。有关使用 PWM 和 DAC 输出控制风扇速度的几个示例电路,请参阅数据手册。风扇速度传感器没有 PWM 补偿,因此最好从电源线而不是地线控制风扇电压。

数据手册显示了一个示例应用程序,其中 VID 信号连接到 GPIO 线。不幸的是,芯片可能不会以这种方式连接到 VID 线。驱动程序假定芯片以这种方式连接以获得 VID 电压。