此代码段来自RIoTBoard的设备树(/arch/arm/boot/dts/imx6dl-riotboard.dts
)
&hdmi {
ddc-i2c-bus = <&i2c2>;
status = "okay";
};
我已经浏览了devicetree.org和linux内核的documentation / devicetree文件夹中的设备树文档,但是当用作节点名称时,我无法找到任何关于phandle含义的描述。 / p>
答案 0 :(得分:4)
您可以将phandle理解为节点的某种指针,该指针指向该节点的定义,该节点保存在同一文件或另一个文件中。 我可以通过AM33xx SoC的以下链接解释phandle概念 时钟档案:
http://lxr.free-electrons.com/source/arch/arm/boot/dts/am33xx-clocks.dtsi
以下是看门狗的功能时钟:
wdt1_fck: wdt1_fck {
#clock-cells = <0>;
compatible = "ti,mux-clock";
clocks = <&clk_rc32k_ck>, <&clkdiv32k_ick>;
reg = <0x0538>;
};
现在wdt1_fck有两个父时钟源:clk_rc32k_ck和clkdiv32k_ick
这些是幻影,或者你可以指出它们的时钟定义:
clk_rc32k_ck: clk_rc32k_ck {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <32000>;
};
clkdiv32k_ick: clkdiv32k_ick {
#clock-cells = <0>;
compatible = "ti,gate-clock";
clocks = <&clkdiv32k_ck>;
ti,bit-shift = <1>;
reg = <0x014c>;
};
因此,phandle基本上可以使用文件中节点的定义。
答案 1 :(得分:1)
我认为问题更多的是关于示例的&hdmi
部分,特别是对节点名称使用&
引用。设备树文件中的&
有两个含义:一个用于数组中的项目,另一个用于数组外的项目。
在数组中,&
引用将扩展为一个phandle。
在arry之外,&
引用将扩展到您引用的节点的路径。
更多信息请点击此处:
https://elinux.org/Device_Tree_Mysteries#Labels https://elinux.org/Device_Tree_Mysteries#Label_as_a_phandle_vs_Label_as_a_path
答案 2 :(得分:1)
我将举一个例子:
label:node {
#address-cell = <1>;
#size-cells = <0>;
}
&label {
proporties = <2>;
};
手段:
label:node {
#address-cell = <1>;
#size-cells = <0>;
proporties = <2>;
}