QualComm 8x50 上MMC host controller 硬件检测分析

in MMC host controller driver initialization process, msmsdcc_probe() function will be called. but in fact, kernel has not detected the real MMC host controller hardware till now, so it should has detect process.
there are two process for detect mechanism.
one is for "MMC / SD / SDIO card hardware is already ready while the kernel does initial process". some MMC / SD / SDIO card hardware is jointed to the host controller by hardware design, for example, WIFI chipset which uses SDIO interface.
another is for "MMC / SD / SDIO card hardware is not inserted while the kernel does initial process". one example for it is MMC / SD storage card, the card may be inserted at any time according to customer's request.

1. now let us analysis these two processes.

1.1  MMC / SD / SDIO card hardware is ready while the kernel does initial process.
as we know, msmsdcc_probe() function will be called in MMC host controller driver initialization.
this function do detect process in fact. the below the process.
msmsdcc_probe() -> mmc_add_host() -> mmc_start_host() -> mmc_detect_change() -> (&host->detect) -> mmc_rescan().
we will analysis mmc_rescan() function after a while.

1.2 MMC / SD / SDIO card hardware is not inserted while the kernel does initial process.
irq is used for this kind of detect process.
in msmsdcc_probe() function, it will register a irq for the card detect process.

        ret = request_irq(plat->status_irq,
                  msmsdcc_platform_status_irq,
                  IRQF_SHARED | plat->irq_flags,
                  DRIVER_NAME " (slot)",
                  host);
so, the detect process is as below:
msmsdcc_platform_status_irq() -> msmsdcc_check_status() -> mmc_detect_change() ->  -> (&host->detect) -> mmc_rescan()

now it is time to analysis mmc_rescan() function which does real detect process.
2. mmc rescan() function process analysis.
it is in driver/mmc/core/core.c
a. scan SDIO device firstly,
mmc_send_io_op_cond()  , it sends CMD5 command to detect SDIO device.
b. then scan SD device.
mmc_send_app_op_cond(), it sends CMD41 command to detect SD device.
c. scan MMC device at last.
mmc_send_op_cond(), it sends CMD1 command to detect MMC device.

for example, if mmc_send_io_op_cond() returns ok, mmc_attach_sdio() function will be called.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值