Kernel driver pc87360¶
支持的芯片
National Semiconductor PC87360, PC87363, PC87364, PC87365 和 PC87366
前缀:‘pc87360’,‘pc87363’,‘pc87364’,‘pc87365’,‘pc87366’
扫描地址:无,从 Super I/O 配置空间读取地址
数据表:不再可用
作者:Jean Delvare <jdelvare@suse.de>
感谢 Sandeep Mehta、Tonko de Rooy 和 Daniel Ceregatti 进行测试。
感谢 Rudolf Marek 帮助我调查转换问题。
模块参数¶
- init int
芯片初始化级别
0:无
1:强制启用内部电压和温度通道,除了 in9
2:强制启用所有电压和温度通道,除了 in9
3:强制启用所有电压和温度通道,包括 in9
请注意,此参数对 PC87360、PC87363 和 PC87364 芯片无效。
另请注意,对于 PC87366,初始化级别 2 和 3 不会启用所有温度通道,因为其中一些通道与其他通道共享引脚,因此不能同时使用。
描述¶
National Semiconductor PC87360 Super I/O 芯片包含用于两个风扇的监控和 PWM 控制电路。PC87363 芯片类似,PC87364 芯片具有用于第三个风扇的监控和 PWM 控制。
National Semiconductor PC87365 和 PC87366 Super I/O 芯片是完整的硬件监控芯片组,不仅控制和监控三个风扇,还监控十一个电压输入和两个 (PC87365) 或最多四个 (PC87366) 温度。
芯片
#vin
#fan
#pwm
#temp
devid
PC87360
2
2
0xE1
PC87363
2
2
0xE8
PC87364
3
3
0xE4
PC87365
11
3
3
2
0xE5
PC87366
11
3
3
3-4
0xE9
驱动程序假定不存在多个芯片,并且使用标准 Super I/O 地址之一(0x2E/0x2F 或 0x4E/0x4F)
风扇监控¶
风扇转速以 RPM(每分钟转数)报告。如果转速低于可编程限制,则会触发警报。如果风扇转速太低而无法测量,则会触发不同的警报。
风扇读数受可编程时钟分频器影响,从而使读数具有更大的范围或准确性。通常,用户必须学习它的工作原理,但是此驱动程序实现了动态时钟分频器选择,因此您不必再担心。
作为参考,以下是一些关于时钟分频器的值
分频器
速度(RPM)
转速(RPM)
速度(RPM)
1
1882
18
6928
2
941
37
4898
4
470
74
3464
8
235
150
2449
对于好奇的人,以下是计算上述值的方式
最低可测量速度:clock/(255*divider)
3000 RPM 左右的精度:3000^2/clock
最高准确速度:sqrt(clock*100)
PC87360 系列的时钟速度为 480 kHz。我任意选择 100 RPM 作为最低可接受的精度。
如上所述,您不必再担心这一点。
请注意,即使选择了最佳时钟分频器,也无法表示所有 RPM 值。这不仅适用于测量速度,还适用于可编程的低限值,因此如果您尝试将 fan1_min 设置为 2900,但最终读取为 2909,请不要感到惊讶。
风扇控制¶
PWM(脉冲宽度调制)值的范围为 0 到 255,其中 0 表示风扇已停止,255 表示风扇全速运转。
更改 PWM 值时要格外小心。即使是非零的低 PWM 值也可能会停止风扇,如果温度升高过多,可能会对您的硬件造成不可逆转的损坏。更改 PWM 值时,请逐步进行,并密切关注温度。
一位用户报告了 PWM 存在问题。更改 PWM 值会破坏风扇转速读数。找不到解释或修复方法。
温度监控¶
温度以摄氏度报告。每个测量的温度都具有相关的低、高和过温限制,每个限制都会在超过时触发警报。
前两个温度通道是外部的。第三个通道(仅限 PC87366)是内部的。
PC87366 具有三个额外的温度通道,这些通道基于热敏电阻(与前三个温度通道的热敏二极管相反)。由于技术原因,这些通道由 VLM(电压电平监视器)逻辑设备控制,而不是 TMS(温度测量)逻辑设备。因此,这些温度作为电压导出,并在用户空间中转换为温度。
请注意,这三个额外的通道与外部热敏二极管通道共享引脚,因此您(物理上)不能同时使用它们。尽管应该可以将两种传感器类型混合使用,但 National Semiconductor 的文档表明,主板制造商应选择一种类型并坚持使用。因此,您更有可能拥有通道 1 到 3(热敏二极管)或 3 到 6(内部热敏二极管和热敏电阻)。
电压监控¶
电压相对于参考电压(内部或外部)报告。其中一些(in7:Vsb、in8:Vdd 和 in10:AVdd)在内部除以 2,您必须在 sensors.conf 中进行补偿。其他(in0 到 in6)可能在外部划分。每个输入的含义以及用于划分的电阻器的值留给主板制造商,因此您必须自己记录并相应地编辑 sensors.conf。National Semiconductor 有一份包含一些电压推荐电阻值的文档,但这仍然为每个主板的特性留下了很大的空间,不幸的是。更糟糕的是,主板制造商似乎并不关心 National Semiconductor 的建议。
每个测量的电压都具有相关的低限和高限,每个限制都会在超过时触发警报。
如果可用,VID 输入用于提供标称 CPU 内核电压。驱动程序将默认为 VRM 9.0,但可以从用户空间更改。芯片组可以处理两组 VID 输入(在双 CPU 系统上),但驱动程序目前只会导出一个。如果需要,这可能会在以后更改。
一般说明¶
如果触发警报,它将保持触发状态,直到至少读取一次硬件寄存器。这意味着警报的原因可能已经消失!请注意,只要读取任何数据,就会读取所有硬件寄存器(除非距离上次更新不到 2 秒,在这种情况下,将返回缓存的值)。因此,当触发一次性警报时,可能需要 2 秒才能显示,然后再需要 2 秒才能消失。
在较低的初始化级别(<3)下,不会启用 in9 的监视,因为该通道测量电池电压(Vbat)。众所周知,重复采样电池电压会缩短其寿命。National Semiconductor 精明地设计了他们的芯片组,使得 in9 仅在每 1024 个采样周期采样一次(即,以默认采样率每 34 分钟采样一次),因此效果会减弱,但仍然存在。
限制¶
数据表表明,一旦开始监控,就不应更改某些值(风扇最小值,风扇分频器),但我们忽略了该建议。如果它确实引起麻烦,我们将重新考虑。