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卡驱动相关推荐

  1. MMC子系统识别SD设备过程简述

    一 :引子–WIFI 模块移植 二 : MMC 识别 SD设备过程 第一步: 注册虚拟总线 第二步: 初始化并挂载设备驱动 第三步:初始化注册主控驱动 第四步:Host驱动的prob() 4.1 mm ...

  2. sd 卡驱动在2.6内核的编写.sd/mmc/sdio kernel,sd/mmc/sdio 内核

    [转帖请注明出处:blog.csdn.net/lanmanck] sd卡驱动主要参照已有的文件即可,2410,9260都挺好.其实写驱动主要是搞清楚工作流程即可.我这里写一些心得与大家分享下,基于2. ...

  3. 浅析Linux内核之mmc子系统-sdio

    现在的Linux内核中,mmc不仅是一个驱动,而是一个子系统.这里通过分析Linux3.2.0内核,结合TI的arm335x平台及omap_hsmmcd host分析下mmc子系统,重点关注sdio及 ...

  4. Linux驱动分析之MMC子系统框架

    前言 上一篇<一文搞懂SDIO>简单介绍了SDIO接口及相关的协议.接下来来看一下Linux提供的驱动框架. MMC子系统介绍 Linux内核中,MMC不仅是一个驱动,而是一个子系统.内核 ...

  5. linux mmc 子系统,linux2.6.28块设备mmc_sd卡mmc子系统核心初始化

    参考http://blog.csdn.net/wavemcu/article/details/7366852 // / /// MMC/SD设备驱动代码在Linux源码中的位置/linux-2.6.3 ...

  6. NUC970 SD卡驱动(SDIO)

    在读取SD卡的R2长响应折腾了不少时间,原因是必须开启DMA,不开启DMA,R2响应将不会传输到SDIO的FIFO中,将SDIO接口与STM32保持一致,并兼容应用层SDIO_SDCARD驱动. 寄存 ...

  7. (linux)MMC 卡驱动分析

    最近花时间研究了一下 MMC 卡驱动程序,开始在网上找了很多关于 MMC 卡驱动的分析文章,但大都是在描述各个层,这对于初学者来讲帮助并不大,所以我就打算把自己的理解写下来,希望对大家有用.个人觉得理 ...

  8. rt-thread SDIO驱动框架分析(SD卡驱动\SD Nand驱动)

    rt-thread SDIO驱动框架分析之SD卡驱动 文章目录 rt-thread SDIO驱动框架分析之SD卡驱动 1. 前言 2. SDIO通用驱动框架介绍 3. 文件架构分析 4. SDIO设备 ...

  9. STM32F407ZGT6使用SDIO方式驱动SD卡

    原文地址::STM32F407ZGT6使用SDIO方式驱动SD卡 - JavaShuo 相关文章 1.[STM32] STM32官方标准固件库概述----[STM32] STM32官方标准固件库概述_ ...

最新文章

  1. [转载]什么情况下应该设置 cudnn.benchmark = True?
  2. 用C语言写的万年历---亲手写的。好累哦
  3. vue中将md转成html,Vue/Vue中Html和Markdown互相转换/README.md · 倚栏听风/LearningNotes - Gitee.com...
  4. 全排列(去除重复)Permutations II
  5. web项目java程序的作用_基础知识(javaWeb工程目录结构)及各文件夹的作用
  6. svr预测出来是一条直线_如何预测股价目标位,涨跌目标预测法之“解消点”帮你寻找...
  7. Java package 与 import
  8. windows下git安装
  9. 本地广播LocalBroadcastManager简单使用
  10. 在线制作车牌效果图_价格低的防火板材行业专家在线为您服务
  11. JVM学习(1)——通过实例总结Java虚拟机的运行机制
  12. atitit.无为而治在企业管理,国家治理,教育领域的具体思想与实践
  13. 搭建属于自己的复古传奇私服
  14. Logic Pro X for Mac(专业级音频制作软件)
  15. 【NOI Online】 2021普及
  16. 神器大师泰兹瑞与威穆
  17. C语言小项目--贪吃蛇游戏
  18. matlab中求矩阵A的特征向量,matlab层次分析法求特征值及特征向量.doc
  19. OJ——计算并联电阻的阻值
  20. 【华为报考全攻略】华为考试自己如何报考?

热门文章

  1. Vue基础语法知识(自用,完整版)
  2. 调查问卷的人口学基本信息该如何设计?
  3. CE1到9关详细教程
  4. 塔夫斯大学计算机专业,塔夫茨大学优势专业
  5. 教你30岁前挣够500万
  6. 技术分享:国民远控向日葵如何通过BBR算法提升远控体验?
  7. 还在用Evernote或印象笔记吗?来看看笔记神器Notion吧!
  8. 【bluestacks】蓝叠模拟器hyper-v版本提示hyper-v inaccessible
  9. mysql取出时间最近的一条字段_Mysql 根据时间取出每组数据中最新的一条
  10. jQuery(一):概述、选择器、操作(元素本身、属性、内容、样式)、元素遍历、事件