答案是:不需要转换,在platform_device中有一个成员struct device dev,这个dev中又有一个指针成员struct device_node *of_node,linux的做法就是将这个of_node指针直接指向由设备树转换而来的device_node结构。 例如,有这么一个struct platform_device* of_test.我们可以直接通过of_test->dev.of_node来访问设备树中的...
struct device_node *parent; /*父节点*/ struct device_node *child; /*子节点*/ struct device_node *sibling; /*节点的兄弟,即同级节点*/ #if defined(CONFIG_OF_KOBJ) struct kobject kobj; #endif unsigned long _flags; void *data; #if defined(CONFIG_SPARC) unsigned int unique_id; struct of...
答案是:不需要转换,在platform_device中有一个成员struct device dev,这个dev中又有一个指针成员struct device_node *of_node。 linux的做法就是将这个of_node指针直接指向由设备树转换而来的device_node结构;留给驱动开发者自行处理。 例如,有这么一个struct platform_device* of_test.我们可以直接通过of_test->dev...
对象代表一个设备。 struct device_node { const char *name; const char *type; phandle phandle; const char *full_name; struct fwnode_handle fwnode; struct property *properties; struct property *deadprops; /* removed properties */ struct device_node *parent; struct device_node *child; struct de...
关于节点转换的细节部分我们接着跟踪of_platform_device_create_pdata(bus, bus_id, platform_data, parent)函数,此时的参数platform_data为NULL。 staticstructplatform_device*of_platform_device_create_pdata(structdevice_node *np,constchar*bus_id,void*platform_data,structdevice *parent) ...
答案是:不需要转换,在platform_device中有一个成员struct device dev,这个dev中又有一个指针成员struct device_node *of_node。 linux的做法就是将这个of_node指针直接指向由设备树转换而来的device_node结构;留给驱动开发者自行处理。例如,有这么一个struct platform_device* of_test.我们可以直接通过of_test->dev....
populate_node np = unflatten_dt_alloc(mem, sizeof(struct device_node) + allocl, __alignof__(struct device_node)); np->full_name = fn = ((char *)np) + sizeof(*np); populate_properties pp = unflatten_dt_alloc(mem, sizeof(struct property), ...
在dts/dtsi 文件中添加相应的 node 之后,linux 设备树框架会将其解析为 platform_device 结构,编写设备驱动程序时,也会向platform_bus 注册 platform_driver ;根据 node 中 compatible 属性,匹配相应的驱动,最终调用到驱动的 probe 函数 dts/dtsi 文件中添加相应的 node,对应于内核中的 struct device_node 结构体...
of_find_compatible_node函数 (内核源码/include/linux/of.h) 1 struct device_node *of_find_compatible_node(struct device_node *from,const char *type, const char *compatible) 相比of_find_node_by_name函数增加了一个compatible属性作为筛选条件。