内核驱动 w83792d

支持的芯片

作者: Shane Huang (华邦) 更新人: 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。

描述

该驱动程序实现了对华邦 W83792AD/D 的支持。

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

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

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

自动风扇控制模式仅适用于风扇 1 到风扇 3。

对于所有 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 问题

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

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

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

  • 如果您有华硕服务器主板且未找到芯片:则需要升级到最新(或 Beta)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 占空比或直流值(风扇转速),范围为

    0 (停止) 到 255 (全速)

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

    • 0 禁用

    • 1 手动模式

    • 2 智能风扇 II

    • 3 温控巡航

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

    • 0 直流

    • 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/直流级别