struct mmc_host *mmc_alloc_host(int extra, struct device *dev) 分配一个mmc_host结构体,并对其进行初始化 int mmc_add_host(struct mmc_host *host) 将host device注册进设备驱动模型,并做host硬件的初始化,向PM core 注册notify, 在本函数完成之前,必须能保证host可以使用 void mmc_remove_host(struct ...
3. 主要流程 3.1 mmc_start_host mmc_start_host-> mmc_detect_change-> mmc_schedule_delayed_work(&host->detect, delay)-> mmc_rescan-> mmc_rescan_try_freq 可参考Linux mmc framework2: 基本组件之host3.1 mmc_add_host部分 TODO
5. 项目实施:MMC的建设流程包括mmc_add_host、mmc_start_host和mmc_rescan等步骤,这象征着合作项目的启动和持续监控。 6. 服务优化与市场拓展:随着合作的深入,MMC会不断优化其服务,适应中国市场的需求,同时探索新的合作机会,如针对老年客户的服务改进,如使用微信扫码鉴权,以及对预留固话客户的管理方式。 创新与文化...
会和mmc_host结构体一起分配,// dev——》底层host controller的device结构体,用于作为mmc_host的device的父设备int err;struct mmc_host*host;/* 分配内存空间,其中多分配了extra字节作为私有数据 */host=kzalloc(sizeof(struct mmc_host)+extra,GFP_KERNEL);if(!host)returnNULL...
对应代码drivers/mmc/core/host.c,drivers/mmc/core/host.h。 为底层host controller driver实现mmc host的申请以及注册的API等等,以及host相关属性的实现。 一、API总览 1、mmc host分配、注册相关 mmc_alloc_host & mmc_free_host 底层host controller驱动调用,用来分配或者释放一个struct mmc_host结构体,将其于...
host->class_dev.class = &mmc_host_class; INIT_DELAYED_WORK(&host->detect, mmc_rescan); INIT_DELAYED_WORK(&host->sdio_irq_work, sdio_irq_work); timer_setup(&host->retune_timer, mmc_retune_timer, 0); mmc->ops = &sunxi_mmc_ops; ...
host->mmc = mmc; //得到设备寄存器的MMU后的基址 host->base = ioremap(dev->res.start, SZ_4K); if (!host->base) { ret = -ENOMEM; goto clk_disable; } //这是请求操作函数结构,最终的对MMC卡的操作都是通过它来完成的. mmc->ops = &mmci_ops; ...
5、host的mmc总线相关 mmc_resume_bus mmc_attach_bus & mmc_detach_bus 6、mmc请求相关 mmc_request_done mmc_wait_for_req mmc_wait_for_cmd mmc_set_data_timeout mmc_align_data_size 7、card检测相关 mmc_detect_change mmc_rescan mmc_detect_card_removed ...
_data;//平台数据regs = platform_get_resource(pdev, IORESOURCE_MEM,0);//获取IO地址, 即寄存器地址host->regs = devm_ioremap_resource(&pdev->dev, regs);//将IO地址映射为虚拟地址if(IS_ERR(host->regs))returnPTR_ERR(host->regs);//获取寄存器的物理基地址host->phy_regs = regs->start;...
第一阶段:我们看host/目录下的 s3cmci.c 老方法,先找 module_init(s3cmci_init);可以看出Host驱动注册函数入口是s3cmci_init。 static int __init s3cmci_init(void) { platform_driver_register(&s3cmci_driver_2410); } 直接到s3cmci_driver_2410 来寻找probe 函数,可以看到 s3cmci_probe_2410; ...