我一直在尝试读取设备树中的子节点属性。 无法理解,任何人都可以帮忙。
我有一个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的特性?
答案 0 :(得分:1)
如果我理解正确,你必须使用for_each_child_of_node().
之类的东西
检查例如 drivers / input / keyboard / gpio_keys.c 和Documentation/devicetree/bindings/input/gpio-keys.txt。
答案 1 :(得分:0)
是的,你可以做到。只需编写如下的类似函数,并使用BB子节点的路径在AA中调用它。
例如,如果您需要访问BB / child_2属性,则从AA开始,然后将绝对路径传递给of_find_node_by_path()函数。
另外,检查内核中可能有用的函数系列。
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!
}
}
}