MTK6737平臺匹配裝置節點的方法
阿新 • • 發佈:2018-11-01
在DeviceTree中需要匹配裝置節點,才可以獲取某一個節點的引數資訊。
/** * of_find_compatible_node - 通過compatible屬性查詢指定節點 * @from - 指向開始路徑的節點,如果為NULL,則從根節點開始 * @type - device_type裝置型別,可以為NULL * @compat - 指向節點的compatible屬性的值(字串)的首地址 * 成功:得到節點的首地址;失敗:NULL */ struct device_node *of_find_compatible_node(struct device_node *from,const char *type, const char *compat);
/* 例如:由根裝置節點開始檢索一個名為"mediatek,ACCEL_GYRO_INT1-eint"裝置節點*/
irq_node = of_find_compatible_node(NULL, NULL, "mediatek,ACCEL_GYRO_INT1-eint");
還有一種方法:
/** * of_find_matching_node - 通過compatible屬性查詢指定節點 * @from - 指向開始路徑的節點,如果為NULL,則從根節點開始 * @matches - 指向裝置ID表,注意ID表必須以NULL結束 * 範例: const struct of_device_id mydemo_of_match[] = { { .compatible = "mediatek,mt6735-touch", }, {} }; * 成功:得到節點的首地址;失敗:NULL */ struct device_node *of_find_matching_node(struct device_node *from,const struct of_device_id *matches); 相對於上一個函式介面,這個便於使用of_device_id,因為其實匹配裝置的時候已經配置of_device_id了。
還有兩種方法是按路徑和節點名稱去檢索檢點的函式介面 /** * of_find_node_by_path - 通過路徑查詢指定節點 * @path - 帶全路徑的節點名,也可以是節點的別名 * 成功:得到節點的首地址;失敗:NULL */ struct device_node *of_find_node_by_path(const char *path); /** * of_find_node_by_name - 通過節點名查詢指定節點 * @from - 開始查詢節點,如果為NULL,則從根節點開始 * @name- 節點名 * 成功:得到節點的首地址;失敗:NULL */ struct device_node *of_find_node_by_name(struct device_node *from,const char *name);