内核驱动 w83791d¶
支持的芯片
Winbond W83791D
前缀: 'w83791d'
扫描地址: I2C 0x2c - 0x2f
数据手册: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/W83791D_W83791Gb.pdf
作者: Charles Spirakis <bezaur@gmail.com>
此驱动程序源自 w83781d.c 和 w83792d.c 源文件。
贡献者
w83781d.c
Frodo Looijaard <frodol@dds.nl>,
Philip Edelbrock <phil@netroedge.com>,
Mark Studebaker <mdsxyz123@yahoo.com>
w83792d.c
Shane Huang (Winbond),
Rudolf Marek <r.marek@assembler.cz>
其他贡献者
Sven Anders <anders@anduras.de>
Marc Hulsman <m.hulsman@tudelft.nl>
模块参数¶
- init boolean
(默认 0)
使用 'init=1' 让驱动程序执行额外的软件初始化。默认行为是执行尽可能少的初始化,并依赖 BIOS 来正确设置芯片。如果您知道您有一个 w83791d 并且遇到问题,请在尝试 reset=1 之前尝试 init=1。
- reset boolean
(默认 0)
使用 'reset=1' 重置芯片(通过索引 0x40,位 7)。默认行为是不重置芯片以保留 BIOS 设置。
- force_subclients=bus,caddr,saddr,saddr
这用于强制特定芯片的子客户端的 i2c 地址。 例如,用法是 force_subclients=0,0x2f,0x4a,0x4b,以强制总线 0 上芯片 0x2f 的子客户端使用 i2c 地址 0x4a 和 0x4b。
描述¶
此驱动程序实现了对 Winbond W83791D 芯片的支持。W83791G 芯片看起来与 W83791D 相同,但它是无铅的。
芯片的检测有时可能会失败,因为它可能处于不允许干净访问的内部状态(当前未选择带有 ID 寄存器的 Bank)。如果您知道芯片的地址,请使用 'force' 参数;这将首先将其置于更稳定的状态。
该驱动程序实现了三个温度传感器、十个电压传感器、五个风扇转速传感器和每个风扇的手动 PWM 控制。
温度以摄氏度为单位测量,temp1 的测量分辨率为 1 摄氏度,temp2 和 temp3 的测量分辨率为 0.5 摄氏度。当温度高于过温关机值时会触发警报;它会保持开启状态,直到温度降至迟滞值以下。
电压传感器(也称为 IN 传感器)以毫伏为单位报告其值。如果电压超过可编程的最小值或最大值限制,则会触发警报。
风扇转速以 RPM(每分钟转数)为单位报告。如果转速降至可编程限制以下,则会触发警报。风扇读数可以被可编程的分频器(所有风扇为 1、2、4、8、16、32、64 或 128)除,以使读数具有更大的范围或精度。
每个受控风扇都由 PWM 控制。可以单独读取和设置每个风扇的 PWM 占空比。有效值范围为 0(停止)到 255(全速)。PWM 1-3 支持热巡航模式,其中 PWM 会自动调节以分别将温度 1-3 保持在特定的目标温度。有关 sysfs 接口的描述,请参见下文。
w83791d 有一个全局位,用于在触发警报时启用扬声器发出哔哔声,以及一个位掩码来启用或禁用特定警报的哔哔声。您需要同时打开全局哔哔声启用位和相应的哔哔声位,才能使触发的警报发出哔哔声。
全局启用的 sysfs 接口通过 sysfs beep_enable 文件实现。此文件用于旧代码和新代码。
哔哔声位掩码的 sysfs 接口已从单个 sysfs beep_mask 文件的原始旧方法迁移到使用多个 *_beep 文件的新方法,如 sysfs 文件的命名和数据格式标准 中所述。
对于与警报相对应的位图也发生了类似的变化。原始的旧方法使用包含触发警报位图的单个 sysfs alarms 文件。较新的方法使用多个 sysfs *_alarm 文件(再次遵循 sysfs-interface 中描述的模式)。
由于这两种方法都读取和写入底层硬件,因此它们可以互换使用,并且一个方法中的更改将自动反映在另一个方法中。如果您使用旧的位掩码方法,则您的用户空间代码负责处理警报和 beep_mask 位图不同的事实(请参见下表)。
注意:所有新代码都应编写为使用较新的 sysfs 接口规范,因为这样可以避免位图问题,并且是未来的首选接口。
驱动程序最多每三秒读取一次硬件芯片值。请求值的用户模式代码更频繁地接收缓存值。
/sys 文件¶
sysfs 接口在 'sysfs-interface' 文件中进行了说明。此处仅记录特定于芯片的选项。
pwm[1-3]_enable |
此文件控制风扇/温度控制模式,适用于风扇 1-3。风扇/PWM 4-5 仅支持手动模式。
|
temp[1-3]_target |
定义热巡航模式的目标温度。单位:毫摄氏度 RW |
temp[1-3]_tolerance |
热巡航模式的温度容差。指定目标温度周围的一个区间,在该区间内,风扇速度不会改变。单位:毫摄氏度 RW |
警报位图与 beep_mask 位掩码¶
对于使用 alarms 和 beep_mask 文件的旧代码
信号 |
警报 |
beep_mask |
备注 |
---|---|---|---|
in0 (VCORE) |
0x000001 |
0x000001 |
|
in1 (VINR0) |
0x000002 |
0x002000 |
<== 不匹配 |
in2 (+3.3VIN) |
0x000004 |
0x000004 |
|
in3 (5VDD) |
0x000008 |
0x000008 |
|
in4 (+12VIN) |
0x000100 |
0x000100 |
|
in5 (-12VIN) |
0x000200 |
0x000200 |
|
in6 (-5VIN) |
0x000400 |
0x000400 |
|
in7 (VSB) |
0x080000 |
0x010000 |
<== 不匹配 |
in8 (VBAT) |
0x100000 |
0x020000 |
<== 不匹配 |
in9 (VINR1) |
0x004000 |
0x004000 |
|
temp1 |
0x000010 |
0x000010 |
|
temp2 |
0x000020 |
0x000020 |
|
temp3 |
0x002000 |
0x000002 |
<== 不匹配 |
fan1 |
0x000040 |
0x000040 |
|
fan2 |
0x000080 |
0x000080 |
|
fan3 |
0x000800 |
0x000800 |
|
fan4 |
0x200000 |
0x200000 |
|
fan5 |
0x400000 |
0x400000 |
|
tart1 |
0x010000 |
0x040000 |
<== 不匹配 |
tart2 |
0x020000 |
0x080000 |
<== 不匹配 |
tart3 |
0x040000 |
0x100000 |
<== 不匹配 |
case_open |
0x001000 |
0x001000 |
|
global_enable |
0x800000 |
(通过 beep_enable 修改) |