答案是:不需要转换,在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_nodeof_find_node_by_path(const charpath); / of_find_node_by_name- 通过节点名查找指定节点 @from - 开始查找节点,如果为NULL,则从根节点开始 @name- 节点名 成功:得到节点的首地址;失败:NULL */ struct device_node *of_find_node_by_name(struct device_nodefrom,const charname); ...
对象代表一个设备。 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...
答案是:不需要转换,在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_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....
在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属性作为筛选条件。
* @of_node: Associated device tree node. * @fwnode: Associated device node supplied by platform firmware. * @devt: For creating the sysfs "dev". * @id: device instance * @devres_lock: Spinlock to protect the resource of the device. ...