Lines Matching refs:mmc

231 	struct mmc_host	*mmc;  member
272 dev_err(mmc_dev(host->mmc), "fatal err reset timeout\n"); in sunxi_mmc_reset_host()
279 static int sunxi_mmc_init_host(struct mmc_host *mmc) in sunxi_mmc_init_host() argument
282 struct sunxi_mmc_host *host = mmc_priv(mmc); in sunxi_mmc_init_host()
350 dma_len = dma_map_sg(mmc_dev(host->mmc), data->sg, data->sg_len, in sunxi_mmc_map_dma()
353 dev_err(mmc_dev(host->mmc), "dma_map_sg failed\n"); in sunxi_mmc_map_dma()
359 dev_err(mmc_dev(host->mmc), in sunxi_mmc_map_dma()
418 dev_err(mmc_dev(host->mmc), "send stop command failed\n"); in sunxi_mmc_send_manual_stop()
440 dev_err(mmc_dev(host->mmc), in sunxi_mmc_dump_errinfo()
442 host->mmc->index, cmd->opcode, in sunxi_mmc_dump_errinfo()
501 dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len, in sunxi_mmc_finalize_request()
528 dev_dbg(mmc_dev(host->mmc), "irq: rq %p mi %08x idi %08x\n", in sunxi_mmc_irq()
563 mmc_request_done(host->mmc, mrq); in sunxi_mmc_irq()
566 mmc_signal_sdio_irq(host->mmc); in sunxi_mmc_irq()
582 dev_err(mmc_dev(host->mmc), "no request for manual stop\n"); in sunxi_mmc_handle_manual_stop()
586 dev_err(mmc_dev(host->mmc), "data error, sending stop command\n"); in sunxi_mmc_handle_manual_stop()
602 mmc_request_done(host->mmc, mrq); in sunxi_mmc_handle_manual_stop()
632 dev_err(mmc_dev(host->mmc), "fatal err update clk timeout\n"); in sunxi_mmc_oclk_onoff()
646 dev_dbg(mmc_dev(host->mmc), "setting clk to %d, rounded %d\n", in sunxi_mmc_clk_set_rate()
652 dev_err(mmc_dev(host->mmc), "error setting clk to %d: %d\n", in sunxi_mmc_clk_set_rate()
691 static void sunxi_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in sunxi_mmc_set_ios() argument
693 struct sunxi_mmc_host *host = mmc_priv(mmc); in sunxi_mmc_set_ios()
702 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, ios->vdd); in sunxi_mmc_set_ios()
704 host->ferror = sunxi_mmc_init_host(mmc); in sunxi_mmc_set_ios()
708 dev_dbg(mmc_dev(mmc), "power on!\n"); in sunxi_mmc_set_ios()
712 dev_dbg(mmc_dev(mmc), "power off!\n"); in sunxi_mmc_set_ios()
714 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0); in sunxi_mmc_set_ios()
746 static void sunxi_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable) in sunxi_mmc_enable_sdio_irq() argument
748 struct sunxi_mmc_host *host = mmc_priv(mmc); in sunxi_mmc_enable_sdio_irq()
766 static void sunxi_mmc_hw_reset(struct mmc_host *mmc) in sunxi_mmc_hw_reset() argument
768 struct sunxi_mmc_host *host = mmc_priv(mmc); in sunxi_mmc_hw_reset()
775 static void sunxi_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq) in sunxi_mmc_request() argument
777 struct sunxi_mmc_host *host = mmc_priv(mmc); in sunxi_mmc_request()
789 mmc_request_done(mmc, mrq); in sunxi_mmc_request()
796 dev_err(mmc_dev(mmc), "map DMA failed\n"); in sunxi_mmc_request()
799 mmc_request_done(mmc, mrq); in sunxi_mmc_request()
842 dev_dbg(mmc_dev(mmc), "cmd %d(%08x) arg %x ie 0x%08x len %d\n", in sunxi_mmc_request()
852 dma_unmap_sg(mmc_dev(mmc), data->sg, data->sg_len, in sunxi_mmc_request()
855 dev_err(mmc_dev(mmc), "request already pending\n"); in sunxi_mmc_request()
857 mmc_request_done(mmc, mrq); in sunxi_mmc_request()
876 static int sunxi_mmc_card_busy(struct mmc_host *mmc) in sunxi_mmc_card_busy() argument
878 struct sunxi_mmc_host *host = mmc_priv(mmc); in sunxi_mmc_card_busy()
931 ret = mmc_regulator_get_supply(host->mmc); in sunxi_mmc_resource_request()
1032 struct mmc_host *mmc; in sunxi_mmc_probe() local
1035 mmc = mmc_alloc_host(sizeof(struct sunxi_mmc_host), &pdev->dev); in sunxi_mmc_probe()
1036 if (!mmc) { in sunxi_mmc_probe()
1041 host = mmc_priv(mmc); in sunxi_mmc_probe()
1042 host->mmc = mmc; in sunxi_mmc_probe()
1057 mmc->ops = &sunxi_mmc_ops; in sunxi_mmc_probe()
1058 mmc->max_blk_count = 8192; in sunxi_mmc_probe()
1059 mmc->max_blk_size = 4096; in sunxi_mmc_probe()
1060 mmc->max_segs = PAGE_SIZE / sizeof(struct sunxi_idma_des); in sunxi_mmc_probe()
1061 mmc->max_seg_size = (1 << host->idma_des_size_bits); in sunxi_mmc_probe()
1062 mmc->max_req_size = mmc->max_seg_size * mmc->max_segs; in sunxi_mmc_probe()
1064 mmc->f_min = 400000; in sunxi_mmc_probe()
1065 mmc->f_max = 50000000; in sunxi_mmc_probe()
1066 mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | in sunxi_mmc_probe()
1069 ret = mmc_of_parse(mmc); in sunxi_mmc_probe()
1073 ret = mmc_add_host(mmc); in sunxi_mmc_probe()
1078 platform_set_drvdata(pdev, mmc); in sunxi_mmc_probe()
1084 mmc_free_host(mmc); in sunxi_mmc_probe()
1090 struct mmc_host *mmc = platform_get_drvdata(pdev); in sunxi_mmc_remove() local
1091 struct sunxi_mmc_host *host = mmc_priv(mmc); in sunxi_mmc_remove()
1093 mmc_remove_host(mmc); in sunxi_mmc_remove()
1104 mmc_free_host(mmc); in sunxi_mmc_remove()