天天看点

platform_driver device_driver dts自动加载platform_device及休眠唤醒的关系

platform总线是我们驱动编程中经常用的一种,之间的大体关系如下:

platform_driver device_driver dts自动加载platform_device及休眠唤醒的关系

1.platform_bus_init 

由start_kernel在加载各自init之前调用。主要就是注册一个bus,最终会添加到bus_kset链表中去,总线本身不会涉及到休眠唤醒,其休眠唤醒函数都是一个中间过程。为各自具体的设备驱动准备的。

2.platform_device_register

如上图描述所示,主要内部逻辑有下:

1):首先将dev添加到devices_kset链表中去

2):其次将dev添加到总线的devices链表上去

3):将设备添加到电源管理的dpm_list链表上去,为休眠唤醒作准备。通过这一块就是功耗的核心部分

3.__platform_driver_register

这个部分主要有:

1):将自己添加到总线的driver list链表上去

2):调用attach函数就自己与device绑定,并调用driver的probe函数

platform_driver device_driver及PM结构体关系图

继续阅读