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 分钟采样一次),因此效果会减弱,但仍然存在。

限制

数据表表明,一旦开始监控,就不应更改某些值(风扇最小值,风扇分频器),但我们忽略了该建议。如果它确实引起麻烦,我们将重新考虑。