2015-01-05 66 views
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性的判定什麼辦法?

回答

1

如果我理解正確,你必須使用類似for_each_child_of_node()。 檢查drivers/input/keyboard/gpio_keys.c和Documentation/devicetree/bindings/input/gpio-keys.txt。

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! 
     }                   
    }                    
} 
相關問題