底层host controller驱动调用,解析mmc_host的dtsi节点的部分属性。 原型:voidmmc_of_parse(structmmc_host *host) 4、mmc host时钟相关 mmc_host_clk_hold & mmc_host_clk_release mmc core主模块调用,用于获取host时钟和释放host时钟 回到顶部 二、数据结构 1、mmc_host_class mmc_host_class代表了mmc_host这...
int stop;might_sleep();// 说明这个函数可能导致进程休眠add_wait_queue(&host->wq, &wait);// 把当前进程加入到等待队列中spin_lock_irqsave(&host->lock, flags);while(1) {// 以下尝试获取host,如果host正在被占用,会进入休眠set_current_state(TASK_UNINTERRUPTIBLE);// 设置进程状态为TASK_UNINTERRUPTI...
mmc_start_host 用来启动一个host,mmc_stop_host用来停止一个host。当底层host controller调用mmc_add_host来注册host时,在mmc_add_host中就会调用mmc_start_host来启动一个host了。具体参考《mmc core——host模块说明》。相对应的,会在mmc_remove_host中调用mmc_stop_host停止host。void mmc_start_host(struct ...
mmc_host_clk_hold & mmc_host_clk_release mmc core主模块调用,用于获取host时钟和释放host时钟 二、数据结构 1、mmc_host_class mmc_host_class代表了mmc_host这个类。其内容如下: 代码语言:javascript 复制 staticstructclassmmc_host_class={.name="mmc_host",// 添加到sys文件系统之后,会生成/sys/class/...
mmc core初始化,包括注册mmc bus、mm host class等等 mmc host的管理和维护,包括为其他模块提供mmc_host的操作接口,如下 host的启动和停止 host的占用和释放 host电源状态的保存和恢复 host总线操作集的绑定和解绑 host上卡状态检测 为其他模块提供mmc_card的操作接口,如下 ...
而本文的mmc总线是一种物理概念,是实际的总线,是和host controller直接相关联的。 一、API总览 1、mmc type card匹配相关 mmc_attach_mmc 提供给mmc core主模块使用,用于绑定card到host bus上(也就是card和host的绑定)。 通过mmc_host获取mmc type card信息,初始化mmc_card,并进行部分驱动,最后将其注册到mmc...
mmc_host_clk_hold(mmc);mmc_set_clock(mmc, clock_setting_value); mmc_host_clk_release(mmc); clock_max = clock_setting_value; clock_flag =1; clock_show = clock_setting_value; printk("%s : result of clock value =%d\n", __func__,clock_setting_value);returncount; ...
@@ -542,11 +539,8 @@ static void mmc_wait_for_req_done(struct mmc_host *host, static void mmc_pre_req(struct mmc_host *host, struct mmc_request *mrq, bool is_first_req) { - if (host->ops->pre_req) { - mmc_host_clk_hold(host); ...
mmc_detect_change(host, 0); // } 在mmc_power_off(host);函数中进行各种各样的设置; static void mmc_power_off(struct mmc_host *host) { mmc_host_clk_hold(host); host->ios.clock = 0; host->ios.vdd = 0; host->ocr = 1 << (fls(host->ocr_avail) - 1); ...
> mmc_host_clk_hold(card->host); > err = card->host->ops->execute_tuning(card->host, > MMC_SEND_TUNING_BLOCK); > diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c > index 6889a82..444668c 100644 > --- a/drivers/mmc/core/sdio.c ...