内核驱动 asc7621¶
支持的芯片
Andigilog aSC7621 和 aSC7621a
前缀:‘asc7621’
扫描地址:I2C 0x2c、0x2d、0x2e
- 作者
George Joseph
描述由 Andigilog 的 Dave Pivin 提供
Andigilog 拥有 Heceta-6 的 PECI 和 pre-PECI 版本,正如 Intel 所称的那样。Heceta-6e 具有高频 PWM,而 Heceta-6p 添加了 PECI 和第 4 个温度区域。Andigilog aSC7611 是 Heceta-6e 的部件,而 aSC7621 是 Heceta-6p 的部件。它们都在批量生产中,运往英特尔及其子公司。
相对于英特尔的规范,我们增强了这两个部件。第一个增强是温度读取分辨率。除了英特尔指定的供应商范围内的寄存器外,我们还使用了 20h 以下的寄存器来实现供应商特定的功能。
我们的转换过程产生的结果以两个字节报告。风扇速度控制使用这个更精细的值来产生“无级”风扇 PWM 输出。这两个字节是“读取锁定的”,以确保一旦读取了高字节或低字节,另一个字节就会被锁定,直到下次读取任何寄存器后。因此,要获得原子读取,请读取高字节或低字节,然后紧接着的下一次读取应该是相反的字节。我们的数据手册指出有 10 位的分辨率,尽管您可能会发现低位是活动的,但它们不一定可靠或在外部有用。我们选择不屏蔽它们。
我们采用了显著的滤波功能,用户可以按照数据手册中的描述进行调整。与竞争对手相比,我们的温度报告和风扇 PWM 输出非常平滑,并且温度报告的分辨率更高。更平滑的 PWM 输出不需要用户干预。
我们在以前的 VID 引脚上提供 GPIO 功能。这些是开漏输出或输入,可用作通用 I/O 或基于温度限制的警报输出。它们位于 19h 和 1Ah。
我们提供了温度读数到温度区域的灵活映射。任何温度都可以映射到任何区域,该区域具有遵循英特尔规范的默认分配。
由于存在风扇到区域的分配,允许一组区域中“较热”的区域控制单个风扇的 PWM,但没有向用户指示,我们添加了一个指示器,显示哪个区域当前正在控制给定风扇的 PWM。它位于寄存器 00h 中。
可以为两个远程二极管温度读数都给定一个偏移值,以便可以偏移报告的读数以及用于确定 PWM 的温度,以进行系统校准。
PECI 扩展配置允许每个 PECI 地址拥有两个以上的域,并为每个 PECI 地址提供启用功能。可以使用我们灵活的区域分配将一个区域分配给最多 4 个 PECI 地址。在默认的英特尔配置中,这是不可能的。这在每个 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 个用于 2 线、3 线或 4 线风扇的 PWM 风扇速度控制输出,以及最多 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)