Lines Matching refs:mmc
107 static int dw_mci_card_busy(struct mmc_host *mmc);
190 struct mmc_host *mmc = slot->mmc; in dw_mci_init_debugfs() local
195 root = mmc->debugfs_root; in dw_mci_init_debugfs()
226 dev_err(&mmc->class_dev, "failed to initialize debugfs for slot\n"); in dw_mci_init_debugfs()
232 static u32 dw_mci_prepare_command(struct mmc_host *mmc, struct mmc_command *cmd) in dw_mci_prepare_command() argument
235 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_prepare_command()
455 dma_sync_sg_for_cpu(mmc_dev(host->cur_slot->mmc), in dw_mci_dmac_complete_dma()
738 dma_sync_sg_for_device(mmc_dev(host->cur_slot->mmc), sgl, in dw_mci_edmac_start_dma()
824 static void dw_mci_pre_req(struct mmc_host *mmc, in dw_mci_pre_req() argument
828 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_pre_req()
843 static void dw_mci_post_req(struct mmc_host *mmc, in dw_mci_post_req() argument
847 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_post_req()
1074 dev_err(&slot->mmc->class_dev, in mci_send_cmd()
1106 dev_info(&slot->mmc->class_dev, in dw_mci_setup_bus()
1170 cmdflags = dw_mci_prepare_command(slot->mmc, cmd); in __dw_mci_start_request()
1204 host->stop_cmdr = dw_mci_prepare_command(slot->mmc, mrq->stop); in __dw_mci_start_request()
1223 dev_vdbg(&slot->mmc->class_dev, "queue request: state=%d\n", in dw_mci_queue_request()
1229 dev_warn(&slot->mmc->class_dev, in dw_mci_queue_request()
1247 static void dw_mci_request(struct mmc_host *mmc, struct mmc_request *mrq) in dw_mci_request() argument
1249 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_request()
1264 mmc_request_done(mmc, mrq); in dw_mci_request()
1273 static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in dw_mci_set_ios() argument
1275 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_set_ios()
1316 if (!IS_ERR(mmc->supply.vmmc)) { in dw_mci_set_ios()
1317 ret = mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, in dw_mci_set_ios()
1333 if (!IS_ERR(mmc->supply.vqmmc)) { in dw_mci_set_ios()
1334 ret = regulator_enable(mmc->supply.vqmmc); in dw_mci_set_ios()
1359 if (!IS_ERR(mmc->supply.vmmc)) in dw_mci_set_ios()
1360 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0); in dw_mci_set_ios()
1362 if (!IS_ERR(mmc->supply.vqmmc) && slot->host->vqmmc_enabled) in dw_mci_set_ios()
1363 regulator_disable(mmc->supply.vqmmc); in dw_mci_set_ios()
1378 static int dw_mci_card_busy(struct mmc_host *mmc) in dw_mci_card_busy() argument
1380 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_card_busy()
1392 static int dw_mci_switch_voltage(struct mmc_host *mmc, struct mmc_ios *ios) in dw_mci_switch_voltage() argument
1394 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_switch_voltage()
1402 return drv_data->switch_voltage(mmc, ios); in dw_mci_switch_voltage()
1415 if (!IS_ERR(mmc->supply.vqmmc)) { in dw_mci_switch_voltage()
1416 ret = mmc_regulator_set_vqmmc(mmc, ios); in dw_mci_switch_voltage()
1419 dev_dbg(&mmc->class_dev, in dw_mci_switch_voltage()
1430 static int dw_mci_get_ro(struct mmc_host *mmc) in dw_mci_get_ro() argument
1433 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_get_ro()
1434 int gpio_ro = mmc_gpio_get_ro(mmc); in dw_mci_get_ro()
1443 dev_dbg(&mmc->class_dev, "card is %s\n", in dw_mci_get_ro()
1449 static int dw_mci_get_cd(struct mmc_host *mmc) in dw_mci_get_cd() argument
1452 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_get_cd()
1455 int gpio_cd = mmc_gpio_get_cd(mmc); in dw_mci_get_cd()
1459 (mmc->caps & MMC_CAP_NONREMOVABLE)) in dw_mci_get_cd()
1470 dev_dbg(&mmc->class_dev, "card is present\n"); in dw_mci_get_cd()
1473 dev_dbg(&mmc->class_dev, "card is not present\n"); in dw_mci_get_cd()
1480 static void dw_mci_init_card(struct mmc_host *mmc, struct mmc_card *card) in dw_mci_init_card() argument
1482 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_init_card()
1490 if (mmc->caps & MMC_CAP_SDIO_IRQ) { in dw_mci_init_card()
1514 static void dw_mci_enable_sdio_irq(struct mmc_host *mmc, int enb) in dw_mci_enable_sdio_irq() argument
1516 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_enable_sdio_irq()
1534 static int dw_mci_execute_tuning(struct mmc_host *mmc, u32 opcode) in dw_mci_execute_tuning() argument
1536 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_execute_tuning()
1546 static int dw_mci_prepare_hs400_tuning(struct mmc_host *mmc, in dw_mci_prepare_hs400_tuning() argument
1549 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_prepare_hs400_tuning()
1579 struct mmc_host *prev_mmc = host->cur_slot->mmc; in dw_mci_request_end()
1590 mmc_hostname(slot->mmc)); in dw_mci_request_end()
2343 if (slot->mmc->ops->card_event) in dw_mci_handle_cd()
2344 slot->mmc->ops->card_event(slot->mmc); in dw_mci_handle_cd()
2345 mmc_detect_change(slot->mmc, in dw_mci_handle_cd()
2452 mmc_signal_sdio_irq(slot->mmc); in dw_mci_interrupt()
2487 struct device *dev = slot->mmc->parent; in dw_mci_of_find_slot_node()
2513 slot->mmc->caps2 |= MMC_CAP2_NO_WRITE_PROTECT; in dw_mci_slot_of_parse()
2514 dev_warn(slot->mmc->parent, in dw_mci_slot_of_parse()
2526 struct mmc_host *mmc; in dw_mci_init_slot() local
2532 mmc = mmc_alloc_host(sizeof(struct dw_mci_slot), host->dev); in dw_mci_init_slot()
2533 if (!mmc) in dw_mci_init_slot()
2536 slot = mmc_priv(mmc); in dw_mci_init_slot()
2539 slot->mmc = mmc; in dw_mci_init_slot()
2543 mmc->ops = &dw_mci_ops; in dw_mci_init_slot()
2546 mmc->f_min = DW_MCI_FREQ_MIN; in dw_mci_init_slot()
2547 mmc->f_max = DW_MCI_FREQ_MAX; in dw_mci_init_slot()
2549 mmc->f_min = freq[0]; in dw_mci_init_slot()
2550 mmc->f_max = freq[1]; in dw_mci_init_slot()
2554 ret = mmc_regulator_get_supply(mmc); in dw_mci_init_slot()
2558 if (!mmc->ocr_avail) in dw_mci_init_slot()
2559 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; in dw_mci_init_slot()
2562 mmc->caps = host->pdata->caps; in dw_mci_init_slot()
2565 mmc->pm_caps = host->pdata->pm_caps; in dw_mci_init_slot()
2575 mmc->caps |= drv_data->caps[ctrl_id]; in dw_mci_init_slot()
2578 mmc->caps2 = host->pdata->caps2; in dw_mci_init_slot()
2582 ret = mmc_of_parse(mmc); in dw_mci_init_slot()
2588 mmc->max_segs = host->ring_size; in dw_mci_init_slot()
2589 mmc->max_blk_size = 65536; in dw_mci_init_slot()
2590 mmc->max_seg_size = 0x1000; in dw_mci_init_slot()
2591 mmc->max_req_size = mmc->max_seg_size * host->ring_size; in dw_mci_init_slot()
2592 mmc->max_blk_count = mmc->max_req_size / 512; in dw_mci_init_slot()
2594 mmc->max_segs = 64; in dw_mci_init_slot()
2595 mmc->max_blk_size = 65536; in dw_mci_init_slot()
2596 mmc->max_blk_count = 65535; in dw_mci_init_slot()
2597 mmc->max_req_size = in dw_mci_init_slot()
2598 mmc->max_blk_size * mmc->max_blk_count; in dw_mci_init_slot()
2599 mmc->max_seg_size = mmc->max_req_size; in dw_mci_init_slot()
2602 mmc->max_segs = 64; in dw_mci_init_slot()
2603 mmc->max_blk_size = 65536; /* BLKSIZ is 16 bits */ in dw_mci_init_slot()
2604 mmc->max_blk_count = 512; in dw_mci_init_slot()
2605 mmc->max_req_size = mmc->max_blk_size * in dw_mci_init_slot()
2606 mmc->max_blk_count; in dw_mci_init_slot()
2607 mmc->max_seg_size = mmc->max_req_size; in dw_mci_init_slot()
2610 if (dw_mci_get_cd(mmc)) in dw_mci_init_slot()
2615 ret = mmc_add_host(mmc); in dw_mci_init_slot()
2626 mmc_free_host(mmc); in dw_mci_init_slot()
2633 mmc_remove_host(slot->mmc); in dw_mci_cleanup_slot()
2635 mmc_free_host(slot->mmc); in dw_mci_cleanup_slot()
2940 if (IS_ERR_VALUE(mmc_gpio_get_cd(slot->mmc))) in dw_mci_enable_cd()
3265 if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER) { in dw_mci_resume()
3266 dw_mci_set_ios(slot->mmc, &slot->mmc->ios); in dw_mci_resume()