void dm_mmc_send_init_stream(struct udevice *dev) { struct dm_mmc_ops *ops = mmc_get_ops(dev); if (ops->send_init_stream) ops->send_init_stream(dev); }
int dm_mmc_get_cd(struct udevice *dev) { struct dm_mmc_ops *ops = mmc_get_ops(dev); if (!ops->get_cd) return -ENOSYS; return ops->get_cd(dev); }
int dm_mmc_set_ios(struct udevice *dev) { struct dm_mmc_ops *ops = mmc_get_ops(dev); if (!ops->set_ios) return -ENOSYS; return ops->set_ios(dev); }
int dm_mmc_wait_dat0(struct udevice *dev, int state, int timeout) { struct dm_mmc_ops *ops = mmc_get_ops(dev); if (!ops->wait_dat0) return -ENOSYS; return ops->wait_dat0(dev, state, timeout); }
int dm_mmc_execute_tuning(struct udevice *dev, uint opcode) { struct dm_mmc_ops *ops = mmc_get_ops(dev); if (!ops->execute_tuning) return -ENOSYS; return ops->execute_tuning(dev, opcode); }
int dm_mmc_send_cmd(struct udevice *dev, struct mmc_cmd *cmd, struct mmc_data *data) { struct mmc *mmc = mmc_get_mmc_dev(dev); struct dm_mmc_ops *ops = mmc_get_ops(dev); int ret; mmmc_trace_before_send(mmc, cmd); if (ops->send_cmd) ret = ops->send_cmd(dev, cmd, data); else ret = -ENOSYS; mmmc_trace_after_send(mmc, cmd, ret); return ret; }
int mmc_bind(struct udevice *dev, struct mmc *mmc, const struct mmc_config *cfg) { struct blk_desc *bdesc; struct udevice *bdev; int ret, devnum = -1; if (!mmc_get_ops(dev)) return -ENOSYS; #ifndef CONFIG_SPL_BUILD /* Use the fixed index with aliase node's index */ ret = dev_read_alias_seq(dev, &devnum); debug("%s: alias ret=%d, devnum=%d\n", __func__, ret, devnum); #endif ret = blk_create_devicef(dev, "mmc_blk", "blk", IF_TYPE_MMC, devnum, 512, 0, &bdev); if (ret) { debug("Cannot create block device\n"); return ret; } bdesc = dev_get_uclass_platdata(bdev); mmc->cfg = cfg; mmc->priv = dev; /* the following chunk was from mmc_register() */ /* Setup dsr related values */ mmc->dsr_imp = 0; mmc->dsr = 0xffffffff; /* Setup the universal parts of the block interface just once */ bdesc->removable = 1; /* setup initial part type */ bdesc->part_type = cfg->part_type; mmc->dev = dev; return 0; }