Simple PM Bus 与 OF 子设备枚举

Simple PM Bus 与 OF 子设备枚举

1. 用途

simple-pm-bus.c处理“本身几乎透明,但子设备访问前必须给父域上电”的DT容器。它不定义新的bus_type,children仍是platform devices。

2. Match表

1
2
3
4
5
simple-pm-bus   -> 真正执行PM与populate
simple-bus -> 仅保护性匹配
simple-mfd -> 仅保护性匹配
isa -> 仅保护性匹配
arm,amba-bus -> 仅保护性匹配

后四项带ONLY_BUS标记。它们通常已由OF Core自动populate;驱动只在自身compatible是节点最具体匹配时返回0,否则返回-ENODEV,避免抢占有专用driver的设备。

3. Probe

真正simple-pm-bus路径:

1
2
3
simple_pm_bus_probe
-> pm_runtime_enable(parent)
-> of_platform_populate(parent node, parent device)

可通过platform data传入of_dev_auxdata,给特定child补legacy name/data。

驱动不直接:

  • 获取clock;
  • 控制reset;
  • 调用runtime get;
  • 编程寄存器;
  • 建立独立地址转换。

电源资源由通用PM domain/clock等device links与父子关系协作。

4. Driver Override

如果用户通过driver_override强制绑定透明bus节点,probe立即返回0,不执行runtime PM或populate。这是调试逃生口,不能视为正常DT绑定方式。

5. Remove

remove只调用pm_runtime_disable()。OF创建的children通常由platform/OF生命周期处理;驱动本身没有显式of_platform_depopulate()

因此不适合被频繁动态unbind。若父driver解除而children仍存在,必须确保平台Core的设备移除顺序不会让child访问失去管理的父资源。

6. Runtime PM语义

pm_runtime_enable()仅启用框架,不等于立即上电或自动对每次child I/O计数。实际效果依赖:

  • 父节点是否挂genpd;
  • child和parent的runtime PM关系;
  • child driver是否正确get/put;
  • clock是否由runtime PM callback管理。

若只写compatible = "simple-pm-bus"但没有有效PM资源,驱动主要只承担child populate。

7. DT示意

1
2
3
4
5
6
7
8
9
10
11
12
domain-bus {
compatible = "vendor,specific-domain", "simple-pm-bus";
power-domains = <&pd X>;
#address-cells = <1>;
#size-cells = <1>;
ranges;

device@1000 {
compatible = "vendor,device";
reg = <0x1000 0x100>;
};
};

vendor,specific-domain有专用driver,simple-pm-bus不会越过更具体匹配抢占。

8. RK3588

在本树rk3588*.dts*中未发现simple-pm-bus compatible。大量普通simple-bus层次由OF平台枚举机制处理,并不意味着绑定了本驱动。

RK3588多数功能域通过rockchip,rk3588-power-controller及子设备power-domains引用管理,不依赖本文件建立总线。

9. 排障

1
2
3
ls /sys/bus/platform/drivers/simple-pm-bus
readlink /sys/bus/platform/devices/<node>/driver
cat /sys/bus/platform/devices/<node>/power/runtime_status

child未probe时先分辨:

  1. child platform device是否创建;
  2. compatible是否匹配child driver;
  3. 父genpd是否可用;
  4. 专用父driver是否抢占;
  5. 是否因父probe失败而未populate。

文章互动

阅读 --

留言

0 条留言

正在加载留言…