Chinaunix首页 | 论坛 | 博客
  • 博客访问: 37218
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 91
  • 用 户 组: 普通用户
  • 注册时间: 2017-07-20 23:09
个人简介

如果曾经有过汗水里的耕耘,就会在收获的季节不致去懊悔曾经蹉跎的岁月

文章分类

全部博文(9)

文章存档

2017年(9)

我的朋友

分类: LINUX

2017-08-17 00:30:40

  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:

如果设置了MMC_CAP_NONREMOVABLE,表示host不支持热插拔卡,否则调用mmc_host_ops的get_cd检查是否有卡,如果有卡,则调用mmc_rescan_try_freq继续探测:

按照设备是否支持相应协议命令来区分sdio设备,SD卡和MMC卡。

如果是SD卡,调用mmc_sd_init_card创建sd卡设备对象

如果是MMC卡,调用mmc_init_card创建mmc卡设备对象

然后调用mmc_add_card将卡设备添加进系统
阅读(1725) | 评论(0) | 转发(0) |
0

上一篇:DMA映射

下一篇:MMC驱动之SD卡

给主人留下些什么吧!~~