mmc分析




void mmc_rescan(struct work_struct *work)
{//先获取host控制器
 struct mmc_host *host =
  container_of(work, struct mmc_host, detect.work);
 int i;

//这里变量trigger_card_event 在检测sd卡的中断函数内设置为true,就是说如果是因为发生的中断而触发检测的就先调用mmc总线的ops来检测mmc卡是否还存在,此时并不知道是mmc卡还是sd卡,只是检测状态比如gpio pin的高低来初步判断

 if (host->trigger_card_event && host->ops->card_event) {
  host->ops->card_event(host);
  host->trigger_card_event = false;
 }

//触发检测mmc卡的方式有两种,一种是通过中断方式的,一种是主动调用方式,如果在mmc host还没初始化完就触发了中断肯定是有问题的,所以这里设置一个参数rescan_disable来防止。

 if (host->rescan_disable)
  return;

 /* If there is a non-removable card registered, only scan once */
 if ((host->caps & MMC_CAP_NONREMOVABLE) && host->rescan_entered)
  ret

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值