高通平台SPI外设的片选信号配置

spi master 和spi device有各自的dts配置:
这是spi master的配置示例,也就是spi控制器

在这里插入图片描述

这是一个spi device的配置示例,也就是spi外设(从设备)
在这里插入图片描述

一个spi控制器上可以连接多个从设备,在任何时刻只有一个从设备可以通过spi控制器的数据线进行通信。片选信号就是用来确认当前和哪个外设进行通信的选择机制。一般情况下控制器想和哪个外设通讯时,会将连接到这个外设的片选信号拉低。而其他外设的片选信号此时被控制器置高。
所以如果硬件设计时确实在同一个spi控制器上并联了多个spi外设。每个外设对应一个独立的片选信号(gpio)。那么在配置时,就需要知道片选信号在驱动中是如何进行配置的,片选信号又是如何将外设和控制器在代码层面联系到一起的。
每个平台在这方面都可能是不一致的。高通的做法如下:
高通的spi控制器配置如下:
在这里插入图片描述

可以看到,高通的控制器相关dts中有最多4个可选的片选gpio参数可以配置。如果你需要多个片选配置,则添加这条属性,有几个就添加几条。其值就是硬件连接的具体gpio号。
如:
qcom, gpio-cs0 = <115>,
qcom, gpio-cs1 = <119>
qcom, gpio-cs2 = <114>
如果你的spi控制器上只连接了一个外设,也就是独占使用的。那么就不要配置这四个属性中的任何一个!
注意!这些属性属于spi控制器的dts配置参数。
那么,某个spi外设是如何和控制器的对应cs信号在代码上关联呢?
看下外设的dts配置属性列表:

在这里插入图片描述
以上示例中,可以看到每个spi外设的属性中都有一个必选的属性:reg = <>,这个就是对应的片选信号。如果你的外设是唯一的,即这个控制器只连接了一个外设,那么此处的reg属性值必须为0;如果这个spi控制器连接了多个外设,那么此处的reg属性即为对应的片选信号索引值。例如,你的spi外设连接到上述控制器对应的“qcom, gpio-cs1 = <119>”,那么此时你的reg属性值应为1,将来控制器就会在发送数据时将gpio_119拉低。

你可能感兴趣的:(Linux,Qualcomm,SPI)