Lines Matching full:mmc

4  * Portions copyright (C) 2004-2005 Pierre Ossman, W83L51xD SD/MMC driver
25 #include <linux/mmc/host.h>
26 #include <linux/mmc/mmc.h>
27 #include <linux/mmc/sdio.h>
28 #include <linux/mmc/slot-gpio.h>
34 #define DRIVER_NAME "mxs-mmc"
51 struct mmc_host *mmc; member
62 static int mxs_mmc_get_cd(struct mmc_host *mmc) in mxs_mmc_get_cd() argument
64 struct mxs_mmc_host *host = mmc_priv(mmc); in mxs_mmc_get_cd()
71 ret = mmc_gpio_get_cd(mmc); in mxs_mmc_get_cd()
75 present = mmc->caps & MMC_CAP_NEEDS_POLL || in mxs_mmc_get_cd()
79 if (mmc->caps2 & MMC_CAP2_CD_ACTIVE_HIGH) in mxs_mmc_get_cd()
147 dma_unmap_sg(mmc_dev(host->mmc), data->sg, in mxs_mmc_request_done()
166 mmc_request_done(host->mmc, mrq); in mxs_mmc_request_done()
193 mmc_signal_sdio_irq(host->mmc); in mxs_mmc_irq_handler()
225 dma_map_sg(mmc_dev(host->mmc), data->sg, in mxs_mmc_prep_dma()
242 dma_unmap_sg(mmc_dev(host->mmc), data->sg, in mxs_mmc_prep_dma()
279 dev_warn(mmc_dev(host->mmc), in mxs_mmc_bc()
324 dev_warn(mmc_dev(host->mmc), in mxs_mmc_ac()
453 dev_warn(mmc_dev(host->mmc), in mxs_mmc_adtc()
476 dev_warn(mmc_dev(host->mmc), in mxs_mmc_start_cmd()
477 "%s: unknown MMC command\n", __func__); in mxs_mmc_start_cmd()
482 static void mxs_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq) in mxs_mmc_request() argument
484 struct mxs_mmc_host *host = mmc_priv(mmc); in mxs_mmc_request()
495 static void mxs_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in mxs_mmc_set_ios() argument
497 struct mxs_mmc_host *host = mmc_priv(mmc); in mxs_mmc_set_ios()
510 static void mxs_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable) in mxs_mmc_enable_sdio_irq() argument
512 struct mxs_mmc_host *host = mmc_priv(mmc); in mxs_mmc_enable_sdio_irq()
536 mmc_signal_sdio_irq(host->mmc); in mxs_mmc_enable_sdio_irq()
549 { .compatible = "fsl,imx23-mmc", .data = (void *) IMX23_SSP, },
550 { .compatible = "fsl,imx28-mmc", .data = (void *) IMX28_SSP, },
559 struct mmc_host *mmc; in mxs_mmc_probe() local
568 mmc = mmc_alloc_host(sizeof(struct mxs_mmc_host), &pdev->dev); in mxs_mmc_probe()
569 if (!mmc) in mxs_mmc_probe()
572 host = mmc_priv(mmc); in mxs_mmc_probe()
583 host->mmc = mmc; in mxs_mmc_probe()
607 dev_err(&pdev->dev, "Failed to reset mmc: %d\n", ret); in mxs_mmc_probe()
613 dev_err(mmc_dev(host->mmc), in mxs_mmc_probe()
619 /* set mmc core parameters */ in mxs_mmc_probe()
620 mmc->ops = &mxs_mmc_ops; in mxs_mmc_probe()
621 mmc->caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED | in mxs_mmc_probe()
626 mmc->f_min = 400000; in mxs_mmc_probe()
627 mmc->f_max = 288000000; in mxs_mmc_probe()
629 ret = mmc_of_parse(mmc); in mxs_mmc_probe()
633 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; in mxs_mmc_probe()
635 mmc->max_segs = 52; in mxs_mmc_probe()
636 mmc->max_blk_size = 1 << 0xf; in mxs_mmc_probe()
637 mmc->max_blk_count = (ssp_is_old(ssp)) ? 0xff : 0xffffff; in mxs_mmc_probe()
638 mmc->max_req_size = (ssp_is_old(ssp)) ? 0xffff : 0xffffffff; in mxs_mmc_probe()
639 mmc->max_seg_size = dma_get_max_seg_size(ssp->dmach->device->dev); in mxs_mmc_probe()
641 platform_set_drvdata(pdev, mmc); in mxs_mmc_probe()
650 ret = mmc_add_host(mmc); in mxs_mmc_probe()
654 dev_info(mmc_dev(host->mmc), "initialized\n"); in mxs_mmc_probe()
663 mmc_free_host(mmc); in mxs_mmc_probe()
669 struct mmc_host *mmc = platform_get_drvdata(pdev); in mxs_mmc_remove() local
670 struct mxs_mmc_host *host = mmc_priv(mmc); in mxs_mmc_remove()
673 mmc_remove_host(mmc); in mxs_mmc_remove()
680 mmc_free_host(mmc); in mxs_mmc_remove()
688 struct mmc_host *mmc = dev_get_drvdata(dev); in mxs_mmc_suspend() local
689 struct mxs_mmc_host *host = mmc_priv(mmc); in mxs_mmc_suspend()
698 struct mmc_host *mmc = dev_get_drvdata(dev); in mxs_mmc_resume() local
699 struct mxs_mmc_host *host = mmc_priv(mmc); in mxs_mmc_resume()
721 MODULE_DESCRIPTION("FREESCALE MXS MMC peripheral");