内核驱动 w83792d

支持的芯片

作者:Shane Huang (Winbond) 更新者:Roger Lucas

模块参数

  • init int

    (默认 1)

    使用 ‘init=0’ 来绕过芯片初始化。如果加载模块时计算机崩溃,请尝试此操作。

  • force_subclients=bus,caddr,saddr,saddr

    这用于强制特定芯片的子客户端的 i2c 地址。 例如,force_subclients=0,0x2f,0x4a,0x4b 将强制总线 0 上 0x2f 芯片的子客户端的 i2c 地址为 0x4a 和 0x4b。

描述

此驱动程序实现了对 Winbond W83792AD/D 的支持。

芯片的检测有时会失败,因为它可能处于内部状态,不允许进行干净的访问(当前未选择带有 ID 寄存器的 Bank)。 如果您知道芯片的地址,请使用“force”参数; 这将首先将其置于更规范的状态。

该驱动程序实现了三个温度传感器、七个风扇转速传感器、九个电压传感器以及两种自动风扇调节策略,称为:智能风扇 I(热巡航模式)和智能风扇 II。

该驱动程序还实现了最多七个风扇控制输出:pwm1-7。可以通过它们相关的 pwmX_mode 将 Pwm1-7 配置为 PWM 输出或模拟 DC 输出。 输出 pwm4 到 pwm7 可能存在也可能不存在,具体取决于 BIOS 如何配置 W83792AD/D。

自动风扇控制模式仅适用于 fan1-fan3。

对于所有 pwmX 输出,值 0 表示最小风扇速度,值 255 表示最大风扇速度。

温度以摄氏度为单位测量,temp1 的测量分辨率为 1 摄氏度,temp2 和 temp3 的测量分辨率为 0.5 摄氏度。 当温度高于过温关机值时会触发警报; 它会一直保持开启状态,直到温度降至迟滞值以下。

风扇转速以 RPM(每分钟转数)报告。 如果转速降至可编程限制以下,则会触发警报。 风扇读数可以除以可编程的分频器(1、2、4、8、16、32、64 或 128)以提供更大的读数范围或精度。

电压传感器(也称为 IN 传感器)以毫伏为单位报告其值。 如果电压超过可编程的最小值或最大值限制,则会触发警报。

警报作为“实时状态寄存器”的输出提供。 定义了以下位

警报开启

0

in0

1

in1

2

temp1

3

temp2

4

temp3

5

fan1

6

fan2

7

fan3

8

in2

9

in3

10

in4

11

in5

12

in6

13

VID 更改

14

机箱

15

fan7

16

tart1

17

tart2

18

tart3

19

in7

20

in8

21

fan4

22

fan5

23

fan6

当相应风扇全速旋转 3 分钟后仍无法达到目标温度时,Tart 将被断言。

除了上述警报之外,芯片上还有一个 CHAS 警报,如果您的计算机机箱打开,则会触发此警报(与实时警报相反,此警报已锁定)。

芯片仅每 3 秒更新一次值; 更频繁地读取它们不会有任何损害,但会返回“旧”值。

W83792D 问题

已知问题
  • 此驱动程序仅适用于 Winbond W83792D C 版本设备,还有一些主板带有 B 版本 W83792D 设备。 C 版本和 B 版本之间 in6-in7(测量值、限制)的计算方法略有不同。 C 或 B 版本可以通过 CR[0x49h] 识别。

  • vid 和 vrm 的功能尚未完成,因为我对它们不是很熟悉。 欢迎添加支持。

  • 机箱打开检测的功能需要更多测试。

  • 如果您有 ASUS 服务器主板且未找到芯片:那么您需要升级到最新的(或测试版)BIOS。 如果它没有帮助,请联系我们。

风扇控制

手动模式

按预期工作。 您只需在相应的 pwm# 文件中指定所需的 PWM/DC 值(风扇速度)。

热巡航

在此模式下,W83792D 提供智能风扇系统来自动控制风扇速度,以使 CPU 和系统的温度保持在特定范围内。 首先必须设置所需的温度和间隔。 这是通过 thermal_cruise# 文件完成的。 tolerance# 文件用于创建 T +- tolerance 间隔。 只要当前温度保持在 thermal_cruise# +- tolerance# 值以下,风扇速度就会降低。 一旦温度超过高限(T+tolerance),风扇将以 pwm# 设置的特定速度打开,并随着温度的变化自动控制其 PWM 占空比。 可能会出现三种情况

(1) 如果温度仍然超过高限,PWM 占空比将缓慢增加。

(2) 如果温度低于高限,但仍然高于低限(T-tolerance),则风扇速度将固定在当前速度,因为温度在目标范围内。

(3) 如果温度低于低限,PWM 占空比将缓慢降低到 0 或预设的停止值,直到温度超过低限。(驱动程序中尚未实现预设停止值处理)

智能风扇 II

W83792D 还为风扇提供了一种特殊模式。 有四个温度点可用。 当相关的温度传感器检测到预设温度区域(sf2_point@_fan# +- tolerance#)的温度时,它将导致风扇以 sf2_level@_fan# 中的编程值运行。 您需要为每个风扇设置四个温度。

/sys 文件

pwm[1-7]
  • 此文件存储范围内的 PWM 占空比或 DC 值(风扇速度)

    0(停止)到 255(全速)

pwm[1-3]_enable
  • 此文件控制风扇/温度控制的模式

    • 0 禁用

    • 1 手动模式

    • 2 智能风扇 II

    • 3 热巡航

pwm[1-7]_mode
  • 选择 PWM 或 DC 模式

    • 0 DC

    • 1 PWM

thermal_cruise[1-3]
  • 选择巡航的所需温度(摄氏度)

tolerance[1-3]
  • 以摄氏度为单位 (degC) 表示 +- T 的值

sf2_point[1-4]_fan[1-3]
  • 智能风扇 II 中每个风扇的四个温度点

sf2_level[1-3]_fan[1-3]
  • 智能风扇 II 中每个风扇的三个 PWM/DC 级别