0

我一直在尝试读取设备树中的子节点属性。想不通,这里有没有人可以帮忙?

我有一个 dts 文件

AA {
    child 1: {
            property 1 : XXX
            property 2 : XXX
    }
    child 2: {
            property 1 : XXX
            property 2 : XXX
    }
BB {
    child 1: {
            property 1 : XXX
            property 2 : XXX
    }
    child 2: {
            property 1 : XXX
            property 2 : XXX
    }

有没有办法读取给定 dts 的 AA 节点中子 2 的属性?

4

2 回答 2

3

是的,你可以做到。写一个类似下面的函数,用BB的子节点路径在AA中调用即可。

例如,如果您需要从 AA 访问 BB/child_2 属性,则将绝对路径传递给 of_find_node_by_path() 函数。

此外,检查内核中可能有用的 of_* 系列函数。

static void access_dt(void)                                                      
{                                                                                
    /* device node path - check it from /proc/device-tree/ */                    
    char *path = "/path/to/BB/child_2";                                            
    struct device_node *dt_node;                                                 
    const u8 *prop = NULL;                                                       
    int ret;                                                                     

    dt_node = of_find_node_by_path(path);                                        
    if (!dt_node) {                                                              
        printk(KERN_ERR "Failed to find node by path: %s.\n");                   
    } else {                                                                     
        printk(KERN_INFO "Found the node for %s.\n", path);                      
        prop = of_get_property(dt_node, "property 2", &ret);                      
        if(!prop) {
             //You are still in trouble!
        } else {
            //You have got property 2 of BB!
        }                                                                        
    }                                                                            
}
于 2016-12-02T09:07:34.463 回答
2

如果我理解正确,您必须使用for_each_child_of_node(). Check for example drivers/input/keyboard/gpio_keys.cDocumentation/devicetree/bindings/input/gpio-keys.txt 之类的东西

于 2015-01-07T21:51:06.083 回答