atomic_t*abort){///只考虑abort为NULL的情况,在mmc core中的mmc_claim_host也是将其设置为NULLDECLARE_WAITQUEUE(wait,current);unsigned long flags;int stop;might_sleep();// 说明这个函数可能导致进程休眠add_wait_queue(
mmc core是指mmc subsystem的核心实现,这里的mmc是表示mmc总线、接口、设备相关的一种统称,可以理解为一种软件架构。 而mmc type card则是指mmc卡或者emmc。 总之,这里的mmc是两种概念概念,需要自己先消化一下。 3、mmc总线和mmc_bus 在本文里面这两个是不同的概念。 mmc_bus是指mmc core抽象出来的虚拟总线,和...
MMCcore位于中间,是MMC framework的核心实现,负责抽象host、bus、card等软件实体,负责向底层提供统一、便利的编写Hostcontroller driver的API; MMC hostcontroller driver位于底层,基于MMC core提供的框架,驱动具体的硬件(MMC controller); MMC carddriver位于最上面,负责驱动MMCcore抽象出来的虚拟的card设备,并对接内核其它...
1、struct mmc_host struct mmc_host是mmc core由host controller抽象出来的结构体,用于代表一个mmc host控制器。 数据结构如下: AI检测代码解析 struct mmc_host { struct device *parent; // 对应的host controller的device struct device class_dev; // mmc_host的device结构体,会挂在class/mmc_host下 int ...
struct mmc_host是mmc core由host controller抽象出来的结构体,用于代表一个mmc host控制器。 数据结构如下: structmmc_host{structdevice*parent;// 对应的host controller的devicestructdeviceclass_dev;// mmc_host的device结构体,会挂在class/mmc_host下intindex;// 该host的索引号conststructmmc_host_ops*ops;...
当然,mmc core提供了mmc_test.c来作为mmc driver的测试文件。 如何使用mmc_test.c测试文件测试mmc驱动呢? 1、将mmc_test.c编译到内核 默认情况下,mmc_test.c是独立的文件,并没有编译到内核中,需要我们到menuconfig中手动打开。 打开的配置有:CONFIG_MMC_TEST、CONFIG_MMC_DEBUG、CONFIG_DEBUG_FS三个配置。
mmc core主模块调用,用于获取host时钟和释放host时钟 回到顶部 二、数据结构 1、mmc_host_class mmc_host_class代表了mmc_host这个类。其内容如下: staticstructclassmmc_host_class= { .name ="mmc_host",// 添加到sys文件系统之后,会生成/sys/class/mmc_host这个目录.dev_release = mmc_host_classdev_releas...
经过一系列的调用,最终都会调到host->ops->request,这个十分重要,调用该函数代表着从MMC的core层进入到host层了,request定义在mmc_host_ops结构体里,host层是与平台紧密相关的,drivers/mmc/host的源文件并不是所有都会编译,所以这里还需结合你的芯片平台。 进入drivers/mmc/host, 可以通过以下方法确认使用的host是哪...
通知mmc core某个mmc_request已经处理完成,由host controller调用。以sdhci类型的host为例,处理完一个mmc_request之后,会执行sdhci_tasklet_finish,而在sdhci_tasklet_finish中会调用mmc_request_done来通知host某个mmc_request已经处理完成了。AI检测代码解析 void mmc_request_done(struct mmc_host *host, struct mmc...
Linux 提供了 MMC 子系统来实现对各种 SD/MMC/EMMC/SDIO设备访问,MMC 子系统由上到下可以分为三层,MMC/SD card 层,MMC/SD core 层以及MMC/SD host 层,它们之间的层次关系如下所示。 MMC/SD card 层负主要是按照 LINUX 块设备驱动程序的框架实现一个卡的块设备驱动。负责块设备请求的处理,以及请求队列的管...