linux驱动学习笔记(三)spi驱动架构
关于总线:
soc上的控制器和IP, 这些设备是挂在系统NOC总线上的,就是可以直接通过内存寻址,没有真正的总线连接它们。因此这些设备是platform device. 对应的驱动是platform driver. 这个系统总线是platform bus. 关于platform bus是如何匹配platform driver和platform device的,上一篇中已经讲过,无非就是通过dts中的compatible字段和驱动进行匹配,这样驱动就可以从dts中获取一些soc级的信息。
但是对于SPI, I2C, CAN这些控制器来说,它们是真的要对外挂接相应的总线的,比如一个spi控制器上挂接多个spi设备,一个IIC总线上挂接多个IIC设备等。这些就是外部的总线。那么对于这些外部总线的设备来说,驱动又是如何和设备匹配的呢?以spi为例:
主要还是分成两部分来看,一部分是spi 总线适配器驱动,也就是说,这部分驱动是soc上控制spi控制器的驱动,这一步得ready了,才能支持访问总线下面挂接的具体的spi设备,而操作具体的spi设备又对应着具体的spi设备驱动。因此这个架构看起来是这样的