Device Tree 映射与状态选择
1. Consumer语法
1 | device@... { |
索引必须与 names一致;pinctrl-0可包含多个 group phandle。
2. Rockchip group
1 | uart2m0_xfer: uart2m0-xfer { |
四元组:
- bank;
- bank内 pin;
- mux function编码;
- pin config node phandle。
3. 解析
1 | pinctrl_get |
Rockchip driver动态从 DT group建立 group/function描述。
4. Hog
Controller子节点可声明 pinctrl-hog,在 controller enable时立即选中,用于无 consumer device但需固定 pad状态的 pins。
5. Empty state
可用空 pinctrl-0表达存在但无设置的 state,Core支持 dummy state。不要用不存在属性和空属性表达不同意图而未验证 driver行为。
6. Inheritance
DTS include/overlay会合并或覆盖 properties。最终运行 DTB才是事实;同一节点后面的 pinctrl-0覆盖前值,可能丢失原 group。
7. Binding问题
本树 binding限定 mux最大10,但 RK3588 pinctrl数据包含 11/12。dtbs_check可能报 schema错误,这属于本厂商树 binding滞后,硬件 mux编码仍需按 TRM和 driver验证。
8. 验证
1 | dtc -I fs -O dts /sys/firmware/devicetree/base > running.dts |
Phandle在反编译后通常变成数字,结合 symbols或源 DTS定位。
正在加载留言…