Kernel driver asc7621¶
支持的芯片
Andigilog aSC7621 和 aSC7621a
前缀: ‘asc7621’
扫描的地址: I2C 0x2c, 0x2d, 0x2e
- 作者
George Joseph
Dave Pivin @ Andigilog 提供的描述
Andigilog 拥有 Heceta-6 的 PECI 和 pre-PECI 版本,正如 Intel 所称。Heceta-6e 具有高频 PWM,而 Heceta-6p 添加了 PECI 和第 4 个热区。Andigilog aSC7611 是 Heceta-6e 部件,而 aSC7621 是 Heceta-6p 部件。它们都已批量生产,并运送给 Intel 及其子公司。
相对于 Intel 的主要规范,我们增强了这两个部件。第一个增强功能是温度读取分辨率。除了 Intel 指定的供应商范围之外,我们还在 20h 以下的寄存器中使用了供应商特定的功能。
我们的转换过程产生一个结果,该结果报告为两个字节。风扇速度控制使用这个更精细的值来产生“无级”风扇 PWM 输出。这两个字节是“读取锁定”的,以保证一旦读取高字节或低字节,另一个字节将被锁定,直到下次读取任何寄存器之后。因此,要获得原子读取,请读取高字节或低字节,然后紧接着的下一次读取应为相反的字节。我们的数据表表明分辨率为 10 位,尽管您可能会发现较低位处于活动状态,但它们不一定是可靠的或对外部有用的。我们选择不屏蔽它们。
我们采用了显著的滤波,用户可以对其进行调整,如数据表中所述。除了更高的分辨率温度报告之外,与竞争对手相比,我们的温度报告和风扇 PWM 输出非常平滑。更平滑的 PWM 输出不需要用户干预。
我们在之前的 VID 引脚上提供 GPIO 功能。这些是开漏输出或输入,可以用作通用 I/O 或基于温度限制的警报输出。这些在 19h 和 1Ah 中。
我们提供温度读数到热区的灵活映射。任何温度都可以映射到任何区域,该区域具有遵循 Intel 规范的默认分配。
由于存在一个风扇到区域的分配,允许一组区域中“较热”的区域控制单个风扇的 PWM,但没有向用户指示,因此我们添加了一个指示器,显示哪个区域当前正在控制给定风扇的 PWM。这在寄存器 00h 中。
可以为两个远程二极管温度读数提供一个偏移值,以便可以将报告的读数以及用于确定 PWM 的温度偏移以用于系统校准目的。
PECI 扩展配置允许每个 PECI 地址拥有两个以上的域,并且还为每个 PECI 地址提供了一个启用功能。可以使用我们灵活的区域分配将一个区域分配给最多 4 个 PECI 地址。这在默认的 Intel 配置中是不可能的。这在具有单个风扇的每个 CPU 上的多 CPU 系统中可能很有用,这将受益于单独的风扇控制。这在寄存器 0Eh 中。
转速计测量系统是灵活的,并且能够适应许多风扇类型。我们还可以支持脉冲拉伸 PWM,以便可以使用 3 线风扇。这些特性在寄存器 04h 到 07h 中。
最后,我们添加了一个转速禁用功能,该功能关闭单个转速计的转速测量系统,以节省电力。这在寄存器 75h 中。
aSC7621 产品描述¶
aSC7621 具有与 SMBus 2.0 兼容的两线数字接口。aSC7621 使用 10 位 ADC 测量两个远程二极管连接晶体管以及其自身芯片的温度。包括对平台环境控制接口 (PECI) 的支持。
利用来自这四个区域的温度信息,采用自动风扇速度控制算法,以在不同的操作负载下最大限度地减少声学影响,同时达到建议的 CPU 温度。
为了设置风扇速度,aSC7621 具有三个独立的脉冲宽度调制 (PWM) 输出,这些输出由一个或三个温度区域的组合控制。支持高频和低频 PWM 范围。
aSC7621 还包括一个数字滤波器,可以调用该滤波器来平滑温度读数,从而更好地控制风扇速度并最大限度地减少声学影响。
aSC7621 具有转速计输入,可以测量多达四个风扇的风扇速度。包括所有测量值的限制和状态寄存器,以警告系统主机任何测量值都超出通过状态寄存器编程的限制。
使用内部比例电阻器可以有效地监控 VCCP、2.5V、3.3V、5.0V 和 12V 主板电源的系统电压。
特性¶
支持 PECI 接口并监控内部和远程热二极管
2 线、符合 SMBus 2.0 的串行接口
10 位 ADC
监控 VCCP、2.5V、3.3V、5.0V 和 12V 主板/处理器电源
基于温度读数的可编程自主风扇控制
用于风扇速度控制的温度读数噪声滤波
0.25C 数字温度传感器分辨率
3 个 PWM 风扇速度控制输出,用于 2 线、3 线或 4 线风扇,以及最多 4 个风扇转速计输入
增强的测量温度到温度区域分配。
提供高频和低频 PWM 范围
3 个 GPIO 引脚,用于自定义使用
24 引脚 QSOP 封装
配置说明¶
除非下文另有说明,否则此驱动程序创建的 sysfs 条目遵循“sysfs-interface”中定义的标准。
- temp1_source
0
(默认) peci_legacy = 0, 远程 1 温度 peci_legacy = 1, PECI 处理器温度 0
1
远程 1 温度
2
远程 2 温度
3
内部温度
4
PECI 处理器温度 0
5
PECI 处理器温度 1
6
PECI 处理器温度 2
7
PECI 处理器温度 3
- temp2_source
0
(默认) 内部温度
1
远程 1 温度
2
远程 2 温度
3
内部温度
4
PECI 处理器温度 0
5
PECI 处理器温度 1
6
PECI 处理器温度 2
7
PECI 处理器温度 3
- temp3_source
0
(默认) 远程 2 温度
1
远程 1 温度
2
远程 2 温度
3
内部温度
4
PECI 处理器温度 0
5
PECI 处理器温度 1
6
PECI 处理器温度 2
7
PECI 处理器温度 3
- temp4_source
0
(默认) peci_legacy = 0, PECI 处理器温度 0 peci_legacy = 1, 远程 1 温度
1
远程 1 温度
2
远程 2 温度
3
内部温度
4
PECI 处理器温度 0
5
PECI 处理器温度 1
6
PECI 处理器温度 2
7
PECI 处理器温度 3
- temp[1-4]_smoothing_enable / temp[1-4]_smoothing_time
平滑由噪声引起的温度读数中的尖峰。有效值(以毫秒为单位)为
35000
17600
11800
7000
4400
3000
1600
800
- temp[1-4]_crit
当相应的区域温度达到此值时,所有 pwm 输出将变为 100%。
- temp[5-8]_input / temp[5-8]_enable
aSC7621 还可以读取处理器通过 PECI 总线提供的温度。通常,这些是“核心”温度,并且相对于自动热控制电路开始节流的点。这意味着这些通常是负数。
- pwm[1-3]_enable
0
风扇关闭。
1
风扇开启手动控制。
2
风扇开启自动控制,如果区域的温度低于最小值,将以最小 pwm 运行。
3
风扇开启自动控制,但如果区域的温度低于最小值,则将关闭。
4-254
忽略。
255
风扇全速运行。
- pwm[1-3]_auto_channels
sysctl-interface 中描述的位图,但有以下例外...
只有以下区域组合(及其对应的掩码)有效
1
2
3
2,3
1,2,3
4
1,2,3,4
特殊值
0
已禁用。
16
风扇开启手动控制。
31
风扇全速运行。
- pwm[1-3]_invert
设置后,反转 pwm[1-3] 的含义。即,当 pwm = 0 时,风扇将全速运行,当 pwm = 255 时,风扇将关闭。
- pwm[1-3]_freq
PWM 频率,单位为 Hz。有效值(以 Hz 为单位)为
10
15
23
30 (默认)
38
47
62
94
23000
24000
25000
26000
27000
28000
29000
30000
设置任何其他值将被忽略。
- peci_enable
启用或禁用 PECI
- peci_avg
输入滤波器平均时间。
0 0 秒(无平滑)(默认)
1 0.25 秒
2 0.5 秒
3 1.0 秒
4 2.0 秒
5 4.0 秒
6 8.0 秒
7 0.0 秒
- peci_legacy
0
标准模式(默认)远程二极管 1 读数与温度区域 1 相关联,PECI 与区域 4 相关联
1
传统模式 PECI 与温度区域 1 相关联,远程二极管 1 与区域 4 相关联
- peci_diode
二极管滤波器
0
0.25 秒
1
1.1 秒
2
2.4 秒 (默认)
3
3.4 秒
4
5.0 秒
5
6.8 秒
6
10.2 秒
7
16.4 秒
- peci_4domain
四域启用
0
已启用处理器的 1 或 2 个域(默认)
1
已启用处理器的 3 或 4 个域
- peci_domain
域
0
处理器包含单个域 (0)(默认)
1
处理器包含两个域 (0,1)