Lines Matching refs:mmc

371 static int mmci_card_busy(struct mmc_host *mmc)  in mmci_card_busy()  argument
373 struct mmci_host *host = mmc_priv(mmc); in mmci_card_busy()
485 host->mmc->actual_clock = host->cclk; in mmci_set_clkreg()
487 if (host->mmc->ios.bus_width == MMC_BUS_WIDTH_4) in mmci_set_clkreg()
489 if (host->mmc->ios.bus_width == MMC_BUS_WIDTH_8) in mmci_set_clkreg()
492 if (host->mmc->ios.timing == MMC_TIMING_UHS_DDR50 || in mmci_set_clkreg()
493 host->mmc->ios.timing == MMC_TIMING_MMC_DDR52) in mmci_set_clkreg()
532 dev_err(mmc_dev(host->mmc), in mmci_validate_data()
592 dev_vdbg(mmc_dev(host->mmc), in mmci_dma_start()
641 mmc_request_done(host->mmc, mrq); in mmci_request_end()
772 dev_dbg(mmc_dev(host->mmc), in ux500_busy_complete()
794 dev_dbg(mmc_dev(host->mmc), in ux500_busy_complete()
809 dev_dbg(mmc_dev(host->mmc), in ux500_busy_complete()
816 dev_dbg(mmc_dev(host->mmc), "fell through on state %d, CMD%02x\n", in ux500_busy_complete()
849 dmae = devm_kzalloc(mmc_dev(host->mmc), sizeof(*dmae), GFP_KERNEL); in mmci_dmae_setup()
855 dmae->rx_channel = dma_request_chan(mmc_dev(host->mmc), "rx"); in mmci_dmae_setup()
862 dmae->tx_channel = dma_request_chan(mmc_dev(host->mmc), "tx"); in mmci_dmae_setup()
865 dev_warn(mmc_dev(host->mmc), in mmci_dmae_setup()
888 dev_info(mmc_dev(host->mmc), "DMA channels RX %s, TX %s\n", in mmci_dmae_setup()
899 if (max_seg_size < host->mmc->max_seg_size) in mmci_dmae_setup()
900 host->mmc->max_seg_size = max_seg_size; in mmci_dmae_setup()
906 if (max_seg_size < host->mmc->max_seg_size) in mmci_dmae_setup()
907 host->mmc->max_seg_size = max_seg_size; in mmci_dmae_setup()
954 dev_err(mmc_dev(host->mmc), "error during DMA transfer!\n"); in mmci_dmae_error()
1000 dev_err(mmc_dev(host->mmc), "buggy DMA detected. Taking evasive action.\n"); in mmci_dmae_finalize()
1208 static void mmci_pre_request(struct mmc_host *mmc, struct mmc_request *mrq) in mmci_pre_request() argument
1210 struct mmci_host *host = mmc_priv(mmc); in mmci_pre_request()
1224 static void mmci_post_request(struct mmc_host *mmc, struct mmc_request *mrq, in mmci_post_request() argument
1227 struct mmci_host *host = mmc_priv(mmc); in mmci_post_request()
1243 dev_dbg(mmc_dev(host->mmc), "blksz %04x blks %04x flags %08x\n", in mmci_start_data()
1262 if (host->mmc->card && mmc_card_sdio(host->mmc->card)) { in mmci_start_data()
1283 if (host->mmc->ios.timing == MMC_TIMING_UHS_DDR50 || in mmci_start_data()
1284 host->mmc->ios.timing == MMC_TIMING_MMC_DDR52) in mmci_start_data()
1327 dev_dbg(mmc_dev(host->mmc), "op %02x arg %08x flags %08x\n", in mmci_start_command()
1357 if (cmd->busy_timeout > host->mmc->max_busy_timeout) in mmci_start_command()
1358 clks = (unsigned long long)host->mmc->max_busy_timeout * host->cclk; in mmci_start_command()
1422 dev_dbg(mmc_dev(host->mmc), "MCI ERROR IRQ, status 0x%08x at 0x%08x\n", in mmci_data_irq()
1445 dev_err(mmc_dev(host->mmc), "stray MCI_DATABLOCKEND interrupt\n"); in mmci_data_irq()
1577 dev_err(mmc_dev(host->mmc), in ux500_busy_timeout_work()
1581 dev_err(mmc_dev(host->mmc), in ux500_busy_timeout_work()
1707 dev_dbg(mmc_dev(host->mmc), "irq1 (pio) %08x\n", status); in mmci_pio_irq()
1784 sdio_signal_irq(host->mmc); in mmci_signal_sdio_irq()
1822 dev_dbg(mmc_dev(host->mmc), "irq0 (data+cmd) %08x\n", status); in mmci_irq()
1879 static void mmci_request(struct mmc_host *mmc, struct mmc_request *mrq) in mmci_request() argument
1881 struct mmci_host *host = mmc_priv(mmc); in mmci_request()
1888 mmc_request_done(mmc, mrq); in mmci_request()
1911 static void mmci_set_max_busy_timeout(struct mmc_host *mmc) in mmci_set_max_busy_timeout() argument
1913 struct mmci_host *host = mmc_priv(mmc); in mmci_set_max_busy_timeout()
1919 if (host->variant->busy_timeout && mmc->actual_clock) in mmci_set_max_busy_timeout()
1920 max_busy_timeout = U32_MAX / DIV_ROUND_UP(mmc->actual_clock, in mmci_set_max_busy_timeout()
1923 mmc->max_busy_timeout = max_busy_timeout; in mmci_set_max_busy_timeout()
1926 static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in mmci_set_ios() argument
1928 struct mmci_host *host = mmc_priv(mmc); in mmci_set_ios()
1936 if (!IS_ERR(mmc->supply.vmmc)) in mmci_set_ios()
1937 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0); in mmci_set_ios()
1939 if (!IS_ERR(mmc->supply.vqmmc) && host->vqmmc_enabled) { in mmci_set_ios()
1940 regulator_disable(mmc->supply.vqmmc); in mmci_set_ios()
1946 if (!IS_ERR(mmc->supply.vmmc)) in mmci_set_ios()
1947 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, ios->vdd); in mmci_set_ios()
1958 if (!IS_ERR(mmc->supply.vqmmc) && !host->vqmmc_enabled) { in mmci_set_ios()
1959 ret = regulator_enable(mmc->supply.vqmmc); in mmci_set_ios()
1961 dev_err(mmc_dev(mmc), in mmci_set_ios()
1998 pinctrl_select_default_state(mmc_dev(mmc)); in mmci_set_ios()
2012 dev_err(mmc_dev(host->mmc), in mmci_set_ios()
2026 mmci_set_max_busy_timeout(mmc); in mmci_set_ios()
2038 static int mmci_get_cd(struct mmc_host *mmc) in mmci_get_cd() argument
2040 struct mmci_host *host = mmc_priv(mmc); in mmci_get_cd()
2042 unsigned int status = mmc_gpio_get_cd(mmc); in mmci_get_cd()
2048 status = plat->status(mmc_dev(host->mmc)); in mmci_get_cd()
2053 static int mmci_sig_volt_switch(struct mmc_host *mmc, struct mmc_ios *ios) in mmci_sig_volt_switch() argument
2055 struct mmci_host *host = mmc_priv(mmc); in mmci_sig_volt_switch()
2058 ret = mmc_regulator_set_vqmmc(mmc, ios); in mmci_sig_volt_switch()
2066 dev_warn(mmc_dev(mmc), "Voltage switch failed\n"); in mmci_sig_volt_switch()
2071 static void mmci_enable_sdio_irq(struct mmc_host *mmc, int enable) in mmci_enable_sdio_irq() argument
2073 struct mmci_host *host = mmc_priv(mmc); in mmci_enable_sdio_irq()
2078 pm_runtime_get_sync(mmc_dev(mmc)); in mmci_enable_sdio_irq()
2085 pm_runtime_mark_last_busy(mmc_dev(mmc)); in mmci_enable_sdio_irq()
2086 pm_runtime_put_autosuspend(mmc_dev(mmc)); in mmci_enable_sdio_irq()
2090 static void mmci_ack_sdio_irq(struct mmc_host *mmc) in mmci_ack_sdio_irq() argument
2092 struct mmci_host *host = mmc_priv(mmc); in mmci_ack_sdio_irq()
2110 static void mmci_probe_level_translator(struct mmc_host *mmc) in mmci_probe_level_translator() argument
2112 struct device *dev = mmc_dev(mmc); in mmci_probe_level_translator()
2113 struct mmci_host *host = mmc_priv(mmc); in mmci_probe_level_translator()
2169 static int mmci_of_parse(struct device_node *np, struct mmc_host *mmc) in mmci_of_parse() argument
2171 struct mmci_host *host = mmc_priv(mmc); in mmci_of_parse()
2172 int ret = mmc_of_parse(mmc); in mmci_of_parse()
2194 mmci_probe_level_translator(mmc); in mmci_of_parse()
2197 mmc->caps |= MMC_CAP_MMC_HIGHSPEED; in mmci_of_parse()
2199 mmc->caps |= MMC_CAP_SD_HIGHSPEED; in mmci_of_parse()
2211 struct mmc_host *mmc; in mmci_probe() local
2226 mmc = mmc_alloc_host(sizeof(struct mmci_host), &dev->dev); in mmci_probe()
2227 if (!mmc) in mmci_probe()
2230 host = mmc_priv(mmc); in mmci_probe()
2231 host->mmc = mmc; in mmci_probe()
2233 mmc->ops = &mmci_ops; in mmci_probe()
2235 ret = mmci_of_parse(np, mmc); in mmci_probe()
2254 dev_err(mmc_dev(mmc), "Can't select opendrain pins\n"); in mmci_probe()
2262 dev_dbg(mmc_dev(mmc), "designer ID = 0x%02x\n", host->hw_designer); in mmci_probe()
2263 dev_dbg(mmc_dev(mmc), "revision = 0x%01x\n", host->hw_revision); in mmci_probe()
2293 dev_dbg(mmc_dev(mmc), "eventual mclk rate: %u Hz\n", in mmci_probe()
2314 mmc->f_min = DIV_ROUND_UP(host->mclk, 257); in mmci_probe()
2316 mmc->f_min = DIV_ROUND_UP(host->mclk, 2046); in mmci_probe()
2318 mmc->f_min = clk_round_rate(host->clk, 100000); in mmci_probe()
2320 mmc->f_min = DIV_ROUND_UP(host->mclk, 512); in mmci_probe()
2327 if (mmc->f_max) in mmci_probe()
2328 mmc->f_max = variant->explicit_mclk_control ? in mmci_probe()
2329 min(variant->f_max, mmc->f_max) : in mmci_probe()
2330 min(host->mclk, mmc->f_max); in mmci_probe()
2332 mmc->f_max = variant->explicit_mclk_control ? in mmci_probe()
2336 dev_dbg(mmc_dev(mmc), "clocking block at %u Hz\n", mmc->f_max); in mmci_probe()
2345 dev_err(mmc_dev(mmc), "failed to de-assert reset\n"); in mmci_probe()
2348 ret = mmc_regulator_get_supply(mmc); in mmci_probe()
2352 if (!mmc->ocr_avail) in mmci_probe()
2353 mmc->ocr_avail = plat->ocr_mask; in mmci_probe()
2355 dev_warn(mmc_dev(mmc), "Platform OCR mask is ignored\n"); in mmci_probe()
2358 mmc->caps |= MMC_CAP_CMD23; in mmci_probe()
2372 mmc->caps |= MMC_CAP_WAIT_WHILE_BUSY; in mmci_probe()
2375 if (variant->supports_sdio_irq && host->mmc->caps & MMC_CAP_SDIO_IRQ) { in mmci_probe()
2376 mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD; in mmci_probe()
2387 mmc->caps |= MMC_CAP_NEED_RSP_BUSY; in mmci_probe()
2395 mmc->pm_caps |= MMC_PM_KEEP_POWER; in mmci_probe()
2400 mmc->max_segs = NR_SG; in mmci_probe()
2407 mmc->max_req_size = (1 << variant->datalength_bits) - 1; in mmci_probe()
2413 mmc->max_seg_size = mmc->max_req_size; in mmci_probe()
2418 mmc->max_blk_size = 1 << variant->datactrl_blocksz; in mmci_probe()
2424 mmc->max_blk_count = mmc->max_req_size >> variant->datactrl_blocksz; in mmci_probe()
2443 ret = mmc_gpiod_request_cd(mmc, "cd", 0, false, 0); in mmci_probe()
2447 ret = mmc_gpiod_request_ro(mmc, "wp", 0, 0); in mmci_probe()
2473 amba_set_drvdata(dev, mmc); in mmci_probe()
2476 mmc_hostname(mmc), amba_part(dev), amba_manf(dev), in mmci_probe()
2485 ret = mmc_add_host(mmc); in mmci_probe()
2495 mmc_free_host(mmc); in mmci_probe()
2501 struct mmc_host *mmc = amba_get_drvdata(dev); in mmci_remove() local
2503 if (mmc) { in mmci_remove()
2504 struct mmci_host *host = mmc_priv(mmc); in mmci_remove()
2513 mmc_remove_host(mmc); in mmci_remove()
2525 mmc_free_host(mmc); in mmci_remove()
2568 struct mmc_host *mmc = amba_get_drvdata(adev); in mmci_runtime_suspend() local
2570 if (mmc) { in mmci_runtime_suspend()
2571 struct mmci_host *host = mmc_priv(mmc); in mmci_runtime_suspend()
2583 struct mmc_host *mmc = amba_get_drvdata(adev); in mmci_runtime_resume() local
2585 if (mmc) { in mmci_runtime_resume()
2586 struct mmci_host *host = mmc_priv(mmc); in mmci_runtime_resume()