Lines Matching refs:mmc
626 static u64 prepare_ext_dma(struct mmc_host *mmc, struct mmc_request *mrq) in prepare_ext_dma() argument
628 struct cvm_mmc_slot *slot = mmc_priv(mmc); in prepare_ext_dma()
633 mmc_card_is_blockaddr(mmc->card) ? 1 : 0) | in prepare_ext_dma()
640 if (mmc_card_mmc(mmc->card) || (mmc_card_sd(mmc->card) && in prepare_ext_dma()
641 (mmc->card->scr.cmds & SD_SCR_CMD23_SUPPORT))) in prepare_ext_dma()
650 static void cvm_mmc_dma_request(struct mmc_host *mmc, in cvm_mmc_dma_request() argument
653 struct cvm_mmc_slot *slot = mmc_priv(mmc); in cvm_mmc_dma_request()
660 dev_err(&mmc->card->dev, in cvm_mmc_dma_request()
676 emm_dma = prepare_ext_dma(mmc, mrq); in cvm_mmc_dma_request()
695 if (mmc_card_sd(mmc->card)) in cvm_mmc_dma_request()
752 static void cvm_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq) in cvm_mmc_request() argument
754 struct cvm_mmc_slot *slot = mmc_priv(mmc); in cvm_mmc_request()
774 return cvm_mmc_dma_request(mmc, mrq); in cvm_mmc_request()
824 static void cvm_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in cvm_mmc_set_ios() argument
826 struct cvm_mmc_slot *slot = mmc_priv(mmc); in cvm_mmc_set_ios()
843 else if (!IS_ERR(mmc->supply.vmmc)) in cvm_mmc_set_ios()
844 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0); in cvm_mmc_set_ios()
850 else if (!IS_ERR(mmc->supply.vmmc)) in cvm_mmc_set_ios()
851 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, ios->vdd); in cvm_mmc_set_ios()
908 struct mmc_host *mmc = slot->mmc; in cvm_mmc_set_clock() local
910 clock = min(clock, mmc->f_max); in cvm_mmc_set_clock()
911 clock = max(clock, mmc->f_min); in cvm_mmc_set_clock()
926 cvm_mmc_set_clock(slot, slot->mmc->f_min); in cvm_mmc_init_lowlevel()
955 struct mmc_host *mmc = slot->mmc; in cvm_mmc_of_parse() local
970 ret = mmc_regulator_get_supply(mmc); in cvm_mmc_of_parse()
977 if (IS_ERR(mmc->supply.vmmc)) in cvm_mmc_of_parse()
978 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; in cvm_mmc_of_parse()
981 ret = mmc_of_parse(mmc); in cvm_mmc_of_parse()
986 if (!(mmc->caps & (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA))) { in cvm_mmc_of_parse()
989 mmc->caps |= MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA; in cvm_mmc_of_parse()
991 mmc->caps |= MMC_CAP_4_BIT_DATA; in cvm_mmc_of_parse()
995 if (!mmc->f_max) in cvm_mmc_of_parse()
996 of_property_read_u32(node, "spi-max-frequency", &mmc->f_max); in cvm_mmc_of_parse()
997 if (!mmc->f_max || mmc->f_max > 52000000) in cvm_mmc_of_parse()
998 mmc->f_max = 52000000; in cvm_mmc_of_parse()
999 mmc->f_min = 400000; in cvm_mmc_of_parse()
1014 struct mmc_host *mmc; in cvm_mmc_of_slot_probe() local
1017 mmc = mmc_alloc_host(sizeof(struct cvm_mmc_slot), dev); in cvm_mmc_of_slot_probe()
1018 if (!mmc) in cvm_mmc_of_slot_probe()
1021 slot = mmc_priv(mmc); in cvm_mmc_of_slot_probe()
1022 slot->mmc = mmc; in cvm_mmc_of_slot_probe()
1031 mmc->ops = &cvm_mmc_ops; in cvm_mmc_of_slot_probe()
1040 mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | in cvm_mmc_of_slot_probe()
1044 mmc->max_segs = 16; in cvm_mmc_of_slot_probe()
1046 mmc->max_segs = 1; in cvm_mmc_of_slot_probe()
1049 mmc->max_seg_size = min_t(unsigned int, 8 * 1024 * 1024, in cvm_mmc_of_slot_probe()
1051 mmc->max_req_size = mmc->max_seg_size; in cvm_mmc_of_slot_probe()
1053 mmc->max_blk_size = 512; in cvm_mmc_of_slot_probe()
1055 mmc->max_blk_count = 32767; in cvm_mmc_of_slot_probe()
1057 slot->clock = mmc->f_min; in cvm_mmc_of_slot_probe()
1067 ret = mmc_add_host(mmc); in cvm_mmc_of_slot_probe()
1076 mmc_free_host(slot->mmc); in cvm_mmc_of_slot_probe()
1082 mmc_remove_host(slot->mmc); in cvm_mmc_of_slot_remove()
1084 mmc_free_host(slot->mmc); in cvm_mmc_of_slot_remove()