MMC子系统之SDIO卡驱动
SDIO说明
图 1-1 显示了 SDIO 相关规范。 SDIO 总线规范由物理层规范和SDIO简化规范定义。Combo Card的内存部分由物理层规范指定。 SDIO 和 Combo Card 在后端具有 SDIO 功能。与基本 SDIO 规范相关联的是标准 SDIO 功能的几个应用规范。 SDIO 的特性由 SDIO 功能决定。需要卡驱动程序和应用软件来控制该功能。
SDIO起源于SD标准,专注于实现IO数据收发;SD起源于MMC,所以在Linux中统一归于mmc目录:
MMC框架
Host driver就是驱动Soc上的Host Controller,这就离不开具体的Soc。RK3568上是The Mobile Storage Host Controller(mshc)
MMC子系统代码主要在drivers/mmc目录下,共有三个目录:
Card:存放闪存卡(块设备)的相关驱动,如MMC/SD卡设备驱动,SDIOUART;
Host:针对不同主机端的SDHC、MMC控制器的驱动,这部分需要由驱动工程师来完成;
Core:整个MMC的核心层,这部分完成不同协议和规范的实现,为host层和设备驱动层提供接口函数。
MMC主机
//SDIO HOST之bus
static struct bus_type sdio_bus_type = {.name = "sdio",.dev_groups = sdio_dev_groups,.match = sdio_bus_match,.uevent = sdio_bus_uevent,.probe = sdio_bus_probe,.remove = sdio_bus_remove,.pm = &sdio_bus_pm_ops,
};
//SDIO HOST之devicesdmmc2: dwmmc@fe000000 {compatible = "rockchip,rk3568-dw-mshc","rockchip,rk3288-dw-mshc";reg = <0x0 0xfe000000 0x0 0x4000>;interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;max-frequency = <150000000>;clocks = <&cru HCLK_SDMMC2>, <&cru CLK_SDMMC2>,<&cru SCLK_SDMMC2_DRV>, <&cru SCLK_SDMMC2_SAMPLE>;clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";fifo-depth = <0x100>;resets = <&cru SRST_SDMMC2>;reset-names = "reset";status = "disabled";};
//SDIO HOST之driver
static const struct of_device_id dw_mci_rockchip_match[] = {{ .compatible = "rockchip,rk2928-dw-mshc",.data = &rk2928_drv_data },{ .compatible = "rockchip,rk3288-dw-mshc",.data = &rk3288_drv_data },{},
};
MODULE_DEVICE_TABLE(of, dw_mci_rockchip_match);
static struct platform_driver dw_mci_rockchip_pltfm_driver = {.probe = dw_mci_rockchip_probe,.remove = dw_mci_rockchip_remove,.driver = {.name = "dwmmc_rockchip",.of_match_table = dw_mci_rockchip_match,.pm = &dw_mci_rockchip_dev_pm_ops,},
};
MMC设备-SDIO卡
//sdio 卡驱动开发 头文件包含
#include <linux/mmc/core.h>
#include <linux/mmc/card.h>
#include <linux/mmc/sdio.h>
#include <linux/mmc/sdio_func.h>
#include <linux/mmc/sdio_ids.h>
//驱动注册sdio_register_driver(&sdio_driver);sdio_unregister_driver(&sdio_driver);
//opssdio_writeb(io->func,0x55,io->regs_offset+1,NULL);……
MMC子系统之SDIO卡驱动相关推荐
- MMC子系统识别SD设备过程简述
一 :引子–WIFI 模块移植 二 : MMC 识别 SD设备过程 第一步: 注册虚拟总线 第二步: 初始化并挂载设备驱动 第三步:初始化注册主控驱动 第四步:Host驱动的prob() 4.1 mm ...
- sd 卡驱动在2.6内核的编写.sd/mmc/sdio kernel,sd/mmc/sdio 内核
[转帖请注明出处:blog.csdn.net/lanmanck] sd卡驱动主要参照已有的文件即可,2410,9260都挺好.其实写驱动主要是搞清楚工作流程即可.我这里写一些心得与大家分享下,基于2. ...
- 浅析Linux内核之mmc子系统-sdio
现在的Linux内核中,mmc不仅是一个驱动,而是一个子系统.这里通过分析Linux3.2.0内核,结合TI的arm335x平台及omap_hsmmcd host分析下mmc子系统,重点关注sdio及 ...
- Linux驱动分析之MMC子系统框架
前言 上一篇<一文搞懂SDIO>简单介绍了SDIO接口及相关的协议.接下来来看一下Linux提供的驱动框架. MMC子系统介绍 Linux内核中,MMC不仅是一个驱动,而是一个子系统.内核 ...
- linux mmc 子系统,linux2.6.28块设备mmc_sd卡mmc子系统核心初始化
参考http://blog.csdn.net/wavemcu/article/details/7366852 // / /// MMC/SD设备驱动代码在Linux源码中的位置/linux-2.6.3 ...
- NUC970 SD卡驱动(SDIO)
在读取SD卡的R2长响应折腾了不少时间,原因是必须开启DMA,不开启DMA,R2响应将不会传输到SDIO的FIFO中,将SDIO接口与STM32保持一致,并兼容应用层SDIO_SDCARD驱动. 寄存 ...
- (linux)MMC 卡驱动分析
最近花时间研究了一下 MMC 卡驱动程序,开始在网上找了很多关于 MMC 卡驱动的分析文章,但大都是在描述各个层,这对于初学者来讲帮助并不大,所以我就打算把自己的理解写下来,希望对大家有用.个人觉得理 ...
- rt-thread SDIO驱动框架分析(SD卡驱动\SD Nand驱动)
rt-thread SDIO驱动框架分析之SD卡驱动 文章目录 rt-thread SDIO驱动框架分析之SD卡驱动 1. 前言 2. SDIO通用驱动框架介绍 3. 文件架构分析 4. SDIO设备 ...
- STM32F407ZGT6使用SDIO方式驱动SD卡
原文地址::STM32F407ZGT6使用SDIO方式驱动SD卡 - JavaShuo 相关文章 1.[STM32] STM32官方标准固件库概述----[STM32] STM32官方标准固件库概述_ ...
最新文章
- [转载]什么情况下应该设置 cudnn.benchmark = True?
- 用C语言写的万年历---亲手写的。好累哦
- vue中将md转成html,Vue/Vue中Html和Markdown互相转换/README.md · 倚栏听风/LearningNotes - Gitee.com...
- 全排列(去除重复)Permutations II
- web项目java程序的作用_基础知识(javaWeb工程目录结构)及各文件夹的作用
- svr预测出来是一条直线_如何预测股价目标位,涨跌目标预测法之“解消点”帮你寻找...
- Java package 与 import
- windows下git安装
- 本地广播LocalBroadcastManager简单使用
- 在线制作车牌效果图_价格低的防火板材行业专家在线为您服务
- JVM学习(1)——通过实例总结Java虚拟机的运行机制
- atitit.无为而治在企业管理,国家治理,教育领域的具体思想与实践
- 搭建属于自己的复古传奇私服
- Logic Pro X for Mac(专业级音频制作软件)
- 【NOI Online】 2021普及
- 神器大师泰兹瑞与威穆
- C语言小项目--贪吃蛇游戏
- matlab中求矩阵A的特征向量,matlab层次分析法求特征值及特征向量.doc
- OJ——计算并联电阻的阻值
- 【华为报考全攻略】华为考试自己如何报考?