内核驱动 bt1-pvt

支持的芯片

  • Baikal-T1 PVT 传感器(在 SoC 中)

    前缀: 'bt1-pvt'

    扫描地址: -

    数据手册:由 BAIKAL ELECTRONICS 应要求提供,并受 NDA 约束

作者

Maxim Kaurkin <maxim.kaurkin@baikalelectronics.ru> Serge Semin <Sergey.Semin@baikalelectronics.ru>

描述

此驱动程序实现对嵌入 Baikal-T1 处理器中的硬件监控功能的支持,包括电压和温度传感器。PVT IP 核由一个温度传感器和四个电压传感器组成,可以用来监控芯片内部环境,如发热、供电电压和晶体管性能。该驱动程序可以选择性地为 PVT 控制器支持的每个传感器提供 hwmon 报警。由于硬件接口实现的特殊性,报警功能是编译时可配置的,这与一次只能转换来自一个传感器的数据的能力有关。另一个限制是控制器在数据转换过程中同步执行阈值检查。因此,为了自动检测 hwmon 报警,驱动程序代码必须从一个传感器切换到另一个传感器,读取转换后的数据并手动检查阈值状态位。根据测量超时设置(update_interval sysfs 节点值),此设计可能会给系统性能带来额外负担。因此,如果系统设计中不需要报警,建议禁用它们,以防止 PVT IRQ 定期被触发以使数据缓存/报警状态保持最新。默认情况下,在无报警配置中,当通过相应的 _input 文件请求读取操作时,驱动程序按需执行数据转换。

温度监控

温度以 10 位分辨率测量,并以毫摄氏度报告。驱动程序本身执行所有缩放,因此报告的真实温度不需要任何用户空间调整。虽然数据转换公式不是线性的,这导致非线性离散性,但它接近于 1,但在较高温度下提供了更好的精度。温度输入映射如下(最后一列表示输入范围)

temp1: CPU embedded diode       -48.38C - +147.438C

如果在驱动程序中启用了报警内核配置,则温度输入具有关联的最小和最大限制,当超出限制时会触发报警。

电压监控

电压输入也以 10 位分辨率采样,并以毫伏报告。但在这种情况下,数据转换公式是线性的,这提供了恒定的测量离散性。数据缩放也由驱动程序执行,因此返回真实的毫伏值。电压输入映射如下(最后一列表示输入范围)

in0: VDD                (processor core)                0.62V - 1.168V
in1: Low-Vt             (low voltage threshold)         0.62V - 1.168V
in2: High-Vt            (high voltage threshold)        0.62V - 1.168V
in3: Standard-Vt        (standard voltage threshold)    0.62V - 1.168V

如果在驱动程序中启用了报警配置,则电压输入具有关联的最小和最大限制,当超出限制时会触发报警。

Sysfs 属性

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

名称

权限

描述

update_interval

RW

每个传感器的测量更新间隔。

temp1_type

RO

传感器类型(始终为 1,表示 CPU 嵌入式二极管)。

temp1_label

RO

CPU 核心温度传感器。

temp1_input

RO

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

temp1_min

RW

温度输入的下限。

temp1_max

RW

温度输入的上限。

temp1_min_alarm

RO

温度输入报警。如果温度输入低于下限则返回 1,否则返回 0。

temp1_max_alarm

RO

温度输入报警。如果温度输入高于上限则返回 1,否则返回 0。

temp1_offset

RW

以毫摄氏度为单位的温度偏移量,由芯片添加到温度读数中。它可用于在 7.130 摄氏度范围内手动调整温度测量值。

in[0-3]_label

RO

CPU 电压传感器(可以是核心或低/高/标准阈值)。

in[0-3]_input

RO

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

in[0-3]_min

RW

电压输入的下限。

in[0-3]_max

RW

电压输入的上限。

in[0-3]_min_alarm

RO

电压输入报警。如果电压输入低于下限则返回 1,否则返回 0。

in[0-3]_max_alarm

RO

电压输入报警。如果电压输入高于上限则返回 1,否则返回 0。