Lines Matching refs:mmc
149 struct mmc_host *mmc; member
229 struct device *dev = mmc_dev(host->mmc); in jz4740_mmc_acquire_dma_channels()
240 host->dma_tx = dma_request_chan(mmc_dev(host->mmc), "tx"); in jz4740_mmc_acquire_dma_channels()
242 dev_err(mmc_dev(host->mmc), "Failed to get dma_tx channel\n"); in jz4740_mmc_acquire_dma_channels()
246 host->dma_rx = dma_request_chan(mmc_dev(host->mmc), "rx"); in jz4740_mmc_acquire_dma_channels()
248 dev_err(mmc_dev(host->mmc), "Failed to get dma_rx channel\n"); in jz4740_mmc_acquire_dma_channels()
261 if (max_seg_size < host->mmc->max_seg_size) in jz4740_mmc_acquire_dma_channels()
262 host->mmc->max_seg_size = max_seg_size; in jz4740_mmc_acquire_dma_channels()
269 if (max_seg_size < host->mmc->max_seg_size) in jz4740_mmc_acquire_dma_channels()
270 host->mmc->max_seg_size = max_seg_size; in jz4740_mmc_acquire_dma_channels()
315 dev_err(mmc_dev(host->mmc), in jz4740_mmc_prepare_dma_data()
356 dev_err(mmc_dev(host->mmc), in jz4740_mmc_start_dma_transfer()
373 static void jz4740_mmc_pre_request(struct mmc_host *mmc, in jz4740_mmc_pre_request() argument
376 struct jz4740_mmc_host *host = mmc_priv(mmc); in jz4740_mmc_pre_request()
387 static void jz4740_mmc_post_request(struct mmc_host *mmc, in jz4740_mmc_post_request() argument
391 struct jz4740_mmc_host *host = mmc_priv(mmc); in jz4740_mmc_post_request()
466 mmc_request_done(host->mmc, req); in jz4740_mmc_request_done()
858 mmc_signal_sdio_irq(host->mmc); in jz_mmc_irq()
893 clk_set_rate(host->clk, host->mmc->f_max); in jz4740_mmc_set_clock_rate()
922 static void jz4740_mmc_request(struct mmc_host *mmc, struct mmc_request *req) in jz4740_mmc_request() argument
924 struct jz4740_mmc_host *host = mmc_priv(mmc); in jz4740_mmc_request()
938 static void jz4740_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in jz4740_mmc_set_ios() argument
940 struct jz4740_mmc_host *host = mmc_priv(mmc); in jz4740_mmc_set_ios()
949 if (!IS_ERR(mmc->supply.vmmc)) in jz4740_mmc_set_ios()
950 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, ios->vdd); in jz4740_mmc_set_ios()
955 if (!IS_ERR(mmc->supply.vqmmc) && !host->vqmmc_enabled) { in jz4740_mmc_set_ios()
956 ret = regulator_enable(mmc->supply.vqmmc); in jz4740_mmc_set_ios()
964 if (!IS_ERR(mmc->supply.vmmc)) in jz4740_mmc_set_ios()
965 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0); in jz4740_mmc_set_ios()
966 if (!IS_ERR(mmc->supply.vqmmc) && host->vqmmc_enabled) { in jz4740_mmc_set_ios()
967 regulator_disable(mmc->supply.vqmmc); in jz4740_mmc_set_ios()
993 static void jz4740_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable) in jz4740_mmc_enable_sdio_irq() argument
995 struct jz4740_mmc_host *host = mmc_priv(mmc); in jz4740_mmc_enable_sdio_irq()
999 static int jz4740_voltage_switch(struct mmc_host *mmc, struct mmc_ios *ios) in jz4740_voltage_switch() argument
1004 if (!IS_ERR(mmc->supply.vqmmc)) { in jz4740_voltage_switch()
1005 ret = mmc_regulator_set_vqmmc(mmc, ios); in jz4740_voltage_switch()
1041 struct mmc_host *mmc; in jz4740_mmc_probe() local
1045 mmc = mmc_alloc_host(sizeof(struct jz4740_mmc_host), &pdev->dev); in jz4740_mmc_probe()
1046 if (!mmc) { in jz4740_mmc_probe()
1051 host = mmc_priv(mmc); in jz4740_mmc_probe()
1061 ret = mmc_of_parse(mmc); in jz4740_mmc_probe()
1067 mmc_regulator_get_supply(mmc); in jz4740_mmc_probe()
1088 mmc->ops = &jz4740_mmc_ops; in jz4740_mmc_probe()
1089 if (!mmc->f_max) in jz4740_mmc_probe()
1090 mmc->f_max = JZ_MMC_CLK_RATE; in jz4740_mmc_probe()
1098 if (host->version == JZ_MMC_JZ4760 && mmc->f_max > JZ_MMC_CLK_RATE) in jz4740_mmc_probe()
1099 mmc->f_max = JZ_MMC_CLK_RATE; in jz4740_mmc_probe()
1101 mmc->f_min = mmc->f_max / 128; in jz4740_mmc_probe()
1102 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; in jz4740_mmc_probe()
1108 mmc->max_busy_timeout = JZ_MMC_REQ_TIMEOUT_MS; in jz4740_mmc_probe()
1110 mmc->max_blk_size = (1 << 10) - 1; in jz4740_mmc_probe()
1111 mmc->max_blk_count = (1 << 15) - 1; in jz4740_mmc_probe()
1112 mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count; in jz4740_mmc_probe()
1114 mmc->max_segs = 128; in jz4740_mmc_probe()
1115 mmc->max_seg_size = mmc->max_req_size; in jz4740_mmc_probe()
1117 host->mmc = mmc; in jz4740_mmc_probe()
1140 ret = mmc_add_host(mmc); in jz4740_mmc_probe()
1150 (mmc->caps & MMC_CAP_8_BIT_DATA) ? 8 : in jz4740_mmc_probe()
1151 ((mmc->caps & MMC_CAP_4_BIT_DATA) ? 4 : 1)); in jz4740_mmc_probe()
1161 mmc_free_host(mmc); in jz4740_mmc_probe()
1174 mmc_remove_host(host->mmc); in jz4740_mmc_remove()
1181 mmc_free_host(host->mmc); in jz4740_mmc_remove()