Lines Matching refs:mmc
109 static int dw_mci_card_busy(struct mmc_host *mmc);
192 struct mmc_host *mmc = slot->mmc; in dw_mci_init_debugfs() local
197 root = mmc->debugfs_root; in dw_mci_init_debugfs()
228 dev_err(&mmc->class_dev, "failed to initialize debugfs for slot\n"); in dw_mci_init_debugfs()
234 static u32 dw_mci_prepare_command(struct mmc_host *mmc, struct mmc_command *cmd) in dw_mci_prepare_command() argument
237 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_prepare_command()
709 static void dw_mci_pre_req(struct mmc_host *mmc, in dw_mci_pre_req() argument
713 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_pre_req()
728 static void dw_mci_post_req(struct mmc_host *mmc, in dw_mci_post_req() argument
732 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_post_req()
951 dev_err(&slot->mmc->class_dev, in mci_send_cmd()
983 dev_info(&slot->mmc->class_dev, in dw_mci_setup_bus()
1047 cmdflags = dw_mci_prepare_command(slot->mmc, cmd); in __dw_mci_start_request()
1081 host->stop_cmdr = dw_mci_prepare_command(slot->mmc, mrq->stop); in __dw_mci_start_request()
1100 dev_vdbg(&slot->mmc->class_dev, "queue request: state=%d\n", in dw_mci_queue_request()
1106 dev_warn(&slot->mmc->class_dev, in dw_mci_queue_request()
1124 static void dw_mci_request(struct mmc_host *mmc, struct mmc_request *mrq) in dw_mci_request() argument
1126 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_request()
1141 mmc_request_done(mmc, mrq); in dw_mci_request()
1150 static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in dw_mci_set_ios() argument
1152 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_set_ios()
1192 if (!IS_ERR(mmc->supply.vmmc)) { in dw_mci_set_ios()
1193 ret = mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, in dw_mci_set_ios()
1209 if (!IS_ERR(mmc->supply.vqmmc)) { in dw_mci_set_ios()
1210 ret = regulator_enable(mmc->supply.vqmmc); in dw_mci_set_ios()
1235 if (!IS_ERR(mmc->supply.vmmc)) in dw_mci_set_ios()
1236 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0); in dw_mci_set_ios()
1238 if (!IS_ERR(mmc->supply.vqmmc) && slot->host->vqmmc_enabled) in dw_mci_set_ios()
1239 regulator_disable(mmc->supply.vqmmc); in dw_mci_set_ios()
1254 static int dw_mci_card_busy(struct mmc_host *mmc) in dw_mci_card_busy() argument
1256 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_card_busy()
1268 static int dw_mci_switch_voltage(struct mmc_host *mmc, struct mmc_ios *ios) in dw_mci_switch_voltage() argument
1270 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_switch_voltage()
1292 if (!IS_ERR(mmc->supply.vqmmc)) { in dw_mci_switch_voltage()
1293 ret = regulator_set_voltage(mmc->supply.vqmmc, min_uv, max_uv); in dw_mci_switch_voltage()
1296 dev_dbg(&mmc->class_dev, in dw_mci_switch_voltage()
1307 static int dw_mci_get_ro(struct mmc_host *mmc) in dw_mci_get_ro() argument
1310 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_get_ro()
1311 int gpio_ro = mmc_gpio_get_ro(mmc); in dw_mci_get_ro()
1323 dev_dbg(&mmc->class_dev, "card is %s\n", in dw_mci_get_ro()
1329 static int dw_mci_get_cd(struct mmc_host *mmc) in dw_mci_get_cd() argument
1332 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_get_cd()
1335 int gpio_cd = mmc_gpio_get_cd(mmc); in dw_mci_get_cd()
1339 (mmc->caps & MMC_CAP_NONREMOVABLE)) in dw_mci_get_cd()
1350 dev_dbg(&mmc->class_dev, "card is present\n"); in dw_mci_get_cd()
1353 dev_dbg(&mmc->class_dev, "card is not present\n"); in dw_mci_get_cd()
1360 static void dw_mci_init_card(struct mmc_host *mmc, struct mmc_card *card) in dw_mci_init_card() argument
1362 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_init_card()
1370 if (mmc->caps & MMC_CAP_SDIO_IRQ) { in dw_mci_init_card()
1394 static void dw_mci_enable_sdio_irq(struct mmc_host *mmc, int enb) in dw_mci_enable_sdio_irq() argument
1396 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_enable_sdio_irq()
1414 static int dw_mci_execute_tuning(struct mmc_host *mmc, u32 opcode) in dw_mci_execute_tuning() argument
1416 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_execute_tuning()
1426 static int dw_mci_prepare_hs400_tuning(struct mmc_host *mmc, struct mmc_ios *ios) in dw_mci_prepare_hs400_tuning() argument
1428 struct dw_mci_slot *slot = mmc_priv(mmc); in dw_mci_prepare_hs400_tuning()
1458 struct mmc_host *prev_mmc = host->cur_slot->mmc; in dw_mci_request_end()
1469 mmc_hostname(slot->mmc)); in dw_mci_request_end()
2179 if (slot->mmc->ops->card_event) in dw_mci_handle_cd()
2180 slot->mmc->ops->card_event(slot->mmc); in dw_mci_handle_cd()
2181 mmc_detect_change(slot->mmc, in dw_mci_handle_cd()
2285 mmc_signal_sdio_irq(slot->mmc); in dw_mci_interrupt()
2371 struct mmc_host *mmc; in dw_mci_init_slot() local
2377 mmc = mmc_alloc_host(sizeof(struct dw_mci_slot), host->dev); in dw_mci_init_slot()
2378 if (!mmc) in dw_mci_init_slot()
2381 slot = mmc_priv(mmc); in dw_mci_init_slot()
2384 slot->mmc = mmc; in dw_mci_init_slot()
2390 mmc->ops = &dw_mci_ops; in dw_mci_init_slot()
2393 mmc->f_min = DW_MCI_FREQ_MIN; in dw_mci_init_slot()
2394 mmc->f_max = DW_MCI_FREQ_MAX; in dw_mci_init_slot()
2396 mmc->f_min = freq[0]; in dw_mci_init_slot()
2397 mmc->f_max = freq[1]; in dw_mci_init_slot()
2401 ret = mmc_regulator_get_supply(mmc); in dw_mci_init_slot()
2405 if (!mmc->ocr_avail) in dw_mci_init_slot()
2406 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; in dw_mci_init_slot()
2409 mmc->caps = host->pdata->caps; in dw_mci_init_slot()
2412 mmc->pm_caps = host->pdata->pm_caps; in dw_mci_init_slot()
2422 mmc->caps |= drv_data->caps[ctrl_id]; in dw_mci_init_slot()
2425 mmc->caps2 = host->pdata->caps2; in dw_mci_init_slot()
2427 ret = mmc_of_parse(mmc); in dw_mci_init_slot()
2432 mmc->max_segs = host->pdata->blk_settings->max_segs; in dw_mci_init_slot()
2433 mmc->max_blk_size = host->pdata->blk_settings->max_blk_size; in dw_mci_init_slot()
2434 mmc->max_blk_count = host->pdata->blk_settings->max_blk_count; in dw_mci_init_slot()
2435 mmc->max_req_size = host->pdata->blk_settings->max_req_size; in dw_mci_init_slot()
2436 mmc->max_seg_size = host->pdata->blk_settings->max_seg_size; in dw_mci_init_slot()
2440 mmc->max_segs = host->ring_size; in dw_mci_init_slot()
2441 mmc->max_blk_size = 65536; in dw_mci_init_slot()
2442 mmc->max_seg_size = DW_MCI_DESC_DATA_LENGTH; in dw_mci_init_slot()
2443 mmc->max_req_size = mmc->max_seg_size * host->ring_size; in dw_mci_init_slot()
2444 mmc->max_blk_count = mmc->max_req_size / 512; in dw_mci_init_slot()
2446 mmc->max_segs = 64; in dw_mci_init_slot()
2447 mmc->max_blk_size = 65536; /* BLKSIZ is 16 bits */ in dw_mci_init_slot()
2448 mmc->max_blk_count = 512; in dw_mci_init_slot()
2449 mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count; in dw_mci_init_slot()
2450 mmc->max_seg_size = mmc->max_req_size; in dw_mci_init_slot()
2454 if (dw_mci_get_cd(mmc)) in dw_mci_init_slot()
2459 ret = mmc_add_host(mmc); in dw_mci_init_slot()
2470 mmc_free_host(mmc); in dw_mci_init_slot()
2477 mmc_remove_host(slot->mmc); in dw_mci_cleanup_slot()
2479 mmc_free_host(slot->mmc); in dw_mci_cleanup_slot()
2729 if (IS_ERR_VALUE(mmc_gpio_get_cd(slot->mmc))) in dw_mci_enable_cd()
3045 if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER) { in dw_mci_resume()
3046 dw_mci_set_ios(slot->mmc, &slot->mmc->ios); in dw_mci_resume()