引用另一个文件中没有标签的预定义设备树节点

时间:2018-01-31 23:10:43

标签: linux embedded-linux device-tree

您好我有一个看起来像这样的设备树。我需要在包含此设备树的另一个文件中引用dma @ 40400000节点。在此设备树中,dma @ 40400000节点没有标签。

设备tree1.dtsi

/dts-v1/;
/ {
    amba_pl {
    #address-cells = <0x1>;
    #size-cells = <0x1>;
    compatible = "simple-bus";
    ranges;

    dma@40400000 {
        #dma-cells = <0x1>;
        clock-names = "s_axi_lite_aclk", "m_axi_sg_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk";
        clocks = <0x1 0xf 0x1 0xf 0x1 0xf 0x1 0xf>;
        compatible = "xlnx,axi-dma-1.00.a";
        interrupt-parent = <0x4>;
        interrupts = <0x0 0x1d 0x4 0x0 0x1e 0x4>;
        reg = <0x40400000 0x10000>;
        xlnx,addrwidth = <0x20>;

        dma-channel@40400000 {
            compatible = "xlnx,axi-dma-mm2s-channel";
            dma-channels = <0x1>;
            interrupts = <0x0 0x1d 0x4>;
            xlnx,datawidth = <0x20>;
            xlnx,device-id = <0x0>;
        };

        dma-channel@40400030 {
            compatible = "xlnx,axi-dma-s2mm-channel";
            dma-channels = <0x1>;
            interrupts = <0x0 0x1e 0x4>;
            xlnx,datawidth = <0x20>;
            xlnx,device-id = <0x0>;
        };
    };
};
};

我想重新定义它或者可选地重新定义amba_pl节点,以便节点dma @ 40400000不会被更改但是有一个标签axi_dma

设备tree2.dtsi

/include/ "device-tree1.dtsi"
/ {
&amba_pl {  
        axi_dma: dma@40400000 {
            #dma-cells = <0x1>;
            clock-names = "s_axi_lite_aclk", "m_axi_sg_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk";
            clocks = <0x1 0xf 0x1 0xf 0x1 0xf 0x1 0xf>;
            compatible = "xlnx,axi-dma-1.00.a";
            interrupt-parent = <0x4>;
            interrupts = <0x0 0x1d 0x4 0x0 0x1e 0x4>;
            reg = <0x40400000 0x10000>;
            xlnx,addrwidth = <0x20>;

            dma-channel@40400000 {
                compatible = "xlnx,axi-dma-mm2s-channel";
                dma-channels = <0x1>;
                interrupts = <0x0 0x1d 0x4>;
                xlnx,datawidth = <0x20>;
                xlnx,device-id = <0x0>;
            };

            dma-channel@40400030 {
                compatible = "xlnx,axi-dma-s2mm-channel";
                dma-channels = <0x1>;
                interrupts = <0x0 0x1e 0x4>;
                xlnx,datawidth = <0x20>;
                xlnx,device-id = <0x0>;
            };
        };
    };
};

但是,当我尝试从device-tree2.dtsi中的device-tree1.dtsi重新定义amba_pl时,编译器无法解析设备树。如何从device-tree1.dtsi?

向节点dma @ 40400000添加标签

更新

仔细阅读规范后,我想重新提出问题。 如何将phandle添加到不同dtsi文件中包含的节点或引用没有pha​​ndle的节点?

1 个答案:

答案 0 :(得分:0)

你想做的事情是完全可能的(我只是测试它,以防万一)。如果您遇到编译器错误,我的猜测是存在语法错误。

继续之前的两个注意事项:1)也许你应该考虑更新你的问题,显示完整的dtc编译器错误。 2)记住@sawdust关于两个文件的评论是.dtsi后缀。

现在,关于你的错误。我只是在猜测,但似乎你的混合动作是“全路径”参考。

你粘贴的dtsi,这是错误的

/include/ "device-tree1.dtsi"
/ {
    &amba_pl { /* wrong, amba_pl is not a phandle, can't use & */
        axi_dma: dma@40400000 {
        /* properties here */

        dma-channel@40400000 {
          /* blah */
        };
      };
    };
};

正确

/include/ "device-tree1.dtsi"
/ {
    amba_pl {
        axi_dma: dma@40400000 {

            /* properties here */

            dma-channel@40400000 {
                /* blah */
            };
        };
    };
};