发布时间:2014-05-03 20:44:47
本节中主要讲述探测函数中的初始化和移除slot,首先看下初始化:static int __init dw_mci_init_slot(struct dw_mci *host, unsigned int id){ struct mmc_host *mmc; struct dw_mci_slot *slot; mmc = mmc_alloc_host(sizeof(struct dw_mc.........【阅读全文】
发布时间:2014-05-03 20:44:39
这一节我们看下探测函数tasklet中的两个函数,首先看下发现卡函数dw_mci_tasklet_card:static void dw_mci_tasklet_card(unsigned long data){ struct dw_mci *host = (struct dw_mci *)data; int i; //每个slot都执行一次,本例只有一个.........【阅读全文】
发布时间:2014-05-03 20:44:27
接下来,继续第一部分,来看下DW的SD卡驱动中关于操作DAM部分,在探测函数中,主要是如下两条语句: host->dma_ops = pdata->dma_ops; dw_mci_init_dma(host); 由于这里是探测函数,在设备的定义中,也没有对pdata->dma_ops成员进行初始.........【阅读全文】
发布时间:2014-05-03 20:44:12
分析一个驱动,一般是从module_init()和module_exit()入手,首先来看下module_init()函数。static int __init dw_mci_init(void){ return platform_driver_probe(&dw_mci_driver, dw_mci_probe);} 在platf.........【阅读全文】