// ====== 初始化sdhci控制器 ======
sdhci_esdhc_imx_probe => sdhci_pltfm_init
// drivers/mmc/host/sdhci-pltfm.c
sdhci_pltfm_init => sdhci_alloc_host
// drivers/mmc/host/sdhci.c
sdhci_alloc_host => mmc_alloc_host
// mmc申请sdcard主机
// drivers/mmc/core/host.c
mmc_alloc_host => mmc_rescan
// 扫描sdio总线的SDCard,检测到则初始化sd卡
// drivers/mmc/core/core.c
mmc_rescan => mmc_rescan_try_freq => mmc_sd_init_card
// 初始化sd卡
// drivers/mmc/core/sd.c
mmc_sd_init_card => mmc_sd_setup_card //shows: host does not support reading read-only switch, assuming write-enable
mmc_sd_init_card => mmc_attach_sd => mmc_add_card
// 在总线上添加sdcard设备
// drivers/mmc/core/bus.c
mmc_add_card => device_add
// ======= 匹配设备,执行已经加载的sdcard驱动 ======
// 当设备添加和驱动添加时,都会匹配一次,执行相应的probe函数
// drivers/mmc/core/block.c
mmc_blk_probe => mmc_blk_alloc => mmc_blk_alloc_req
直接开始下一节说明: 内核驱动基础接口