emmc/sd驱动总线简析
在前面有一篇文章linux驱动相关知识整理中我们提到,总线是关联驱动和设备的枢纽,那么在分析EMMC驱动的时候,我们先来分析总线。
而通过前一篇文章emmc驱动代码预览可以知道在core文件夹下有core.h/.c文件,那就进去瞧一瞧吧。
打开core.c文件,下面有这样一段代码:
subsys_initcall(mmc_init);
module_exit(mmc_exit);
subsys_initcall也是一个类似模块加载module_init的宏,而且subsys_initcall比module_init要先执行,这里只需要知道它是用来向内核注册一个什么就好了。
再来看看mmc_init
static int __init mmc_init(void)
{
int ret;
ret = mmc_register_bus();
if (ret)
return ret;
ret = mmc_register_host_class();
if (ret)
goto unregister_bus;
ret = sdio_register_bus();
if (ret)
goto unregister_host_class;
return 0;
unregister_host_class:
mmc_unregister_host_class();
unregister_bus:
mmc_unregister_bus();
return ret;
}
该代码段中,mmc_register_bus函数被调用了,再扒进去看一下:
int mmc_register_bus(void)
{
return bus_register(&mmc_bus_type);
}
著名的总线注册内核函数bus_register在这里被调用。
其中mmc_bus_type变量定义如下:
static struct bus_type mmc_bus_type = {
.name = "mmc",
.dev_groups = mmc_dev_groups,
.match = mmc_bus_match,
.uevent = mmc_bus_uevent,
.probe = mmc_bus_probe,
.remove = mmc_bus_remove,
.shutdown = mmc_bus_shutdown,
.pm = &mmc_bus_pm_ops,
};
这里我们看一下,驱动和设备的配对函数
static int mmc_bus_match(struct device *dev, struct device_driver *drv)
{
return 1;
}
固定返回1,表示只要是注册在该总线上的驱动和设备,在match中都匹配成功。
关于emmc驱动请听下回分解。
emmc/sd驱动总线简析相关推荐
- bulk interface驱动_Linux 驱动架构简析
这篇文章不是驱动开发教程,只不过作者读过内核源码后,想对知识做一个梳理,从源码的角度分析一下Linux的驱动架构的实现.行文也不大讲究,希望可以把问题说清楚.本文使用的kernel 源码版本是 3.1 ...
- 正点原子阿尔法imx6ull的wm8960声卡驱动表层简析
文章目录 前言 1.设备树配置 2.打印信息分析(按打印先后顺序) 2.1.wm8960_i2c(Codec) 2.2.fsl-sai(Platform) 2.3.card 注册(Machine) 3 ...
- Linux I2C设备regmap机制简析
在Linu 3.1开始,Linux引入了regmap来同意管理内核的I2C, SPI等总线,将I2C, SPI驱动做了一次重构,把I/O读写的重复逻辑在regmap中实现. 用一个I2C设备为例,在3 ...
- 痞子衡嵌入式:简析i.MXRT1170 XECC功能特点及其保护串行NOR Flash和SDRAM之道
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170 XECC功能特点及其保护串行NOR Flash和SDRAM之道. ECC 是 "Error Correc ...
- 2022集创赛安谋科技杯简析公开课文字版(建议结合视频一起看)
下面是2022年集创赛安谋科技杯简析公开课文字版,建议结合PPT和视频一起学习.文字整理来自2022年集创赛安谋科技杯杯赛助理甘云汉. 大家好,我是第五届集创赛Arm杯企业奖一等奖得主,很荣幸能收到技 ...
- 关于地铁计算机联锁的论文,简析南京地铁四号线车辆段计算机联锁主机设计论文...
简析南京地铁四号线车辆段计算机联锁主机设计论文 1概述 NRIET-CI-Ⅲ型计算机联锁系统用于南京地铁四号线青龙车辆段,青龙车辆段计算机联锁系统主要由上位机子系统.车辆段联锁子系统.室外设备子系统以 ...
- 《Android多媒体应用开发实战详解:图像、音频、视频、2D和3D》——2.1节简析Android安装文件...
本节书摘来自异步社区<Android多媒体应用开发实战详解:图像.音频.视频.2D和3D>一书中的第2章,第2.1节简析Android安装文件,作者 王石磊 , 吴峥,更多章节内容可以访问 ...
- 《Android 网络开发与应用实战详解》——2.1节简析Android安装文件
本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第2章,第2.1节简析Android安装文件,作者 王东华,更多章节内容可以访问云栖社区"异步社区" ...
- Qualcomm Android camera 架构简析及如何debug
一. Camera模组(CCM)介绍: CCM一般包含四大件: 镜头(lens).传感器(sensor).软板(FPC).图像处理芯片(DSP): Camera的成像原理可以简单概括如下: 1 ...
最新文章
- Spring boot注入配置为java静态属性
- Google又发大招:高效实时实现视频目标检测
- 计组第一章(唐朔飞)——计算机系统概述章节总结
- Redis性能指标监控
- 全网Star最多(近20k)的Spring Boot开源教程 2019 年要继续更新了!
- requests-session类对象-0223
- transferto遇到的问题java.io.FileNotFoundException: C:\Users\Administrator\AppData\Local\Temp
- Signal和Slot是同步的还是异步的
- JavaScript之对象序列化详解
- 知道圆心半径取圆上的经纬度_作为一名台球高手,你应该知道的事
- python的第三方库是干什么用的-Python 常用的标准库以及第三方库有哪些?
- 关闭(取消)windows 2003中ie增强的安全配置?
- 方舟开服务器游戏基础管理设置
- 2020年电工(技师)证考试及电工(技师)模拟考试软件
- 还在用ListView?!OutMan!RecyclerView!
- matlab命令行窗口显示长度设置_MATLAB中如何设置坐标轴的显示长度?
- 第3章 事实、数据检索
- 手机海豚模拟器怎么添加游戏_人偶战斗模拟器2手机版下载,人偶战斗模拟器2手机版安卓游戏 v1.2...
- 计算机安全外文文献出处,网络信息安全外文文献翻译中英文.doc
- 大数据征信如何提升金融机构风控能力