Lines Matching full:mmc

23 #include <linux/mmc/host.h>
24 #include <linux/mmc/mmc.h>
25 #include <linux/mmc/sd.h>
77 struct mmc_host *mmc; member
126 struct device *dev = mmc_dev(host->mmc); in litex_mmc_send_cmd()
235 static int litex_mmc_get_cd(struct mmc_host *mmc) in litex_mmc_get_cd() argument
237 struct litex_mmc_host *host = mmc_priv(mmc); in litex_mmc_get_cd()
240 if (!mmc_card_is_removable(mmc)) in litex_mmc_get_cd()
255 struct mmc_host *mmc = arg; in litex_mmc_interrupt() local
256 struct litex_mmc_host *host = mmc_priv(mmc); in litex_mmc_interrupt()
264 mmc_detect_change(mmc, msecs_to_jiffies(10)); in litex_mmc_interrupt()
294 struct device *dev = mmc_dev(host->mmc); in litex_mmc_do_dma()
338 static void litex_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq) in litex_mmc_request() argument
340 struct litex_mmc_host *host = mmc_priv(mmc); in litex_mmc_request()
341 struct device *dev = mmc_dev(mmc); in litex_mmc_request()
353 if (!litex_mmc_get_cd(mmc)) { in litex_mmc_request()
355 mmc_request_done(mmc, mrq); in litex_mmc_request()
366 mmc_request_done(mmc, mrq); in litex_mmc_request()
375 * transfer, earlier than when the mmc subsystem would normally in litex_mmc_request()
381 mmc_request_done(mmc, mrq); in litex_mmc_request()
424 data->bytes_xfered = min(len, mmc->max_req_size); in litex_mmc_request()
431 mmc_request_done(mmc, mrq); in litex_mmc_request()
436 struct device *dev = mmc_dev(host->mmc); in litex_mmc_setclk()
448 static void litex_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in litex_mmc_set_ios() argument
450 struct litex_mmc_host *host = mmc_priv(mmc); in litex_mmc_set_ios()
454 * the mmc core sends its own acmd6 bus-width change notification, in litex_mmc_set_ios()
473 struct device *dev = mmc_dev(host->mmc); in litex_mmc_irq_init()
491 "litex-mmc", host->mmc); in litex_mmc_irq_init()
504 host->mmc->caps |= MMC_CAP_NEEDS_POLL; in litex_mmc_irq_init()
509 static void litex_mmc_free_host_wrapper(void *mmc) in litex_mmc_free_host_wrapper() argument
511 mmc_free_host(mmc); in litex_mmc_free_host_wrapper()
518 struct mmc_host *mmc; in litex_mmc_probe() local
528 mmc = mmc_alloc_host(sizeof(struct litex_mmc_host), dev); in litex_mmc_probe()
529 if (!mmc) in litex_mmc_probe()
532 ret = devm_add_action_or_reset(dev, litex_mmc_free_host_wrapper, mmc); in litex_mmc_probe()
537 host = mmc_priv(mmc); in litex_mmc_probe()
538 host->mmc = mmc; in litex_mmc_probe()
550 * than when the mmc subsystem would normally get around to it! in litex_mmc_probe()
560 host->buf_size = mmc->max_req_size * 2; in litex_mmc_probe()
591 mmc->ops = &litex_mmc_ops; in litex_mmc_probe()
593 ret = mmc_regulator_get_supply(mmc); in litex_mmc_probe()
594 if (ret || mmc->ocr_avail == 0) { in litex_mmc_probe()
596 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; in litex_mmc_probe()
603 mmc->f_min = 12.5e6; in litex_mmc_probe()
604 mmc->f_max = 50e6; in litex_mmc_probe()
606 ret = mmc_of_parse(mmc); in litex_mmc_probe()
611 mmc->caps &= ~MMC_CAP_8_BIT_DATA; in litex_mmc_probe()
612 mmc->caps |= MMC_CAP_4_BIT_DATA; in litex_mmc_probe()
615 mmc->caps |= MMC_CAP_WAIT_WHILE_BUSY | in litex_mmc_probe()
618 mmc->caps2 |= MMC_CAP2_NO_WRITE_PROTECT | in litex_mmc_probe()
624 ret = mmc_add_host(mmc); in litex_mmc_probe()
628 dev_info(dev, "LiteX MMC controller initialized.\n"); in litex_mmc_probe()
636 mmc_remove_host(host->mmc); in litex_mmc_remove()
640 { .compatible = "litex,mmc" },
649 .name = "litex-mmc",