设备树:如何更改子设备节点的属性

问题描述 投票:0回答:1

我需要将驱动程序绑定到我的设备树条目。为此,我需要将设备ID属性从dma-channel @ 00000030设置为“1”

看来我无法覆盖这些子节点的属性。我怎样才能做到这一点?

此片段来自的pl.dtsi文件无法更改,因为它是自动生成的。它会在瞬间被覆盖。

我在这个问题之前做了什么

我试图覆盖它,而不仅仅是改变我需要的值。但是这种方法需要一个新的节点名称,直到dma驱动程序想要将自己绑定到节点。然后它失败,因为虚拟文件系统条目已经存在。因此第一个问题。我怎样才能否定孩子节点的属性呢?

[    0.207961] sysfs: cannot create duplicate filename '/bus/platform/devices/a0000000.dma'

目标是加载基于社区的axidma内核驱动程序。

axidma_dma.c: axidma_request_channels: 651: Unable to get slave channel 0: tx_channel.

根据github repository中的问题页面,它表示两件事之一:未找到驱动程序或驱动程序正在使用中。它必须是我的第一个。我现在的假设是节点名称应该在设备树中保持不变,因此axidma驱动程序会找到它。 。

自动生成dtsi文件

...我想在主文件system-top.dts中修改

amba_pl: amba_pl@0 {
    #address-cells = <2>;
    #size-cells = <2>;
    compatible = "simple-bus";
    ranges ;
    axi_dma_0: dma@a0000000 {
        #dma-cells = <1>;
        clock-names = "s_axi_lite_aclk", "m_axi_sg_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk";
        clocks = <&clk 71>, <&clk 71>, <&clk 71>, <&clk 71>;
        compatible = "xlnx,axi-dma-1.00.a";
        interrupt-names = "mm2s_introut", "s2mm_introut";
        interrupt-parent = <&gic>;
        interrupts = <0 89 4 0 90 4>;
        reg = <0x0 0xa0000000 0x0 0x1000>;
        xlnx,addrwidth = <0x40>;
        xlnx,include-sg ;
        xlnx,sg-length-width = <0x1a>;
        dma-channel@a0000000 {
            compatible = "xlnx,axi-dma-mm2s-channel";
            dma-channels = <0x1>;
            interrupts = <0 89 4>;
            xlnx,datawidth = <0x20>;
            xlnx,device-id = <0x0>;
            xlnx,include-dre ;
        };
        dma-channel@a0000030 {
            compatible = "xlnx,axi-dma-s2mm-channel";
            dma-channels = <0x1>;
            interrupts = <0 90 4>;
            xlnx,datawidth = <0x20>;
            xlnx,device-id = <0x0>;
            xlnx,include-dre ;
        };
    };
};
embedded-linux xilinx device-tree
1个回答
0
投票

感谢@Ian Abbot的回答。

在主dts文件中的主块之后添加下一行时。 (在这种情况下:system-top.dts)您甚至可以覆盖子节点属性,即使子节点具有相同的标签。

您需要包含发生该条目的源文件。 (在这种情况下:pl.dtsi)

/dts-v1/;
/include/ "pl.dtsi"

\{
    main block where other magic stuff happens;
};

&axi_dma_0 {

    dma-channel@a0000030 {

         xlnx,device-id = <0x1>; 

     }; 
};
© www.soinside.com 2019 - 2024. All rights reserved.