linux内核SPI总线驱动(一)
今天我们分析一下SPI驱动的东西,老方法,我们反向追踪,数据手册端上来
总线地址是0xC005B000
顺藤摸瓜:
kernel\kernel-3.4.39\arch\arm\mach-s5p6818\include\mach\ s5p6818.h
继续寻找到
\kernel\kernel-3.4.39\arch\arm\mach-s5p6818\ devices.c
这里看出来spi注册为平台总线的形式,那我们按照平台总线继续往下找通过.name匹配的
s3c64xx-spi 名字很奇怪啊~
\kernel\kernel-3.4.39\drivers\spi\ spi-slsi.c
MODULE_ALIAS("platform:s3c64xx-spi");一般通过hotplug的设备会通过module.alias 中的信息来加载device对应的driver
MODULE_ALIAS ( 模块为人所知的另一个名字 ), 以及 MODULE_DEVICE_TABLE ( 来告知用户空间, 模块支持那些设备 ).
关联了prob函数
分析下prob函数
前面是得到设备地址啊,什么设备树解析啊什么的,有兴趣可以看一下,我们主要是先看大流程好吧
这里注册了spi master控制器(spi_register_master函数是通用驱动其他的及linux内核提供的方法)。到这里驱动的加载流程基本已经完成。
看起来好像比i2c简单喔,我们继续往下看喔。
这里其实spi的硬件相关部分已经完结了,其余的咱下周再看吧,毕竟是端午节嘛哈哈,休息一下。