linux下MMC/SD/SDIO驱动系列之二 ---- host注册过程(一)
来源:互联网 发布:php 运行时间设置 编辑:程序博客网 时间:2024/04/28 18:41
上篇文章说到了MMC/SD/SDIO(以下简称MMC)的驱动从大的方面来说分为主设备驱动和从设备驱动,那本文就来详细的讲述主设备驱动注册的过程。
MMC主设备(也就是host)指的是集成于CPU内部的MMC controller,笔者用的是4412芯片,从datasheet可以看出,里面集成了四个MMC controller,分别是mmc0,mmc1,mmc2,mmc3。 并且从上一篇文章我们知道,WIFI模块是接在mmc3 这个host上面。
在linux系统中,将每个host设备封装成platform_device来逐一进行注册。对于笔者所使用的内核(3.2.0版本)来说,每一个host设备所对应的platform_device文件位于目录($KERNEL_SOURCE)/arch/arm/plat-samsung下,分别为dev-hsmmc.c,dev-hsmmc1.c,dev-hsmmc2.c,dev-hsmmc3.c,为了与实际WIFI模块对应,我们重点进入dev-hsmmc3.c文件看一看
所以总结来说,系统化在初始化的时候,就已经将s3c_device_hsmmc3(也就是那个host mmc3)注册进了platform总线(其他的mmc0,mmc1,mmc2都是一个道理)。
当然,对于熟悉platform机制的朋友来说,此时仅仅只是注册了platform_device ,而对应的platform_driver还没有注册。下面就来说说这个platform_driver的注册,它是在$(KERNEL_SOURCE)/drivers/mmc/host目录下的sdhci-s3c.c文件中进行的,该文件中有如下的一个注册函数调用:
其中的参数sdhci_s3c_driver就是上面所说的platform_driver,它也是定义在sdhci-s3c.c文件中,来看一下:
在对sdhci_s3c_driver进行注册的过程中,系统会根据sdhci_s3c_driver->driver.name成员变量(此处是“s3c-sdhci”)在platform_bus 总线上寻找同名字的platform_dvice(这个过程称之为“探测”),通过上面对s3c_device_hsmmc3的注册分析,发现s3c_device_mmc3.name也刚好是“s3c-sdhci”,所以他俩刚好可以配对,探测成功,同时当大家查阅s3c_device_hsmmc,s3c_device_hsmmc1以及s3c_device_hsmmc2的时候发现他们的name成员变量都是“s3c-sdhci”,,所以会有四次成功的探测,每一次探测成功,就会调用sdhci_s3c_driver.probe函数---sdhci_s3c_probe,这个函数至关重要,在整个驱动注册过程中起着核心作用,关于它的详细内容,见下一篇文章。
- linux下MMC/SD/SDIO驱动系列之二 ---- host注册过程(一)
- linux下MMC/SD/SDIO驱动系列之二 ---- host注册过程(一)
- linux下MMC/SD/SDIO驱动系列之三 ---- host注册过程(二)
- linux下MMC/SD/SDIO驱动系列之四 ---- SDIO的识别与操作
- linux下MMC/SD/SDIO驱动系列之四 ---- SDIO的识别与操作
- linux下MMC/SD/SDIO驱动系列之一 ---- 概述
- linux下MMC/SD/SDIO驱动系列之一 ---- 概述
- linux下SD/MMC/SDIO驱动分析
- 编写自己的SD/MMC Host驱动(一):注册
- s5pv210-Linux驱动之MMC/SD/SDIO区别
- SD/MMC/SDIO驱动
- Linux SD/MMC/SDIO驱动分析
- Linux SD/MMC/SDIO驱动分析
- Linux SD/MMC/SDIO驱动分析
- Linux SD/MMC/SDIO驱动分析(新)
- Linux SD/MMC/SDIO
- linux mmc/sd/sdio
- 编写自己的SD/MMC Host驱动(二):工作过程和大结局
- linux下配置sendmail
- 字符串全排列算法
- 12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?
- 笔记6:vb.net的内存数据流MemoryStream、缓冲数据流BufferedStream
- 输入一个字符串,输出该字符串中字符的所有组合
- linux下MMC/SD/SDIO驱动系列之二 ---- host注册过程(一)
- 彻底学通string.Format以及IFormattable,IFormatProvider,ICustomFormatter
- 打靶问题。一个射击运动员打靶,靶一共有10环,连开10 枪打中90环的可能性有多少?
- 设计模式——Template模式
- 使用 补间动画(Tween Animation)
- 2013年10月17日浙大ZJG听百度CEO李彦宏讲座
- 输入一个字符串,输出该字符串中最大对称子串的长度
- HDU 2255(KM) - from lanshui_Yang
- Study-Hard-数据库连接及实现内部原理(上)