用作设备树节点名称时,phandle的含义是什么?

时间:2015-06-28 03:45:26

标签: linux-kernel arm linux-device-driver device-tree

此代码段来自RIoTBoard的设备树(/arch/arm/boot/dts/imx6dl-riotboard.dts

&hdmi {
         ddc-i2c-bus = <&i2c2>;
         status = "okay";
};

我已经浏览了devicetree.org和linux内核的documentation / devicetree文件夹中的设备树文档,但是当用作节点名称时,我无法找到任何关于phandle含义的描述。 / p>

3 个答案:

答案 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>;
}