有了上一篇mmc子系统学习笔记四 mmc子系统的结构组织的介绍,看下面的代码似乎容易了许多,这篇文章,walfred就把基于Linux 2.6.32 高通msm的bsp代码,以及mmc子系统的驱动代码先交待出来,这样看起来会更有针对性。
BSP相关代码
在soc系统中,sdcc不可能单独使用cpu的接口连接mmc总线,或者sdio总线,也不会使用spi,sci等,故直接集成到cpu中,充作一个platform_device。
arch/arm/
mach-msm/
board-mahimahi-mmc.c /*初始化platform_device,并将其添加到platform_bus上*/
board-qsd8x50.c /*platform_device的资源定义*/
mmc驱动相关代码
driver/
mmc/
card/
block.c /*描述了一个块设备驱动;*/
queue.c /*上述块设备驱动的请求队列等的实现;*/
core/ /*mmc子系统的核心层次*/
bus.c /*mmc_bus相关,包括驱动mmc_driver注册,及设备mmc_card设备及驱动注册*/
core.c /*核心,调用sd,mmc,sdio操作函数*/
mmc_ops.c /*cmd0 cmd8*/
mmc.c /*主要是将mmc设备初始化成mmc_card添加到mmc总线,在添加之前需要完成的初始化,获取寄存器信息等;*/
sdio_ops.c /*cmd5和cmd52*/
sdio.c 主要是将sdio设备初始化成mmc_card添加到mmc总线,在添加之前需要完成的初始化,获取寄存器信息等;
sd_ops.c /*cmd41相关*/
sd.c 主要是将sd设备初始化成mmc_card添加到mmc总线,在添加之前需要完成的初始化,获取寄存器信息等;
host/
host.c /*和host相关的一些函数*/
msm_sdcc.c /*Qualcomm MSM 7X00A SDCC Driver*/
其他平台暂时忽略