S3c2410-SPI驱动设计

来源:互联网 发布:淘宝店铺子账号在哪 编辑:程序博客网 时间:2024/05/29 11:54

S3c2410-SPI驱动设计

内核版本:linux-2.6.31

 

主要的几个结构

platform_device platform_driver s3c24xx_spi spi_master spi_bitbang spi_devicespi_driver spidev_data s3c_spi_info

第一步:注册platform_device

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

同时在mach-qt2410.c中注册spi_board_info,其中spi_board_info.bus_num=0,s2c2410_spi_info中的bus_num相同,以后会通过bus_num比对来匹配。

 

第二步:注册platform_driver

driver/spi/spi_s3c24xx.c注册platform_driver(s3c24xx_spi_driver),这个platform_driver的名字为"s3c2410-spi",这样名字与platform_device的相同,在注册的时候会匹配到一起。并调用s3c24xx_spi_driver.probe函数s3c24xx_spi_probe

 

第三步:注册spi_device

.probe函数中创建s3c24xx_spi,该结构中包括了一个spi_bitbang,一个spi_master

配置了一些互相关联的项以后(3c2410_spi_info.bus_num作为spi_master.bus_num),即扫描注册的spi_board_info链表,查找所有spi_board_info.bus_numspi_master.bus_num相等的项,并为每一项注册spi_device,其中spi_device的名字为spi_board_info.Modalias

 

第四步:注册字符设备,注册spi_driver

driver/spi/spidev.c中,先注册了以SPIDEV_MAJOR为主设备号,spidev_ops为文件操作集的字符设备

注册spi_driver.driver/spi/spidev.c中,其中spi_driver的名字为”spidev”,这样与刚才注册的spi_device相匹配,在spi_driver.probe并为每个匹配的spi_device创建了一个spidev_data,并在sys系统中注册一个带有以SPIDEV_MAJOR为主设备号,以0开始的递增的数字为副设备号的设备点,这样如果有udev运行的话会在/dev下面节点。

 

好了,所有的工作准备就绪了,用户可以通过访问/dev/下的节点来使用这个驱动了。

 

原创粉丝点击