SPI 控制器驱动层
SPI 控制器驱动层负责最底层的数据收发,主要有以下功能:
- 申请必要的硬件资源,比如中断、DMA 通道、DMA 内存缓冲区等等
- 配置 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。
SPI 主机驱动的加载
以 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。


-
控制器
+关注
关注
114文章
17660浏览量
190459 -
驱动
+关注
关注
12文章
1929浏览量
88247 -
SPI
+关注
关注
17文章
1867浏览量
99949
发布评论请先 登录
步进电机驱动控制器介绍
基于SPI的EEPROM控制器设计与实现
利用SPI控制器控制nRF24L01射频模块的驱动程序设计

SPI控制器驱动层功能介绍
评论