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結構體關系圖