SPI 控制器驱动层负责最底层的数据收发,主要有以下功能:
SPI 主机驱动就是 SOC 的 SPI 控制器驱动。Linux 内核使用 spi_master/spi_controller 表示 SPI 主机驱动,spi_master 是个结构体,定义在 include/linux/spi/spi.h 文件中。
SPI 主机驱动的核心就是申请 spi_master,然后初始化 spi_master,最后向 Linux 内核注册 spi_master。
API 如下:
spi_alloc_master 函数:申请 spi_master。
spi_master_put 函数:释放 spi_master。
spi_register_master函数:注册 spi_master。
spi_unregister_master 函数:注销 spi_master。
spi_bitbang_start函数:注册 spi_master。
spi_bitbang_stop 函数:注销 spi_master。
以 MTK 为例,源码来自于小米开源项目
https://github.com/MiCode/Xiaomi_Kernel_OpenSource
小米每做一个项目,都会把 kernel 部分开源,因为需要遵循 Linux GPL 开源协议。
【设备】声明在设备树中
kernel-4.14/arch/arm64/boot/dts/mediatek/mt6885.dts
【驱动】
kernel-4.14/drivers/spi/spi-mt65xx.c
匹配以后,probe 函数执行,申请 spi_master,初始化 spi_master,最后向 Linux 内核注册 spi_master。
全部0条评论
快来发表一下你的评论吧 !