linux mmc驱动框架,Linux mmc framework2:基本组件之mmc

1.前言

本文主要mmc组件的主要流程,在介绍的过程中,将详细说明和mmc相关的流程,涉及到其它组件的详细流程再在相关文章中说明。

2.主要数据结构和API

TODO

3. 主要流程

3.1 mmc_attach_mmc

以eMMC为例,则扫描时会回调mmc_attach_mmc

mmc_attach_mmc->

mmc_set_bus_mode(host, MMC_BUSMODE_OPENDRAIN)

mmc_send_op_cond

mmc_attach_bus_ops

mmc_select_voltage

mmc_init_card->

mmc_add_card

mmc_set_bus_mode(host, MMC_BUSMODE_OPENDRAIN)

identification阶段需要设为opendrain模式,协议约定;

mmc_send_op_cond

发送CMD1,arg为0,获取OCR寄存器的内容,设备支持的电压范围

mmc_attach_bus_ops

关联mmc_bus_type的ops

mmc_select_voltage

根据host支持的电压范围和OCR寄存器中读取的电压范围,得出两者都支持的电压范围,然后选取最小的电压值。对于我们的host一般会采用固定输出的电压值。

mmc_init_card

处理卡的检测和初始化:

a). mmc_set_bus_mode(host, MMC_BUSMODE_OPENDRAIN);初始前将busmode设为opend

你可能感兴趣的:(linux,mmc驱动框架)