s3c6410 的SDIO驱动分析(4)

unsigned int  sdio_funcs; /* number of SDIO functions */
 struct sdio_cccr cccr;  /* common card info */
 struct sdio_cis  cis;  /* common tuple info */
 struct sdio_func *sdio_func[SDIO_MAX_FUNCS];
/* SDIO functions (devices) */
 unsigned  num_info; /* number of info strings */
 const char  **info;  /* info strings */
 struct sdio_func_tuple *tuples; /* unknown common tuples */

struct dentry  *debugfs_root;
};

 

 

mmc_card 与 sdio 总线的device (sdio_func)的交互的关系体现在 mmc_card中sdio_func定义

而mmc_card与mmc_host关系体现在定义 mmc_card的host定义中

 

而mmc_bus中,其驱动就是mmc_driver

 

 

/*
 * MMC device driver (e.g., Flash card, I/O card...)
 */
struct mmc_driver {
 struct device_driver drv;
 int (*probe)(struct mmc_card *);
 void (*remove)(struct mmc_card *);
 int (*suspend)(struct mmc_card *, pm_message_t);
 int (*resume)(struct mmc_card *);
};

extern int mmc_register_driver(struct mmc_driver *);
extern void mmc_unregister_driver(struct mmc_driver *)

 

 

而使用了mmc_driver 好象只有处理SD卡块设备

 

//driver/mmc/core/block.c

static struct mmc_driver mmc_driver = {
 .drv  = {
  .name = "mmcblk",
 },
 .probe  = mmc_blk_probe,
 .remove  = mmc_blk_remove,
 .suspend = mmc_blk_suspend,
 .resume  = mmc_blk_resume,
};

 


它大体有如下关系,这里出问题就是BSP这一侧 sdio channel1的驱动

 

s3c6410 的SDIO驱动分析

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwfggy.html