内核驱动 dme1737

支持的芯片

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

    前缀:“dme1737”

    扫描地址:I2C 0x2c、0x2d、0x2e

    数据手册:由 SMSC 应要求并在 NDA 下提供

  • SMSC SCH3112、SCH3114、SCH3116

    前缀:“sch311x”

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

    数据手册:可在 Internet 上获取

  • 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。

风扇监控

风扇 RPM 以 16 位分辨率测量。 该芯片提供 6 个风扇转速计的输入。 所有 6 个输入都有一个相关的最小限制,当超过该限制时会触发警报。 风扇输入 1-4 提供类型属性,需要将其设置为连接的转速计产生的每次风扇转数的脉冲数。 支持的值为 1、2 和 4。风扇输入 5-6 仅支持产生每次转数 2 个脉冲的风扇。 风扇输入 5-6 还提供一个最大属性,需要将其设置为输入的最大可达 RPM(风扇在 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 个不同的输出占空比:full、low 和 min。 Full 在内部硬连线到 255 (100%),可以通过 pwm[1-3]_auto_point1_pwm 和 pwm[1-3]_auto_pwm_min 分别对 low 和 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

RO

以毫伏为单位的 CPU 核心参考电压。

vrm

RW

电压调节器模块版本号。

in[0-7]_input

RO

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

in[0-7]_min

RW

电压输入的下限。

in[0-7]_max

RW

电压输入的上限。

in[0-7]_alarm

RO

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

temp[1-3]_input

RO

以毫摄氏度为单位测量的温度。

temp[1-3]_min

RW

温度输入的下限。

temp[1-3]_max

RW

温度输入的上限。

temp[1-3]_offset

RW

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

temp[1-3]_alarm

RO

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

temp[1-3]_fault

RO

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

zone[1-3]_auto_channels_temp

RO

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

  • 1:temp1

  • 2:temp2

  • 4:temp3

zone[1-3]_auto_point1_temp_hyst

RW

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

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

RW

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

fan[1-6]_input

RO

以 RPM 为单位测量的风扇速度。

fan[1-6]_min

RW

风扇输入的下限。

fan[1-6]_alarm

RO

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

fan[1-4]_type

RW

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

fan[5-6]_max

RW

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

pmw[1-3,5-6]

RO/RW

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

pwm[1-3]_enable

RW

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

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

  • 1:手动模式

  • 2:自动模式

pwm[5-6]_enable

RO

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

pmw[1-3,5-6]_freq

RW

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

pmw[1-3]_ramp_rate

RW

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

pwm[1-3]_auto_channels_zone

RW

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

  • 1:zone1

  • 2:zone2

  • 4:zone3

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

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

pwm[1-3]_auto_pwm_min

RW

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

pwm[1-3]_auto_point1_pwm

RW

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

pwm[1-3]_auto_point2_pwm

RO

自动 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