驱动执行流程分析

spi驱动执行的大致流程为:

内核解析设备树

将设备树dtb文件解析成device_node格式
将device_node格式解析成platform_device格式
最终会在/sys/bus/platform/devices下显示

节点要满足什么要求才会被转换成platform_device?

节点中包含compatible属性
节点中compatible属性包含arm,primecell之一的节点会被转换成amba设备,不会被转换成platform_device。
节点中compatible属性包含simple-bus,simple-mfd,isa之一的节点下包含compatible属性的子节点

驱动和设备通过规则匹配,匹配成功后执行驱动中的probe函数。

第一步:比较platform_driver驱动的of_match_table结构体变量的成员变量compatible是否与设备树中描述的设备compatible匹配。
platform_driver.driver.of_match_table.compatible ?= 设备树中设备的compatible属性
第二步:ACPI匹配方式。
第三步:platform_driver结构体id_table属性进行匹配。
platform_driver.id_table.name ?= 设备树中设备的name属性
第四步:驱动与设备树设备名称匹配(通过name字段)
platform_driver.driver.name ?= 设备树中设备的name属性

probe函数将platform_device指针传递给我们定义的结构体。

你可能感兴趣的:(Linux,linux)