SDIO流程
来源:互联网 发布:软件项目日报模板 编辑:程序博客网 时间:2024/04/30 15:40
S3C2440板子。先统计一下编译了哪些文件,分别是
card/
block.o queue.o
host/
s3cmci.o
core/
bus.o core.o host.o
及sd,mmc,sdio 3种规范的相关文件:
sd: sd.o sd_ops.o
mmc: mmc.o mmc_ops.o
sdio: sdio.o sdio_ops.o sdio_bus.o sdio_cis.o sdio_io.o sdio_irq.o
看别人写的抄下来的流程:
1. 内核启动initcall ==>> mmc_init() ==>> mmc_blk_init()
2. xx_mmc_probe 检测挂在的设备
3. 起延时任务mmc_rescan()对卡初始化
4. mmc_attach_sd(),mmc_attach_mmc(),mmc_attach_sdio()加载设备
5. mmc_add_card()
6.卡加入系统后,mmc_blk_probe()分配mmc_blk_data结构变量
7.mmc_init_queue()初始化
8.建立线程mmc_queue_thread(),接受块设备读写请求并处理
然后看代码把每个文件做的事写一下,有点乱
s3cmci.c
注册s3c2410,2412,2440平台驱动
mmc_alloc_host
硬件初始化,注册中断
mmc->ops = &s3cmci_ops 结构成员函数有request,set_ios,get_ro,get_cd
中断函数s3cmci_irq()完成读写,中断中起tasklet即pio_tasklet(),再区分为do_pio_read(),do_pio_write()
block.c
注册块设备,主设备号179,向mmc_driver注册驱动
mmc_blk_probe()==>>mmc_blk_alloc()==>>mmc_init_queue()在此函数中起线程.线程函数是queue.c中的mmc_queue_thread()
在线程中根据blk_queue_plugged()判断队列是否有插入,取得elv_next_request()的返回值struct request*,调用mq->issue_fn函数即block.c的mmc_blk_issue_irq()处理,在mmc_wait_for_req()函数种把请求传给host->ops->request,即s3cmci_ops中的request结构成员函数
bus.c
struct mmc_card结构相关
提供函数alloc card(),add_card(), 在add_card()中调用device_add()添加设备
向系统注册总线mmc_bus_type
把block.c注册过来的mmc_driver注册为系统的驱动
core.c
mmc_rescan()分辨检测卡
mmc_init()起工作队列,初始检测及热插拔时detect用
调用注册总线,注册class
host.c
与s3cmci.c相关联的文件,找到设备前先假设有设备,mmc_alloc_host()起工作队列mmc_rescan()检测设备,未检测到释放host,检测到了调用device_add添加设备
只看mmc规范
mmc.c
mmc_rescan中找到卡后调用mmc_attach_mmc初始化卡,提供detect函数每次检测卡是否拔出
mmc_ops.c
mmc的具体命令,比如go_idle(),send_cid()等
分辨sdio,mmc,sd卡,通过发命令,具体命令我不确定
发送cmd5,如果有响应就是sdio,没响应就往下走
发送cmd1,如果有响应就是mmc,如果没响应就是sd
卡插入中断后的处理:
s3cmci,c中的s3cmci_irq_cd()==>>mmc_detect_change()==>>host->detect()==>>mmc_detect()
这里的s3cmci_irq_cd()是sd卡插入检测脚cd的中断处理函数
- SDIO流程
- sdio 热插拔流程
- sdio 热插拔流程
- sdio 初始化流程
- sdio wifi驱动的加载流程
- SDIO驱动(2)Host注册流程
- SDIO驱动(12)card的扫描流程
- SDIO 接口 Wifi 驱动流程分析 (AP6354)
- SDIO
- SDIO
- SDIO
- SDIO
- [RK3399] SDIO 接口 Wifi 驱动流程分析 (AP6354)
- [RK3399] SDIO 接口 Wifi 驱动流程分析 (AP6354)
- 浅析linux下sdio接口对sd卡硬件检测流程
- 浅析Linux下sdio接口对sd卡硬件检测流程
- 浅析Linux下sdio接口对sd卡硬件检测流程
- SDIO接口
- 有关MySQL数据库中文乱码的问题
- 20个开发人员非常有用的Java功能代码(1)
- div的隐藏与显示
- 虚拟内存
- SQL Server 2005语法增强之OBJECT_ID
- SDIO流程
- 《网络设备互联技术》读书笔记(1)
- ssh项目开发中的后台测试技巧
- 继承和Prototype
- zoj 3121
- sd卡驱动在linux 2.6.24上的实现
- ProgressBar
- 寻找 漂亮主题 桌面主题
- zoj 3124