内核驱动 dme1737

支持的芯片

  • SMSC DME1737 和兼容芯片(如 Asus A8000)

    前缀:‘dme1737’

    扫描的地址:I2C 0x2c, 0x2d, 0x2e

    数据手册:由 SMSC 根据请求并在 NDA 下提供

  • SMSC SCH3112, SCH3114, SCH3116

    前缀:‘sch311x’

    扫描的地址:无,地址从 Super-I/O 配置空间读取

    数据手册:可在互联网上获取

  • SMSC SCH5027

    前缀:‘sch5027’

    扫描的地址:I2C 0x2c, 0x2d, 0x2e

    数据手册:由 SMSC 根据请求并在 NDA 下提供

  • SMSC SCH5127

    前缀:‘sch5127’

    扫描的地址:无,地址从 Super-I/O 配置空间读取

    数据手册:由 SMSC 根据请求并在 NDA 下提供

作者

Juerg Haefliger <juergh@gmail.com>

模块参数

  • force_start: bool

    启用电压、风扇和温度输入以及 PWM 输出控制功能的监控。由于 BIOS 通常会处理此问题,因此不应需要使用此参数。

  • probe_all_addr: bool

    在探测 ISA 设备时,包括非标准的 LPC 地址 0x162e 和 0x164e。以下主板需要此参数:- VIA EPIA SN18000

描述

此驱动程序实现了对 SMSC DME1737 和 Asus A8000(两者相同)、SMSC SCH5027、SCH311x 和 SCH5127 Super-I/O 芯片的硬件监控功能的支持。这些芯片具有对 3 个温度传感器 temp[1-3](2 个远程二极管和 1 个内部传感器)、8 个电压输入 in[0-7](7 个外部输入和 1 个内部输入)和最多 6 个风扇速度 fan[1-6] 的监控功能。此外,这些芯片还实现了最多 5 个 PWM 输出 pwm[1-3,5-6],用于手动和自动控制风扇速度。

对于 DME1737、A8000 和 SCH5027,始终存在 fan[1-2] 和 pwm[1-2]。fan[3-6] 和 pwm[3,5-6] 是可选功能,它们的可用性取决于芯片的配置。驱动程序将在初始化期间检测存在哪些功能,并相应地创建 sysfs 属性。

对于 SCH311x 和 SCH5127,始终存在 fan[1-3] 和 pwm[1-3],而 fan[4-6] 和 pwm[5-6] 不存在。

DME1737、A8000 和 SCH5027 的硬件监控功能只能通过 SMBus 访问,而 SCH311x 和 SCH5127 只能通过 ISA 总线访问。因此,如果驱动程序检测到 DME1737、A8000 或 SCH5027,它将注册为 I2C 客户端驱动程序;如果检测到 SCH311x 或 SCH5127 芯片,则注册为平台驱动程序。

电压监控

电压输入以 12 位分辨率采样,并具有内部定标电阻。因此,驱动程序返回的值反映的是真实的毫伏,不需要定标。电压输入映射如下(最后一列表示输入范围)

DME1737, A8000

in0: +5VTR      (+5V standby)           0V - 6.64V
in1: Vccp       (processor core)        0V - 3V
in2: VCC        (internal +3.3V)        0V - 4.38V
in3: +5V                                0V - 6.64V
in4: +12V                               0V - 16V
in5: VTR        (+3.3V standby)         0V - 4.38V
in6: Vbat       (+3.0V)                 0V - 4.38V

SCH311x

in0: +2.5V                              0V - 3.32V
in1: Vccp       (processor core)        0V - 2V
in2: VCC        (internal +3.3V)        0V - 4.38V
in3: +5V                                0V - 6.64V
in4: +12V                               0V - 16V
in5: VTR        (+3.3V standby)         0V - 4.38V
in6: Vbat       (+3.0V)                 0V - 4.38V

SCH5027

in0: +5VTR      (+5V standby)           0V - 6.64V
in1: Vccp       (processor core)        0V - 3V
in2: VCC        (internal +3.3V)        0V - 4.38V
in3: V2_IN                              0V - 1.5V
in4: V1_IN                              0V - 1.5V
in5: VTR        (+3.3V standby)         0V - 4.38V
in6: Vbat       (+3.0V)                 0V - 4.38V

SCH5127

in0: +2.5                               0V - 3.32V
in1: Vccp       (processor core)        0V - 3V
in2: VCC        (internal +3.3V)        0V - 4.38V
in3: V2_IN                              0V - 1.5V
in4: V1_IN                              0V - 1.5V
in5: VTR        (+3.3V standby)         0V - 4.38V
in6: Vbat       (+3.0V)                 0V - 4.38V
in7: Vtrip      (+1.5V)                 0V - 1.99V

每个电压输入都有相关的最小值和最大值限制,当超出限制时会触发警报。

温度监控

温度以 12 位分辨率测量,并以千分度摄氏度报告。该芯片还具有所有 3 个温度输入的偏移量,在编程后,这些偏移量会添加到输入读数中。该芯片本身完成所有定标,因此驱动程序报告的温度是真实的,不需要任何用户空间调整。温度输入映射如下(最后一列表示输入范围)

temp1: Remote diode 1 (3904 type) temperature   -127C - +127C
temp2: DME1737 internal temperature             -127C - +127C
temp3: Remote diode 2 (3904 type) temperature   -127C - +127C

每个温度输入都有相关的最小值和最大值限制,当超出限制时会触发警报。此外,每个温度输入都有一个故障属性,当检测到故障二极管或未连接的输入时,该属性返回 1,否则返回 0。

风扇监控

风扇转速以 16 位分辨率测量。该芯片为 6 个风扇转速计提供输入。所有 6 个输入都有一个相关的最小值限制,当超出限制时会触发警报。风扇输入 1-4 提供类型属性,需要将其设置为所连接转速计产生的每转脉冲数。支持的值为 1、2 和 4。风扇输入 5-6 仅支持每转产生 2 个脉冲的风扇。风扇输入 5-6 还提供一个最大值属性,需要将其设置为输入的最大可达转速(风扇在 100% 占空比下的转速)。芯片会根据此值调整采样率。

PWM 输出控制

此芯片具有 5 个 PWM 输出。PWM 输出 1-3 与风扇输入 1-3 相关联,PWM 输出 5-6 与风扇输入 5-6 相关联。可以通过设置相应的启用属性来将 PWM 输出 1-3 配置为手动或自动模式。PWM 输出 5-6 只能在手动模式下运行,因此它们的启用属性是只读的。当设置为手动模式时,通过将占空比值写入相应的 PWM 属性来设置风扇速度。在自动模式下,PWM 属性返回芯片中风扇控制器设置的当前占空比。所有 PWM 输出都支持通过 freq 属性设置输出频率。

在自动模式下,该芯片支持设置 PWM 斜率,该斜率定义了 PWM 输出响应相关温度输入变化的速度。通过温度区域将 PWM 输出与温度输入关联。该芯片具有 3 个区域,其与温度输入的分配是静态的,并在初始化期间确定。这些分配可以通过 zone[1-3]_auto_channels_temp 属性检索。每个 PWM 输出通过 pwm[1-3]_auto_channels_zone 属性分配给一个(或多个中最热的)温度区域。每个 PWM 输出都有 3 个不同的输出占空比:满速、低速和最小。满速在内部硬连线到 255 (100%),低速和最小可以通过 pwm[1-3]_auto_point1_pwm 和 pwm[1-3]_auto_pwm_min 分别进行编程。区域的热阈值通过 zone[1-3]_auto_point[1-3]_temp 和 zone[1-3]_auto_point1_temp_hyst 进行编程。

pwm[1-3]_auto_point2_pwm

全速占空比 (255, 即 100%)

pwm[1-3]_auto_point1_pwm

低速占空比

pwm[1-3]_auto_pwm_min

最小速度占空比

zone[1-3]_auto_point3_temp

全速温度(所有输出)

zone[1-3]_auto_point2_temp

全速温度

zone[1-3]_auto_point1_temp

低速温度

zone[1-3]_auto_point1_temp_hyst

最小速度温度

如果相关区域的温度介于 auto_point1_temp 和 auto_point2_temp 之间,则芯片会在 auto_point1_pwm 到 auto_point2_pwm 的范围内线性调整输出占空比。如果温度降至 auto_point1_temp_hyst 值以下,则输出占空比设置为 auto_pwm_min 值,该值仅支持两个值:0 或 auto_point1_pwm。这意味着风扇要么完全关闭,要么以低速占空比继续旋转。如果任何温度升高到 auto_point3_temp 值以上,则所有 PWM 输出都设置为 100% 占空比。

以下是芯片如何根据相关热区域的温度设置输出占空比的另一种表示形式

温度

占空比上升温度

占空比下降温度

全速

全速

全速

< 线性调整的占空比 >

低速

低速

低速

最小速度

低速

最小速度

最小速度

最小速度

最小速度

最小速度

Sysfs 属性

以下是驱动程序提供的所有 sysfs 属性的列表、它们的权限和简短描述

名称

权限

描述

cpu0_vid

只读

CPU 内核参考电压,单位为毫伏。

vrm

读写

电压调节器模块版本号。

in[0-7]_input

只读

测量的电压,单位为毫伏。

in[0-7]_min

读写

电压输入的低限。

in[0-7]_max

读写

电压输入的高限。

in[0-7]_alarm

只读

电压输入警报。如果电压输入处于或超出相关的最小-最大范围,则返回 1,否则返回 0。

temp[1-3]_input

只读

测量的温度,单位为千分度摄氏度。

temp[1-3]_min

读写

温度输入的低限。

temp[1-3]_max

读写

温度输入的高限。

temp[1-3]_offset

读写

温度输入的偏移量。此值将由芯片添加到测量的温度中。

temp[1-3]_alarm

只读

温度输入的警报。如果温度输入处于或超出相关的最小-最大范围,则返回 1,否则返回 0。

temp[1-3]_fault

只读

温度输入故障。如果芯片检测到故障的热二极管或未连接的温度输入,则返回 1,否则返回 0。

zone[1-3]_auto_channels_temp

只读

温度区域到温度输入的映射。此属性是一个位字段,支持以下值

  • 1: temp1

  • 2: temp2

  • 4: temp3

zone[1-3]_auto_point1_temp_hyst

读写

自动 PWM 温度点 1 滞后。如果温度降至 auto_point1_temp_hyst 值以下,则将相应 PWM 的输出设置为 pwm_auto_min 值。

zone[1-3]_auto_point[1-3]_temp

读写

自动 PWM 温度点。Auto_point1 是低速温度,auto_point2 是全速温度,auto_point3 是所有 PWM 输出都设置为全速(100% 占空比)时的温度。

fan[1-6]_input

只读

测量的风扇转速,单位为 RPM。

fan[1-6]_min

读写

风扇输入的下限值。

fan[1-6]_alarm

只读

风扇输入报警。如果风扇输入等于或低于相关的最小值,则返回 1,否则返回 0。

fan[1-4]_type

读写

连接的风扇类型。以风扇每转产生的脉冲数表示。支持的值为 1、2 和 4。

fan[5-6]_max

读写

在 100% 占空比下的最大可达 RPM。芯片需要此值来相应地调整采样率。

pmw[1-3,5-6]

只读/读写

PWM 输出的占空比。支持的值为 0-255 (0%-100%)。只有当相关的 PWM 处于手动模式时,才可写入。

pwm[1-3]_enable

读写

PWM 输出 1-3 的使能。支持的值为

  • 0:关闭(输出 @ 100%)

  • 1:手动模式

  • 2:自动模式

pwm[5-6]_enable

只读

PWM 输出 5-6 的使能。始终返回 1,因为这两个输出硬连接到手动模式。

pmw[1-3,5-6]_freq

读写

PWM 输出的频率。支持的值范围为 11Hz-30000Hz(默认值为 25000Hz)。

pmw[1-3]_ramp_rate

读写

PWM 输出的斜率速率。确定当 PWM 处于自动模式时,PWM 占空比变化的快慢。以每 PWM 步长的毫秒数表示。支持的值范围为 0ms-206ms(默认值为 0,表示占空比立即变化)。

pwm[1-3]_auto_channels_zone

读写

PWM 输出到温度区域的映射。此属性为位域,支持以下值

  • 1:zone1

  • 2:zone2

  • 4:zone3

  • 6:zone[2-3] 中的最高值

  • 7:zone[1-3] 中的最高值

pwm[1-3]_auto_pwm_min

读写

自动 PWM 的最小占空比。最小 PWM 占空比。支持的值为 0 或 auto_point1_pwm。

pwm[1-3]_auto_point1_pwm

读写

自动 PWM 的 PWM 点。Auto_point1 是低速占空比。

pwm[1-3]_auto_point2_pwm

只读

自动 PWM 的 PWM 点。Auto_point2 是全速占空比,硬连接到 255(100% 占空比)。

芯片差异

特性

dme1737

sch311x

sch5027

sch5127

temp[1-3]_offset

vid

zone3

zone[1-3]_hyst

pwm min/off

fan3

可选

可选

pwm3

可选

可选

fan4

可选

可选

fan5

可选

可选

pwm5

可选

可选

fan6

可选

可选

pwm6

可选

可选

in7