drivers\mmc
static const struct blk_ops mmc_blk_ops = { .read = mmc_bread, #ifndef CONFIG_SPL_BUILD .write = mmc_bwrite, .erase = mmc_berase, #endif .select_hwpart = mmc_select_hwpart, };
U_BOOT_DRIVER(mmc_blk) = {
.name = "mmc_blk",
.id = UCLASS_BLK,
.ops = &mmc_blk_ops,
.probe = mmc_blk_probe,
};
需要注意函数:
int mmc_bind(struct udevice *dev, struct mmc *mmc, const struct mmc_config *cfg)
int mmc_unbind(struct udevice *dev)
static int mmc_blk_probe(struct udevice *dev) { struct blk_desc *block_dev = dev_get_uclass_platdata(dev); int dev_num = block_dev->devnum; struct mmc *mmc = find_mmc_device(dev_num);
if (!mmc) return -ENODEV; return mmc_init(mmc); }