bbb mmc驱动分析

来源:互联网 发布:淘宝格士子湖铺 编辑:程序博客网 时间:2024/05/17 00:59
1. drivers/mmc/host/omap_hsmmc.c
static int __init omap_hsmmc_init(void)
{
     /* Register the MMC driver */
     return platform_driver_probe(&omap_hsmmc_driver, omap_hsmmc_probe);
}


static int __init omap_hsmmc_probe(struct platform_device *pdev)
{
     mmc = mmc_alloc_host(sizeof(struct omap_hsmmc_host), &pdev->dev);
}


2. drivers/mmc/core/host.c
struct mmc_host *mmc_alloc_host(int extra, struct device *dev)
{
     INIT_DELAYED_WORK(&host->detect, mmc_rescan);
}


3. drivers/mmc/core/core.c
void mmc_rescan(struct work_struct *work)
{
     host->bus_ops->detect(host);
}


4. drivers/mmc/core/mmc.c
static void mmc_detect(struct mmc_host *host)
{
     err = _mmc_detect_card_removed(host);
}


5. drivers/mmc/core/core.c
int _mmc_detect_card_removed(struct mmc_host *host)
{
     ret = host->bus_ops->alive(host);
}


6. drivers/mmc/core/mmc.c
static int mmc_alive(struct mmc_host *host)
{
     return mmc_send_status(host->card, NULL);
}


7. drivers/mmc/core/mmc_ops.c
int mmc_send_status(struct mmc_card *card, u32 *status)
{
     err = mmc_wait_for_cmd(card->host, &cmd, MMC_CMD_RETRIES);
}
0 0