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

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

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

最佳答案

您可以将 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

这些是 phandles 或者你可以说指向它们的时钟定义的指针:
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可以使用跨文件的节点定义。

关于linux-kernel - 当用作设备树节点名称时,phandle 的含义是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31095951/

10-12 16:37