内核驱动 pc87360¶
支持的芯片
National Semiconductor PC87360、PC87363、PC87364、PC87365 和 PC87366
前缀:‘pc87360’、‘pc87363’、‘pc87364’、‘pc87365’、‘pc87366’
扫描的地址:无,地址从超级 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 超级 I/O 芯片包含用于两个风扇的监控和 PWM 控制电路。PC87363 芯片类似,而 PC87364 芯片具有用于第三个风扇的监控和 PWM 控制。
National Semiconductor PC87365 和 PC87366 超级 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
驱动程序假定不存在多个芯片,并且使用标准的超级 I/O 地址之一(0x2E/0x2F 或 0x4E/0x4F)
风扇监控¶
风扇转速以 RPM(每分钟转数)报告。如果转速低于可编程的限制,则会触发警报。如果风扇转速太低而无法测量,则会触发不同的警报。
风扇读数受可编程时钟分频器的影响,从而提供更大的读数范围或精度。通常,用户必须学习它是如何工作的,但是此驱动程序实现了动态时钟分频器选择,因此您不必再担心了。
作为参考,以下是一些关于时钟分频器的值
分频器
速度 (RPM)
RPM (RPM)
速度 (RPM)
1
1882
18
6928
2
941
37
4898
4
470
74
3464
8
235
150
2449
对于好奇的人,以下是以上值的计算方式
最慢的可测量速度:clock/(255*分频器)
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 分钟)仅采样一次,因此效果减弱,但仍然存在。
限制¶
数据手册建议一旦开始监控,就不应更改某些值(风扇最小值、风扇分频器),但我们忽略了该建议。如果它确实引起麻烦,我们将重新考虑。