设备树覆盖寄存器值

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

我有一个设备树,我想覆盖某些节点的注册表值。问题是我理解节点的名称必须与注册表值匹配。如何在不覆盖父节点的情况下更改该节点的 reg?

示例:

\{

parent_name : parent {
   n10 : node@10 {
       reg = <10>;
  };

   n100 : node@100 {
      reg = <100>;
   };
};

要覆盖

node@100
以获得不同的reg值,可以这样做吗:

&n100 {
  reg = <200>;
}

如果这样做,

node@100
的reg将是200,这不是规范所说的。

linux-device-driver device-tree
3个回答
0
投票

节点的名称必须与reg值匹配

正确,设备树规范确实提到了这个要求。

您不应尝试“重新定义”reg 属性,这会造成差异。
相反,您可以使用正确的节点名称和单元地址创建一个全新的节点。

您可以使用删除旧节点

/delete-node/ node@100;

/delete-node/ &n100;

请注意,

/delete-node/
是对DT编译器的指令,而不是某种注释
有关更多详细信息,请参阅未记录的设备树源


0
投票

我实际上认为在这种情况下删除节点并不是正确的做法。 如果只是需要覆盖 reg 属性。

在这种情况下,你会得到类似的东西:

&n100 {
   /delete-property/ reg;
   reg = <200>;
};

/delete-xxx/
语法仅在调用设备树编译器时才有效(即在 dtsi/dts 中)。 它不适用于叠加。


0
投票

实际上,对我有用的是做这样的事情(基于你的问题示例):

&{/} {
    n100 {
        reg = <200>;
    };
};

然后,使用

/
指定对
&{/}
节点的引用,然后覆盖所需的任何内容。

我找不到任何文档来支持我(因为我很着急),但是我在 Linux-imx 内核的一些覆盖层中找到了一些示例

如果您未登录 GitHub,请单击 here 获取结果之一

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