How tough life is, how strong you should be!
分类: LINUX
2012-07-19 19:45:25
linux 2.6 中的mmc/sd驱动分为以下几方面的内容
1. sysfs 层的总线类型处理: 注册一组 mmc 类型处理函数, 标志为 "mmc"
具体在mmc_sysfs.c文件中实现
2. mmc/sd 快设备管理:注册一个块设备和一组 mmc 总线类型的 driver 子函数, 实现块设备的队列管理等
drivers/mmc/mmc_block.c
3. mmc/sd host管理: 实现 host 的管理
. drivers/mmc/mmc.c:主要的 MMC command 與 protocol 實作。4. 针对特定的mcu实现一个host驱动实例:主要是注册一个 host实体,中断处理函数,io设置函数,请求处理函数等
以上1.2.3基本是不需要修改的,需要处理的就是 4.要做的工作.当有卡插入时,由4中实现的插卡中断激活卡初始化程序和总线探测函数. 由mmc总线探测函数会调用块设备的探测函数,在卡设备探测函数中会初始化块设备的请求队列和注册一个gendisk实体(以后文件系统会通过 gendisk实体访问 mmc 块设备),同时在sysfs中建立真正的 mmc/sd 设备.块设备通过具体的 host 注册的io设置函数和请求函数与具体的host通讯