platform总线是我们驱动编程中经常用的一种,之间的大体关系如下:
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结构体关系图