linux spi驱动

linux spi驱动

内核版本:linux-2.6.29

 

主要的几个结构

platform_device platform_driver s3c24xx_spi spi_master spi_bitbang spi_device spi_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/下的节点来使用这个驱动了。

 


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值