Lines Matching +full:mmc +full:-

5  * SPDX-License-Identifier:	GPL-2.0+
9 #include <mmc.h>
11 #include <dm/device-internal.h>
21 struct mmc *mmc = mmc_get_mmc_dev(dev); in dm_mmc_send_cmd() local
26 mmmc_trace_before_send(mmc, cmd); in dm_mmc_send_cmd()
27 if (ops->send_cmd) in dm_mmc_send_cmd()
28 ret = ops->send_cmd(dev, cmd, data); in dm_mmc_send_cmd()
30 ret = -ENOSYS; in dm_mmc_send_cmd()
31 mmmc_trace_after_send(mmc, cmd, ret); in dm_mmc_send_cmd()
33 if (ret && cmd->cmdidx != SD_CMD_SEND_IF_COND && in dm_mmc_send_cmd()
34 cmd->cmdidx != MMC_CMD_APP_CMD && in dm_mmc_send_cmd()
35 cmd->cmdidx != MMC_CMD_SEND_OP_COND && in dm_mmc_send_cmd()
36 cmd->cmdidx != MMC_SEND_TUNING_BLOCK_HS200 && in dm_mmc_send_cmd()
37 cmd->cmdidx != MMC_CMD_READ_MULTIPLE_BLOCK && in dm_mmc_send_cmd()
38 cmd->cmdidx != MMC_CMD_WRITE_MULTIPLE_BLOCK) { in dm_mmc_send_cmd()
41 mmc->timing == MMC_TIMING_MMC_HS200 && in dm_mmc_send_cmd()
42 ops->execute_tuning) { in dm_mmc_send_cmd()
44 ops->execute_tuning(mmc->dev, opcode); in dm_mmc_send_cmd()
46 if (retry_time-- > 0) in dm_mmc_send_cmd()
48 printf("MMC error: The cmd index is %d, ret is %d\n", cmd->cmdidx, ret); in dm_mmc_send_cmd()
58 struct mmc *mmc = mmc_get_mmc_dev(dev); in dm_mmc_send_cmd_prepare() local
62 mmmc_trace_before_send(mmc, cmd); in dm_mmc_send_cmd_prepare()
63 if (ops->send_cmd_prepare) in dm_mmc_send_cmd_prepare()
64 ret = ops->send_cmd_prepare(dev, cmd, data); in dm_mmc_send_cmd_prepare()
66 ret = -ENOSYS; in dm_mmc_send_cmd_prepare()
67 mmmc_trace_after_send(mmc, cmd, ret); in dm_mmc_send_cmd_prepare()
68 if (ret && cmd->cmdidx != SD_CMD_SEND_IF_COND in dm_mmc_send_cmd_prepare()
69 && cmd->cmdidx != MMC_CMD_APP_CMD) in dm_mmc_send_cmd_prepare()
70 printf("MMC error: The cmd index is %d, ret is %d\n", cmd->cmdidx, ret); in dm_mmc_send_cmd_prepare()
76 int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) in mmc_send_cmd() argument
78 return dm_mmc_send_cmd(mmc->dev, cmd, data); in mmc_send_cmd()
82 int mmc_send_cmd_prepare(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) in mmc_send_cmd_prepare() argument
84 return dm_mmc_send_cmd_prepare(mmc->dev, cmd, data); in mmc_send_cmd_prepare()
88 bool mmc_card_busy(struct mmc *mmc) in mmc_card_busy() argument
90 struct dm_mmc_ops *ops = mmc_get_ops(mmc->dev); in mmc_card_busy()
92 if (!ops->card_busy) in mmc_card_busy()
93 return -ENOSYS; in mmc_card_busy()
94 return ops->card_busy(mmc->dev); in mmc_card_busy()
97 bool mmc_can_card_busy(struct mmc *mmc) in mmc_can_card_busy() argument
99 struct dm_mmc_ops *ops = mmc_get_ops(mmc->dev); in mmc_can_card_busy()
101 return !!ops->card_busy; in mmc_can_card_busy()
108 if (!ops->set_ios) in dm_mmc_set_ios()
109 return -ENOSYS; in dm_mmc_set_ios()
110 return ops->set_ios(dev); in dm_mmc_set_ios()
113 int mmc_set_ios(struct mmc *mmc) in mmc_set_ios() argument
115 return dm_mmc_set_ios(mmc->dev); in mmc_set_ios()
122 if (!ops->get_wp) in dm_mmc_get_wp()
123 return -ENOSYS; in dm_mmc_get_wp()
124 return ops->get_wp(dev); in dm_mmc_get_wp()
127 int mmc_getwp(struct mmc *mmc) in mmc_getwp() argument
129 return dm_mmc_get_wp(mmc->dev); in mmc_getwp()
136 if (!ops->get_cd) in dm_mmc_get_cd()
137 return -ENOSYS; in dm_mmc_get_cd()
138 return ops->get_cd(dev); in dm_mmc_get_cd()
141 int mmc_getcd(struct mmc *mmc) in mmc_getcd() argument
143 return dm_mmc_get_cd(mmc->dev); in mmc_getcd()
150 if (ops->set_enhanced_strobe) in dm_mmc_set_enhanced_strobe()
151 return ops->set_enhanced_strobe(dev); in dm_mmc_set_enhanced_strobe()
153 return -ENOTSUPP; in dm_mmc_set_enhanced_strobe()
156 int mmc_set_enhanced_strobe(struct mmc *mmc) in mmc_set_enhanced_strobe() argument
158 return dm_mmc_set_enhanced_strobe(mmc->dev); in mmc_set_enhanced_strobe()
160 struct mmc *mmc_get_mmc_dev(struct udevice *dev) in mmc_get_mmc_dev()
167 return upriv->mmc; in mmc_get_mmc_dev()
171 struct mmc *find_mmc_device(int dev_num) in find_mmc_device()
180 printf("MMC Device %d not found\n", dev_num); in find_mmc_device()
187 struct mmc *mmc = mmc_get_mmc_dev(mmc_dev); in find_mmc_device() local
189 return mmc; in find_mmc_device()
202 struct blk_desc *mmc_get_blk_desc(struct mmc *mmc) in mmc_get_blk_desc() argument
207 device_find_first_child(mmc->dev, &dev); in mmc_get_blk_desc()
225 struct mmc *m = mmc_get_mmc_dev(dev); in mmc_do_preinit()
232 if (m->preinit) in mmc_do_preinit()
247 struct mmc *m = mmc_get_mmc_dev(dev); in print_mmc_devices()
254 if (m->has_init) in print_mmc_devices()
259 printf("%s: %d", m->cfg->name, mmc_get_blk_desc(m)->devnum); in print_mmc_devices()
271 int mmc_bind(struct udevice *dev, struct mmc *mmc, const struct mmc_config *cfg) in mmc_bind() argument
275 int ret, devnum = -1; in mmc_bind()
278 return -ENOSYS; in mmc_bind()
290 mmc->cfg = cfg; in mmc_bind()
291 mmc->priv = dev; in mmc_bind()
296 mmc->dsr_imp = 0; in mmc_bind()
297 mmc->dsr = 0xffffffff; in mmc_bind()
299 bdesc->removable = 1; in mmc_bind()
302 bdesc->part_type = cfg->part_type; in mmc_bind()
303 mmc->dev = dev; in mmc_bind()
324 struct mmc *mmc = mmc_get_mmc_dev(mmc_dev); in mmc_select_hwpart() local
327 if (desc->hwpart == hwpart) in mmc_select_hwpart()
330 if (mmc->part_config == MMCPART_NOAVAILABLE) in mmc_select_hwpart()
331 return -EMEDIUMTYPE; in mmc_select_hwpart()
333 return mmc_switch_part(mmc, hwpart); in mmc_select_hwpart()
340 struct mmc *mmc = upriv->mmc; in mmc_blk_probe() local
343 ret = mmc_init(mmc); in mmc_blk_probe()
369 U_BOOT_DRIVER(mmc) = {
370 .name = "mmc",
374 UCLASS_DRIVER(mmc) = {
376 .name = "mmc",