高通平台SPI配置方法

1. 文档说明

本文档以SC826-CN-00(8953平台)为例,说明SPI配置方法。

高通相关文档
80-nu767-1_e_linux_bam_low-speed_peripherals_configuration_and_debug_guide.pdf
80-P2472-1B_E_MSM8953_GPIO_Configuration_Spreadsheet.xlsm

2. 确定SPI管脚

好,开始,我们现在打算开始配置SC826-CN-00模块的SPI6。
那么我们先看下模块的硬件手册:

高通平台SPI配置方法_第1张图片

可以看到相应的管脚号是 247~250,但硬件手册上的管脚号对于配置没啥意义

先修改 kernel/msm-3.18/arch/arm/boot/dts/qcom/sc826-cn-00-evk/msm8953-pinctrl.dtsi
打开msm8953-pinctrl.dtsi,搜索“SPI” ,能够搜索到SPI3的相关配置。

高通平台SPI配置方法_第2张图片

很不幸,没有找到SPI6,只能自己动手添加了。
依葫芦画瓢,照着SPI3的配置复制一份。
高通平台SPI配置方法_第3张图片
那么问题来了,pins所对应的gpio管脚怎么确定呢?
这个时候需要查询 80-P2472-1B_E_MSM8953_GPIO_Configuration_Spreadsheet.xlsm

高通平台SPI配置方法_第4张图片
上图红圈部分,标明了SPI6对应的管脚,OK,那我们就按照上图配置gpio管脚号

高通平台SPI配置方法_第5张图片

其他配置照着SPI3的配置照抄,更改相应的gpio号即可。

3. 添加设备树节点

修改kernel/msm-3.18/arch/arm/boot/dts/qcom/sc826-cn-00-evk/msm8953.dtsi
打开msm8953.dtsi,搜索“SPI” ,能够搜索到SPI3的相关配置。同样的,SPI6的配置需要自己添加。
先增加一个SPI_6的名称。

高通平台SPI配置方法_第6张图片

再照抄SPI_3的配置:
高通平台SPI配置方法_第7张图片
上图红线部分的值,需要查询 80-nu767-1_e_linux_bam_low-speed_peripherals_configuration_and_debug_guide.pdf
该文档和SPI6配置有关的Table5-4见下图,SPI6对应BLSP6:

高通平台SPI配置方法_第8张图片

对号入座,修改相应的配置值。修改后的SPI6配置如下:
高通平台SPI配置方法_第9张图片
至于怎么对号入座,对照文档自行理解,我也是半桶水。
配置到这里,实际已经完成了底层有关SPI6的配置。但是还没有生成设备节点,执行:
$ adb shell
$ ls /sys/class/spi_master/
$ls /dev/spi*

是无法看到spi设备的。
要生成设备节点,还需要加载SPI驱动。

4. 配置SPI驱动

设备树增加一个SPI外设(虚拟的,只是为了生成一个节点)
修改msm8953.dtsi,在spi_6的配置下增加如下一段

高通平台SPI配置方法_第10张图片
另外修改下面三个文件,加载SPI驱动。
kernel/msm-3.18/arch/arm64/configs/msmcortex_defconfig
kernel/msm-3.18/arch/arm64/configs/msmcortex-perf_defconfig
kernel/msm-3.18/drivers/spi/spidev.c

修改记录见下面百度链接,/old文件夹为修改之前的文件,/new文件夹为修改之后的文件。
链接:https://pan.baidu.com/s/1nK-QrCiOGz6YUBlRo-Hdng
提取码:b6u3

你可能感兴趣的:(Android驱动)