目录
Linux DTS(Device Tree Source)设备树详解之二(dts匹配及发挥作用的流程篇)
Dts中相关符号的含义
DTS中几个难理解的属性的解释
地址
中断
其他
DTS设备树描述文件中什么代表总线,什么代表设备
由DTS到device_register的过程
arch/arm/mach-xxx/xxx.c :
drivers/of/platform.c :
drivers/of/platform.c : of_platform_bus_create(bus, …)
3-2. drivers/of/platform.c :
查看挂载上的所有设备
请尊重原创版权,转载注明出处。
Linux DTS(Device Tree Source)设备树详解之二(dts匹配及发挥作用的流程篇)
一个dts文件确定一个项目,多个项目可以包含同一个dtsi文件。找到该项目对应的dts文件即找到了该设备树的根节点
kernel\arch\arm\boot\dts\qcom\sdm630-mtp.dts
/* Copyright © 2017, The Linux Foundation. All rights reserved.
*
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License version 2 and
- only version 2 as published by the Free Software Foundation.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
*/
/dts-v1/;
#include “sdm630.dtsi”
#include “sdm630-mtp.dtsi”
//#include “sdm660-external-codec.dtsi”
#include “sdm660-internal-codec.dtsi”
#include “synaptics-dsx-i2c.dtsi”
/ {
model = “Qualcomm Technologies, Inc. SDM 630 PM660 + PM660L MTP”;
compatible = “qcom,sdm630-mtp”, “qcom,sdm630”, “qcom,mtp”;
qcom,board-id = <8 0>;
qcom,pmic-id = <0x0001001b 0x0101011a 0x0 0x0>,
<0x0001001b 0x0201011a 0x0 0x0>;
};
&tavil_snd {
qcom,msm-mbhc-moist-cfg = <0>, <0>, <3>;
};
当然devicetree的根节点也是需要和板子进行匹配的,这个匹配信息存放在sbl(second boot loader)中, 对应dts文件中描述的board-id(上面代码中的qcom,board-id属性),通过共享内存传递给bootloader, 由bootloader将此board-id匹配dts文件(devicetree的根节点文件),将由dtc编译后的dts文件(dtb文件)加载到内存, 然后在kernel中展开dts树,并且挂载dts树上的所有设备。
(ps:cat /proc/cmdline 查看cmdline)
Dts中相关符号的含义
/ - 根节点
@ - 如果设备有地址,则由此符号指定
-
& - 引用节点
-
- 冒号前的label是为了方便引用给节点起的别名,此label一般使用为&label
, - 属性名称中可以包含逗号。如compatible属性的名字 组成方式为”[manufacturer], [mode