注册设备info(主要有设备通信速率、模式、片选引脚等与具体设备相关信息)
spi_register_board_info
list_add_tail(&bi->list, &board_list);//放进board_list链表中
list_for_each_entry(master, &spi_master_list, list)
spi_match_master_to_boardinfo //遍历从spi_master_list中每一个master执行spi_match_master_to_boardinfo
if (master->bus_num != bi->bus_num)//判断bus_num是否一致,如果是此时就创建新设备
spi_new_device
spi_alloc_device
spi_add_device
spi_setup
device_add //至此,一个spi设备就被注册进总线,之后便可通过匹配match函数进行与driver的匹配了
注册设备driver
spi_register_driver
driver_register
bus_add_driver
driver_attach //同样此时注册了一个spi驱动,同样通过匹配match函数进行与device的匹配
注册spi控制器
spi_register_master
list_add_tail(&master->list, &spi_master_list);//先将master 添加进spi_master_list 链表中
list_for_each_entry(bi, &board_list, list)
spi_match_master_to_boardinfo(master, &bi->board_info);//遍历每个board并执行spi_match_master_to_boardinfo
if (master->bus_num != bi->bus_num)
spi_new_device //若bus_num一致执行新建设备,之后的工作和上面的spi_register_board_info一致