Lines Matching +full:mmc +full:-
1 // SPDX-License-Identifier: GPL-2.0+
8 #include <mmc.h>
10 #include <dm/device-internal.h>
17 struct mmc *mmc = mmc_get_mmc_dev(dev); in dm_mmc_send_cmd() local
21 mmmc_trace_before_send(mmc, cmd); in dm_mmc_send_cmd()
22 if (ops->send_cmd) in dm_mmc_send_cmd()
23 ret = ops->send_cmd(dev, cmd, data); in dm_mmc_send_cmd()
25 ret = -ENOSYS; in dm_mmc_send_cmd()
26 mmmc_trace_after_send(mmc, cmd, ret); in dm_mmc_send_cmd()
31 int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) in mmc_send_cmd() argument
33 return dm_mmc_send_cmd(mmc->dev, cmd, data); in mmc_send_cmd()
40 if (!ops->set_ios) in dm_mmc_set_ios()
41 return -ENOSYS; in dm_mmc_set_ios()
42 return ops->set_ios(dev); in dm_mmc_set_ios()
45 int mmc_set_ios(struct mmc *mmc) in mmc_set_ios() argument
47 return dm_mmc_set_ios(mmc->dev); in mmc_set_ios()
54 if (ops->send_init_stream) in dm_mmc_send_init_stream()
55 ops->send_init_stream(dev); in dm_mmc_send_init_stream()
58 void mmc_send_init_stream(struct mmc *mmc) in mmc_send_init_stream() argument
60 dm_mmc_send_init_stream(mmc->dev); in mmc_send_init_stream()
68 if (!ops->wait_dat0) in dm_mmc_wait_dat0()
69 return -ENOSYS; in dm_mmc_wait_dat0()
70 return ops->wait_dat0(dev, state, timeout); in dm_mmc_wait_dat0()
73 int mmc_wait_dat0(struct mmc *mmc, int state, int timeout) in mmc_wait_dat0() argument
75 return dm_mmc_wait_dat0(mmc->dev, state, timeout); in mmc_wait_dat0()
83 if (!ops->get_wp) in dm_mmc_get_wp()
84 return -ENOSYS; in dm_mmc_get_wp()
85 return ops->get_wp(dev); in dm_mmc_get_wp()
88 int mmc_getwp(struct mmc *mmc) in mmc_getwp() argument
90 return dm_mmc_get_wp(mmc->dev); in mmc_getwp()
97 if (!ops->get_cd) in dm_mmc_get_cd()
98 return -ENOSYS; in dm_mmc_get_cd()
99 return ops->get_cd(dev); in dm_mmc_get_cd()
102 int mmc_getcd(struct mmc *mmc) in mmc_getcd() argument
104 return dm_mmc_get_cd(mmc->dev); in mmc_getcd()
112 if (!ops->execute_tuning) in dm_mmc_execute_tuning()
113 return -ENOSYS; in dm_mmc_execute_tuning()
114 return ops->execute_tuning(dev, opcode); in dm_mmc_execute_tuning()
117 int mmc_execute_tuning(struct mmc *mmc, uint opcode) in mmc_execute_tuning() argument
119 return dm_mmc_execute_tuning(mmc->dev, opcode); in mmc_execute_tuning()
127 val = dev_read_u32_default(dev, "bus-width", 1); in mmc_of_parse()
131 cfg->host_caps |= MMC_MODE_8BIT; in mmc_of_parse()
134 cfg->host_caps |= MMC_MODE_4BIT; in mmc_of_parse()
137 cfg->host_caps |= MMC_MODE_1BIT; in mmc_of_parse()
140 dev_err(dev, "Invalid \"bus-width\" value %u!\n", val); in mmc_of_parse()
141 return -EINVAL; in mmc_of_parse()
144 /* f_max is obtained from the optional "max-frequency" property */ in mmc_of_parse()
145 dev_read_u32(dev, "max-frequency", &cfg->f_max); in mmc_of_parse()
147 if (dev_read_bool(dev, "cap-sd-highspeed")) in mmc_of_parse()
148 cfg->host_caps |= MMC_CAP(SD_HS); in mmc_of_parse()
149 if (dev_read_bool(dev, "cap-mmc-highspeed")) in mmc_of_parse()
150 cfg->host_caps |= MMC_CAP(MMC_HS); in mmc_of_parse()
151 if (dev_read_bool(dev, "sd-uhs-sdr12")) in mmc_of_parse()
152 cfg->host_caps |= MMC_CAP(UHS_SDR12); in mmc_of_parse()
153 if (dev_read_bool(dev, "sd-uhs-sdr25")) in mmc_of_parse()
154 cfg->host_caps |= MMC_CAP(UHS_SDR25); in mmc_of_parse()
155 if (dev_read_bool(dev, "sd-uhs-sdr50")) in mmc_of_parse()
156 cfg->host_caps |= MMC_CAP(UHS_SDR50); in mmc_of_parse()
157 if (dev_read_bool(dev, "sd-uhs-sdr104")) in mmc_of_parse()
158 cfg->host_caps |= MMC_CAP(UHS_SDR104); in mmc_of_parse()
159 if (dev_read_bool(dev, "sd-uhs-ddr50")) in mmc_of_parse()
160 cfg->host_caps |= MMC_CAP(UHS_DDR50); in mmc_of_parse()
161 if (dev_read_bool(dev, "mmc-ddr-1_8v")) in mmc_of_parse()
162 cfg->host_caps |= MMC_CAP(MMC_DDR_52); in mmc_of_parse()
163 if (dev_read_bool(dev, "mmc-ddr-1_2v")) in mmc_of_parse()
164 cfg->host_caps |= MMC_CAP(MMC_DDR_52); in mmc_of_parse()
165 if (dev_read_bool(dev, "mmc-hs200-1_8v")) in mmc_of_parse()
166 cfg->host_caps |= MMC_CAP(MMC_HS_200); in mmc_of_parse()
167 if (dev_read_bool(dev, "mmc-hs200-1_2v")) in mmc_of_parse()
168 cfg->host_caps |= MMC_CAP(MMC_HS_200); in mmc_of_parse()
169 if (dev_read_bool(dev, "mmc-hs400-1_8v")) in mmc_of_parse()
170 cfg->host_caps |= MMC_CAP(MMC_HS_400); in mmc_of_parse()
171 if (dev_read_bool(dev, "mmc-hs400-1_2v")) in mmc_of_parse()
172 cfg->host_caps |= MMC_CAP(MMC_HS_400); in mmc_of_parse()
177 struct mmc *mmc_get_mmc_dev(struct udevice *dev) in mmc_get_mmc_dev()
184 return upriv->mmc; in mmc_get_mmc_dev()
188 struct mmc *find_mmc_device(int dev_num) in find_mmc_device()
197 printf("MMC Device %d not found\n", dev_num); in find_mmc_device()
204 struct mmc *mmc = mmc_get_mmc_dev(mmc_dev); in find_mmc_device() local
206 return mmc; in find_mmc_device()
219 struct blk_desc *mmc_get_blk_desc(struct mmc *mmc) in mmc_get_blk_desc() argument
224 device_find_first_child(mmc->dev, &dev); in mmc_get_blk_desc()
242 struct mmc *m = mmc_get_mmc_dev(dev); in mmc_do_preinit()
249 if (m->preinit) in mmc_do_preinit()
264 struct mmc *m = mmc_get_mmc_dev(dev); in print_mmc_devices()
271 if (m->has_init) in print_mmc_devices()
276 printf("%s: %d", m->cfg->name, mmc_get_blk_desc(m)->devnum); in print_mmc_devices()
288 int mmc_bind(struct udevice *dev, struct mmc *mmc, const struct mmc_config *cfg) in mmc_bind() argument
292 int ret, devnum = -1; in mmc_bind()
295 return -ENOSYS; in mmc_bind()
309 mmc->cfg = cfg; in mmc_bind()
310 mmc->priv = dev; in mmc_bind()
315 mmc->dsr_imp = 0; in mmc_bind()
316 mmc->dsr = 0xffffffff; in mmc_bind()
318 bdesc->removable = 1; in mmc_bind()
321 bdesc->part_type = cfg->part_type; in mmc_bind()
322 mmc->dev = dev; in mmc_bind()
343 struct mmc *mmc = mmc_get_mmc_dev(mmc_dev); in mmc_select_hwpart() local
346 if (desc->hwpart == hwpart) in mmc_select_hwpart()
349 if (mmc->part_config == MMCPART_NOAVAILABLE) in mmc_select_hwpart()
350 return -EMEDIUMTYPE; in mmc_select_hwpart()
352 return mmc_switch_part(mmc, hwpart); in mmc_select_hwpart()
359 struct mmc *mmc = upriv->mmc; in mmc_blk_probe() local
362 ret = mmc_init(mmc); in mmc_blk_probe()
378 struct mmc *mmc = upriv->mmc; in mmc_blk_remove() local
380 return mmc_deinit(mmc); in mmc_blk_remove()
407 U_BOOT_DRIVER(mmc) = {
408 .name = "mmc",
412 UCLASS_DRIVER(mmc) = {
414 .name = "mmc",