設備掛接到總線上時,與總線上的所有驅動進行匹配(用bus_type.match進行匹配),
如果匹配成功,則調用bus_type.probe或者driver.probe初始化該設備,掛接到總線上
如果匹配失敗,則只是將該設備掛接到總線上。
驅動掛接到總線上時,與總線上的所有設備進行匹配(用bus_type.match進行匹配),
如果匹配成功,則調用bus_type.probe或者driver.probe初始化該設備;掛接到總線上
如果匹配失敗,則只是將該驅動掛接到總線上。
需要重點關註的是總線的匹配函數match(),驅動的初始化函數probe()
1. platform_bus_type--總線先被kenrel註冊。
2. 系統初始化過程中調用platform_add_devices或者platform_device_register,將平臺設備(platform devices)註冊到平臺總線中(platform_bus_type)
3. 平臺驅動(platform driver)與平臺設備(platform device)的關聯是在platform_driver_register或者driver_register中實現,壹般這個函數在驅動的初始化過程調用。
通過這三步,就將平臺總線,設備,驅動關聯起來。
1. platform bus先被kenrel註冊。
------------------------------------------------------
do_basic_setup() -->-driver_init() -->-platform_bus_init()-->bus_register()
2. 系統初始化過程中調用platform_add_devices或者platform_device_register,將平臺設備(platform devices)註冊到平臺總線中(platform_bus_type)
------------------------------------------------------
系統啟動階段,總線的驅動鏈表還是空的,所以啟動階段的platform_add_devices()只負責將設備添加到總線的設備鏈表上。