SPI 驱动框架
SPI 驱动框架
1. 枚举过程
drivers/spi/spi.c:
spi_register_board_info
/* 对于每一个spi_master,调用spi_match_master_to_boardinfo */
list_for_each_entry(master, &spi_master_list, list)
/*
* board_info 里含有 bus_num , 如果某个 spi_master 的 bus_num 跟它一样
* 则创建一个新的 spi_device
*/
spi_match_master_to_boardinfo
if (master->bus_num == bi->busnum)
spi_new_device
spi_alloc_device
/* 记录 bi 信息, 比如片选,MODE,MAX HZ */
spi_add_device /* 根据名字找到 spi_driver , 调用它的 probe 函数 */
spi_setup(spi);
device_add /* 会绑定到一个 spi_driver */
2. 数据收发过程
spi_write
spi_message_init(&m);
初始化一个spi_message /* 一个不可打断的SPI传输过程: cs=0,传数据,cs=1 */
/* 一个spi_message由多个spi_transfer组成 */
spi_message_add_tail(&t, &m); /* spi_transfe 是 SPI 上传输的单方向 1 个或多个字节 */
spi_sync(spi, &m); /* 启动传输并等待完成 */
3. spi_driver如何调用spi_controller
spi_sync
__spi_sync(spi, message, 0);
spi_async_locked
__spi_async
master->transfer(spi, message);
wait_for_completion

SPI 驱动框架的更多相关文章
- linux驱动基础系列--linux spi驱动框架分析
前言 主要是想对Linux 下spi驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.设备模型等也不进行详细说明原理.如果有任何错误地方,请指出,谢谢! spi ...
- linux驱动基础系列--linux spi驱动框架分析(续)
前言 这篇文章是对linux驱动基础系列--linux spi驱动框架分析的补充,主要是添加了最新的linux内核里设备树相关内容. spi设备树相关信息 如之前的文章里所述,控制器的device和s ...
- spi驱动框架全面分析,从master驱动到设备驱动
内核版本:linux2.6.32.2 硬件资源:s3c2440 参考: 韦东山SPI视频教程 内容概括: 1.I2C 驱动框架回顾 2.SPI 框架简单介绍 3.maste ...
- Linux驱动修炼之道-SPI驱动框架源码分析(上)【转】
转自:http://blog.csdn.net/lanmanck/article/details/6895318 SPI驱动架构,以前用过,不过没这个详细,跟各位一起分享: 来自:http://blo ...
- S3C2440 SPI驱动框架
S3C2440 SPI驱动代码详细解读: https://www.linuxidc.com/Linux/2012-08/68402p4.htm 一.platform device and board_ ...
- SPI驱动框架-1(DM8127 Linux2.6.37为例)
一.驱动程序结构 1.platform_device 文件:/arch/arm/mach-omap2/device.c static struct omap2_mcspi_platform_confi ...
- Linux驱动:SPI驱动编写要点
题外话:面对成功和失败,一个人有没有“冠军之心”,直接影响他的表现. 几周前剖析了Linux SPI 驱动框架,算是明白个所以然,对于这么一个庞大的框架,并不是每一行代码都要自己去敲,因为前人已经把这 ...
- RT Thread的SPI设备驱动框架的使用以及内部机制分析
注释:这是19年初的博客,写得很一般,理解不到位也不全面.19年末得空时又重新看了RTThread的SPI和GPIO,这次理解得比较深刻.有时间时再整理上传. -------------------- ...
- 基于TQ2440的SPI驱动学习(OLED)
平台简介 开发板:TQ2440 (NandFlash:256M 内存:64M) u-boot版本:u-boot-2015.04 内核版本:Linux-3.14 作者:彭东林 邮箱:pengdongl ...
随机推荐
- 第二次spring会议
今天所做之事: 我用C#用DelectText对行数进行了定义,刚开始写代码有点无从下手. 遇到的问题:刚开始用datagridView进行了文本的输入,但是它更适合EXCEL之类的数据计算不符合我们 ...
- cookie方法封装
将cookie封装主要是为了方便使用,可通过修改参数直接引用在其他需要的地方,不用重新写. 1.添加,删除,修改cookie /** * @param name name:cookie的name * ...
- #10072. 「一本通 3.2 例 1」Sightseeing Trip(floyd求最小环+路径)
https://loj.ac/problem/10072 针对无向图 因为Floyd是按照结点的顺序更新最短路的,所以我们在更新最短路之前先找到一个连接点k,当前的点k肯定不存在于已存在的最短路f[i ...
- 地址栏的路由输入不匹配时候,设置默认跳转页面(redirect)
如果输入正确的路由,就会显示正确的页面. 如果输入错误的路由 ,则可以配置跳转到指定的页面. { redirect:"/', path:"*" ; }
- python模块:configparser
"""Configuration file parser. A configuration file consists of sections, lead by a &q ...
- Qt中的CSS配置(QDarkStyleSheet)
QDarkStylesheet gihub地址 https://github.com/ColinDuquesnoy/QDarkStyleSheet
- 利用IP核设计高性能的计数器
利用Quartus II的LPM_counter IP核进行设计(利用IP核设计可以迅速高效的完成产品的设计) 新建工程 调用IP核 创建一个新的IP核 选择LMP_COUNTER,语言类型,输出路径 ...
- java基础-位运算符
1.位运算符 << 左移 : 右边以0填充 >> 带符号右移: 负数前面补1,整数补0 >>>不带符号右移 & 按位与运算 ...
- vscode 编辑器常用快捷键
最近,打算换个编辑器,而 vscode 是一个不错的选择.大部分快捷键和 sublime 还是很像的,但有些也不一样.特此整理一份小笔记. 参考: vscode: Visual Studio Code ...
- centos7上安装nagios
前言:Nagios是一款开源的免费网络监视工具,可以监控Windows.Linux和Unix的主机状态,交换机路由器等网络设备,在系统或服务状态异常时发出邮件或短信报警,第一时间通知网站运维人员.流量 ...