spi子系统调用流程

spi驱动:

1.注册platform_device

在arch/arm/mach-s3c24xx/smdk2440.c 中注册platform_device ,其中s3c2410_spi_info 作为platform_device.private_data. platform_device.name 为"s3c2410-spi".   

同时在在arch/arm/mach-s3c2440/mach-smdk2440.c 中注册spi_board_info(注册spi从设备的板级信息), 其中spi_board_info.bus_num=0/1, 与s2c2440_spi_info 中的bus_num 相同, 以后会通过bus_num 比对来匹配。


2:在driver/spi/spi-s3c24xx.c中调用module_platform_driver(s3c24xx_spi_driver);  注册了s3c24xx_spi_driver,其设备的名字为s3c2410-spi,此名字与arch/arm/mach-s3c2440/smdk2440.c 中注册platform_device中的设备名字一样,则匹配上了

3:如果匹配上就会调用spi控制器驱动中的s3c24xx_spi_probe函数,probe函数又会调用spi_bitbang_start函数,此函数调用spi_register_master函数来注册添加spi控制器,之后调用spi_match_master_to_boardinfo函数来匹配已经注册的从设备信息bus_num,如果如果设备的总线号bus_num与控制器的总线号相等,则spi_new_device来添加从机设备,然后从机设备又会通过设备名字与总线上的设备驱动进行匹配,匹配成功后调用从设备驱动总的probe函数,来进行从设备的硬件初始化以及注册字符设备驱动或块设备驱动来提供给用户接口函数使用。


阅读更多
个人分类: linux
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

spi子系统调用流程

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭