mmc host驱动的核心的数据结构是struct mmc_host,而对具体的mmc host驱动,是要实现host相关的操作函数集struct mmc_host_ops,比如卡的检测,写保护,发送命令请求等,然后创建一个mmc_host并添加进系统,对于接口如下:
drivers/mmc/core/host.c:
mmc_alloc_host/mmc_free_host
mmc_add_host/mmc_remove_host
mmc_alloc_host函数比较简单,创建一个mmc_host并做初始化:
其中初始化了一个work节点,mmc_rescan这个函数比较重要,用来做卡的检测。
mmc_add_host向系统添加一个mmc_host:
mmc_start_host会调用_mmc_detect_change:
向work_queue提交一个work来检测卡,具体的检测函数就是前面的mmc_rescan: