通过log可以发现至少是在platform_match()函数之前,在platform_match()函数里面发现了of_driver_match_device()函数,通过字面上的意思是设备树驱动匹配device,所以需要深入看一看。 通过对log的查看 trace_of_log_2.png 可以发现其中的“mediatek,MTKFB”match的时候是没有区分大小写的,所以追查下去是用了strcasecmp函...
}if(client->dev.of_node) {conststructof_device_id*match;match =of_match_device(of_match_ptr(of_max8973_match_tbl), &client->dev);if(!match)return-ENODATA; max->id = (u32)((uintptr_t)match->data); }else{ max->id = id->driver_data; } ret = regmap_read(max->regmap, MAX...
structdevice_node{constchar*name;/*节点的名字*/constchar*type;/*设备类型,来自节点中的device_type属性, 如果没有该属性, 则设为"NULL"*/phandle phandle;constchar*full_name;/*节点的全名,node-name[@unit-address]*/structfwnode_handlefwnode;structproperty*properties;/*节点的属性*/structproperty*deadp...
matches: of_device_id 匹配表,也就是在此匹配表里面查找节点; match: 找到的匹配的 of_device_id; 成功返回找到的节点,失败时返回NULL。 二、获取父子设备节点API 2.1 of_get_parent of_find_node_by_path函数用于获取某一节点的父节点,函数原型: struct device_node *of_get_parent(const struct device_no...
继续跟踪,我们可以看到在kernel-3.18/drivers/base/dd.c文件的__driver_attach函数里已经将of_node信息填写好了,此对比过程暂时不详细描述,也是比较麻烦的这是一个inline函数,并且在driver_match_device(drv, dev)函数里进行的对比,主要是对drv->bus->match(dev, drv)进行了调用,而此函数早已填写好了。通过查找...
在下文中一共展示了irq_of_parse_and_map函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。 示例1: cpm_pic_init ▲点赞 9▼ unsignedintcpm_pic_init(void){structdevice_node*np=NULL;structresourceres;unsignedintsi...
1.3.1.1 device和driver的匹配优先级顺序 一个驱动是可以匹配多个设备的,平台总线中的驱动要具有三种匹配信息的能力,基于这种需求,platform_driver中使用不同的成员来进行相应的匹配。系统为platform总线定义了一个bus_type 的实例platform_bus_type, 会不断循环呼叫platform_match函数去遍历所有设备和驱动: ...
如果compatible属性写错了,或者格式不正确(如有多余的空格),那么of_match_table将无法正确匹配。 确认of_match_table中的兼容性字符串与设备树中的是否匹配: 在驱动程序的源代码中,of_match_table应该包含与设备树中compatible属性相匹配的字符串。例如: c static const struct of_device_id my_driver_of_match[]...
of_match,},};module_platform_driver(my_device_driver);MODULE_LICENSE("GPL");```在上面的示例中,我们使用`of_property_read_bool`函数来读取设备树节点中名为"enable"的布尔属性。如果属性存在且为真,则`enable`变量将设置为`true`;否则,它将保持`false`。然后,我们根据属性的值执行相应的操作。
函数作用:从 string-list 属性中,读出第 N 个字符串。 of_property_read_string_index /** * of_property_read_string_index() - Find and read a string from a multiple * strings property. * @np: device node from which the property value is to be read. ...