【问题标题】:linux kernel-device tree-pass data from parent to childlinux kernel-device tree-pass数据从父级到子级
【发布时间】:2015-09-25 12:39:31
【问题描述】:

我有兴趣将一些数据(在运行时动态创建)从父节点传递到设备树中的子节点。例如,我在设备树中有以下条目:

parent_node {
    a-string-property = "A string";
    a-string-list-property = "first string", "second string";
    a-byte-data-property = [0x01 0x23 0x34 0x56];
    child-node1 {
        first-child-property;
        second-child-property = <1>;
        a-string-property = "Hello, world";
    };
    child-node2 {
      some_data ;
    };
};

据我所知,您无法在运行时创建/更新设备树节点的属性(对吗?)。

那么是否有任何一种机制可以在父节点和子节点之间传递数据(可能通过struct bus_typestruct devicestruct device_driver)?

此数据传递的最终目的是为设备的内存映射(子节点)的地址转换提供偏移量。

【问题讨论】:

  • 你有“父节点和子节点之间传递数据”的例子吗?
  • 如果我有例子,我不会问:)
  • “将数据从父母传递给孩子”太模糊了。有很多方法可以传递数据。你能更具体一点吗?你在说什么子系统(时钟,声音,......)?请描述用例。

标签: c linux device-tree


【解决方案1】:

您不能在运行时创建/更新设备树节点的属性(正确吗?)。

在某些平台上,设备树可以在运行时进行操作。 见CONFIG_OF_DYNAMIC配置项。

Here 是关于动态 dt 的演示文稿。

平台 sparcpowerpc seem to have 为此目的提供以下功能:

int of_set_property(struct device_node *dp, const char *name, void *val, int len)

【讨论】:

  • 你是对的-sparc架构确实有这个功能,不确定power pc。但是,不幸的是,我的架构是ARM,因此这条路径是无关紧要的。任何人都可以提出一些涉及一些总线结构的东西(只是一个演练就可以了,不需要代码:))
猜你喜欢
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 2019-08-28
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
相关资源
最近更新 更多