HWMON 子系统架构与源码总览

HWMON 子系统架构与源码总览

1. 定位

HWMON 为温度、电压、电流、功率、能量、湿度、风扇、PWM 和机箱入侵传感器提供统一 sysfs ABI。

1
2
3
4
5
6
7
8
9
lm-sensors / monitoring daemon
|
/sys/class/hwmon/hwmonN/
|
HWMON Core (hwmon.c)
|
native driver / PMBus / IIO bridge / firmware
|
I2C/SMBus / SPI / MMIO / PCI / USB-HID / mailbox

2. Core

hwmon.c 注册 class "hwmon",每个监控设备获得动态 hwmonN。主要对象:

  • hwmon_device
  • hwmon_chip_info
  • hwmon_channel_info
  • hwmon_ops
  • 自动生成的 hwmon_device_attribute

3. 传感器类型

1
2
3
4
5
6
7
8
9
10
hwmon_chip
hwmon_temp
hwmon_in
hwmon_curr
hwmon_power
hwmon_energy
hwmon_humidity
hwmon_fan
hwmon_pwm
hwmon_intrusion

每种类型有标准属性位,例如 HWMON_T_INPUTHWMON_F_INPUTHWMON_PWM_INPUT

4. 现代注册

1
2
3
4
5
6
7
8
bus/platform probe
-> allocate private data
-> initialize regmap/hardware
-> define hwmon_ops
-> define HWMON_CHANNEL_INFO(...)
-> devm_hwmon_device_register_with_info()
-> Core asks is_visible()
-> generate standard sysfs attributes

5. 读取

1
2
3
4
5
6
cat temp1_input
-> sysfs show
-> hwmon_attr_show()
-> chip->ops->read(dev, hwmon_temp, hwmon_temp_input, channel, &val)
-> driver reads/cache/converts register
-> decimal integer + newline

写阈值/PWM同理由 write() 完成。

6. 标准 ABI

典型:

1
2
3
4
5
6
name
temp1_input / temp1_max / temp1_crit / temp1_alarm
in1_input / curr1_input / power1_input
fan1_input / fan1_min / fan1_alarm
pwm1 / pwm1_enable
humidity1_input

单位由 ABI 固定,不能由驱动自行选择。

7. Driver families

  • I2C/SMBus 温度/电力 sensor;
  • SPI temperature/ADC;
  • platform SoC PVT;
  • Super-I/O;
  • PMBus power controller;
  • firmware SCMI/SCPI;
  • IIO to hwmon bridge;
  • PWM/GPIO fan;
  • USB/HID 水冷和 PSU。

8. 与 Thermal 的边界

HWMON 面向观测、阈值和人工控制;Thermal 框架负责 thermal zone、trip、governor、cooling device。Core 可用 HWMON_C_REGISTER_TZ 将温度 channel 注册成 OF thermal sensor,但 RK3588 主 TSADC 直接由 drivers/thermal/rockchip_thermal.c 管理,不通过 drivers/hwmon

9. RK3588

实际重点:

  • SoC 温度:Rockchip TSADC / thermal zones;
  • 板级风扇:pwm-fan.c,同时暴露 hwmon 与 cooling device;
  • 外置 INA/LM75/PMBus 等:仅在板级 DTS 和 Kconfig 明确启用时存在;
  • IIO ADC 电压可经 iio_hwmon 暴露;
  • regulator voltage 不自动等于 hwmon voltage。

10. 版本事实

本目录约 272 个文件。大部分是跨平台驱动,源码存在不代表 RK3588 构建或板上有该芯片。分析必须同时核对 Kconfig、最终 .config、DTS compatible 和实际 I2C/SPI 设备。

文章互动

阅读 --

留言

0 条留言

正在加载留言…