原文再续,书接上回。本文我们进行mmc子系统中mmc card的添加与删除流程。针对iic设备、spi设备、rtc设备等非热插拔设备而言,我们一般在板级文件或者设备树中定义外设信息,完成外设的注册;但针对mmc card而言,其属于热插拔设备,不需要在板级文件或设备树中进行外设的注册,而由mmc子系统通过mmc card的rescan机制,实现mmc card的自动检测及注册机制。本篇主要即用来介绍mmc card的检测流程及mmc card的注册及注销机制。主要分为如下两部分:
一、mmc card rescan机制
二、mmc card探测及移除
一、Mmc card rescan机制
我们知道mmc card是依附于mmc controller的,因此mmc card rescan机制主要是基于mmc host进行设计的;该rescan机制主要是通过工作队列实现的,如下图为该机制的实现流程,主要说明如下:
- Mmc host子系统提供了延迟队列机制,在执行mmc_alloc_host、mmc_add_host后,则完成了mmc card rescan延迟工作队列及其处理接口的创建等操作;
- 若要触发mmc card rescan(即调度工作队列),则调用mmc_detect_change接口,即可触发mmc card rescan(即完成mmc_host->detect队列的调度);
- 延迟队列的处理函数为mmc_rescan,该函数实现mmc card的添加与移除操作。