Lines Matching refs:mmc
54 static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode);
75 mmc_hostname(host->mmc)); in sdhci_dumpregs()
153 (host->mmc->caps & MMC_CAP_NONREMOVABLE)) in sdhci_set_card_detection()
205 mmc_hostname(host->mmc), (int)mask); in sdhci_reset()
225 static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios);
243 sdhci_set_ios(host->mmc, &host->mmc->ios); in sdhci_init()
260 host->mmc->max_blk_count = in sdhci_reinit()
499 host->align_addr = dma_map_single(mmc_dev(host->mmc), in sdhci_adma_table_pre()
501 if (dma_mapping_error(mmc_dev(host->mmc), host->align_addr)) in sdhci_adma_table_pre()
505 host->sg_count = dma_map_sg(mmc_dev(host->mmc), in sdhci_adma_table_pre()
583 dma_sync_single_for_device(mmc_dev(host->mmc), in sdhci_adma_table_pre()
587 host->adma_addr = dma_map_single(mmc_dev(host->mmc), in sdhci_adma_table_pre()
589 if (dma_mapping_error(mmc_dev(host->mmc), host->adma_addr)) in sdhci_adma_table_pre()
596 dma_unmap_sg(mmc_dev(host->mmc), data->sg, in sdhci_adma_table_pre()
599 dma_unmap_single(mmc_dev(host->mmc), host->align_addr, in sdhci_adma_table_pre()
621 dma_unmap_single(mmc_dev(host->mmc), host->adma_addr, in sdhci_adma_table_post()
624 dma_unmap_single(mmc_dev(host->mmc), host->align_addr, in sdhci_adma_table_post()
628 dma_sync_sg_for_cpu(mmc_dev(host->mmc), data->sg, in sdhci_adma_table_post()
647 dma_unmap_sg(mmc_dev(host->mmc), data->sg, in sdhci_adma_table_post()
700 mmc_hostname(host->mmc), count, cmd->opcode); in sdhci_calc_timeout()
737 BUG_ON(data->blksz > host->mmc->max_blk_size); in sdhci_prepare_data()
828 sg_cnt = dma_map_sg(mmc_dev(host->mmc), in sdhci_prepare_data()
931 dma_unmap_sg(mmc_dev(host->mmc), data->sg, in sdhci_finish_data()
995 "inhibit bit(s).\n", mmc_hostname(host->mmc)); in sdhci_send_command()
1017 mmc_hostname(host->mmc)); in sdhci_send_command()
1110 mmc_hostname(host->mmc)); in sdhci_get_preset_value()
1127 host->mmc->actual_clock = 0; in sdhci_set_clock()
1204 host->mmc->actual_clock = (host->max_clk * clk_mul) / real_div; in sdhci_set_clock()
1218 "stabilised.\n", mmc_hostname(host->mmc)); in sdhci_set_clock()
1308 static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_request() argument
1315 host = mmc_priv(mmc); in sdhci_request()
1347 present = mmc_gpio_get_cd(host->mmc); in sdhci_request()
1371 if (mmc->card) { in sdhci_request()
1374 mmc->card->type == MMC_TYPE_MMC ? in sdhci_request()
1378 sdhci_execute_tuning(mmc, tuning_opcode); in sdhci_request()
1407 mmc_regulator_set_ocr(host->mmc, host->vmmc, 0); in sdhci_do_set_ios()
1433 mmc_regulator_set_ocr(host->mmc, host->vmmc, vdd_bit); in sdhci_do_set_ios()
1575 static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in sdhci_set_ios() argument
1577 struct sdhci_host *host = mmc_priv(mmc); in sdhci_set_ios()
1586 int gpio_cd = mmc_gpio_get_cd(host->mmc); in sdhci_do_get_cd()
1593 (host->mmc->caps & MMC_CAP_NONREMOVABLE)) in sdhci_do_get_cd()
1604 static int sdhci_get_cd(struct mmc_host *mmc) in sdhci_get_cd() argument
1606 struct sdhci_host *host = mmc_priv(mmc); in sdhci_get_cd()
1657 static void sdhci_hw_reset(struct mmc_host *mmc) in sdhci_hw_reset() argument
1659 struct sdhci_host *host = mmc_priv(mmc); in sdhci_hw_reset()
1665 static int sdhci_get_ro(struct mmc_host *mmc) in sdhci_get_ro() argument
1667 struct sdhci_host *host = mmc_priv(mmc); in sdhci_get_ro()
1698 static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable) in sdhci_enable_sdio_irq() argument
1700 struct sdhci_host *host = mmc_priv(mmc); in sdhci_enable_sdio_irq()
1733 " failed\n", mmc_hostname(host->mmc)); in sdhci_do_start_signal_voltage_switch()
1746 mmc_hostname(host->mmc)); in sdhci_do_start_signal_voltage_switch()
1755 " failed\n", mmc_hostname(host->mmc)); in sdhci_do_start_signal_voltage_switch()
1776 mmc_hostname(host->mmc)); in sdhci_do_start_signal_voltage_switch()
1784 " failed\n", mmc_hostname(host->mmc)); in sdhci_do_start_signal_voltage_switch()
1795 static int sdhci_start_signal_voltage_switch(struct mmc_host *mmc, in sdhci_start_signal_voltage_switch() argument
1798 struct sdhci_host *host = mmc_priv(mmc); in sdhci_start_signal_voltage_switch()
1809 static int sdhci_card_busy(struct mmc_host *mmc) in sdhci_card_busy() argument
1811 struct sdhci_host *host = mmc_priv(mmc); in sdhci_card_busy()
1822 static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) in sdhci_execute_tuning() argument
1832 host = mmc_priv(mmc); in sdhci_execute_tuning()
1905 if (mmc->ios.bus_width == MMC_BUS_WIDTH_8) in sdhci_execute_tuning()
1908 else if (mmc->ios.bus_width == MMC_BUS_WIDTH_4) in sdhci_execute_tuning()
1990 mmc->max_blk_count = (4 * 1024 * 1024) / mmc->max_blk_size; in sdhci_execute_tuning()
2044 static void sdhci_card_event(struct mmc_host *mmc) in sdhci_card_event() argument
2046 struct sdhci_host *host = mmc_priv(mmc); in sdhci_card_event()
2055 mmc_hostname(host->mmc)); in sdhci_card_event()
2057 mmc_hostname(host->mmc)); in sdhci_card_event()
2092 sdhci_card_event(host->mmc); in sdhci_tasklet_card()
2094 mmc_detect_change(host->mmc, msecs_to_jiffies(200)); in sdhci_tasklet_card()
2152 mmc_request_done(host->mmc, mrq); in sdhci_tasklet_finish()
2167 "interrupt.\n", mmc_hostname(host->mmc)); in sdhci_timeout_timer()
2214 mmc_hostname(host->mmc), (unsigned)intmask); in sdhci_cmd_irq()
2259 const char *name = mmc_hostname(host->mmc); in sdhci_show_adma_error()
2316 mmc_hostname(host->mmc), (unsigned)intmask); in sdhci_data_irq()
2331 pr_err("%s: ADMA error\n", mmc_hostname(host->mmc)); in sdhci_data_irq()
2366 mmc_hostname(host->mmc), dmastart, in sdhci_data_irq()
2398 mmc_hostname(host->mmc)); in sdhci_irq()
2411 mmc_hostname(host->mmc), intmask); in sdhci_irq()
2456 mmc_hostname(host->mmc)); in sdhci_irq()
2482 mmc_hostname(host->mmc), unexpected); in sdhci_irq()
2489 mmc_signal_sdio_irq(host->mmc); in sdhci_irq()
2543 ret = mmc_suspend_host(host->mmc); in sdhci_suspend_host()
2556 if (!device_may_wakeup(mmc_dev(host->mmc))) { in sdhci_suspend_host()
2577 if (!device_may_wakeup(mmc_dev(host->mmc))) { in sdhci_resume_host()
2579 mmc_hostname(host->mmc), host); in sdhci_resume_host()
2587 if ((host->mmc->pm_flags & MMC_PM_KEEP_POWER) && in sdhci_resume_host()
2593 sdhci_do_set_ios(host, &host->mmc->ios); in sdhci_resume_host()
2595 sdhci_init(host, (host->mmc->pm_flags & MMC_PM_KEEP_POWER)); in sdhci_resume_host()
2599 ret = mmc_resume_host(host->mmc); in sdhci_resume_host()
2619 return pm_runtime_get_sync(host->mmc->parent); in sdhci_runtime_pm_get()
2624 pm_runtime_mark_last_busy(host->mmc->parent); in sdhci_runtime_pm_put()
2625 return pm_runtime_put_autosuspend(host->mmc->parent); in sdhci_runtime_pm_put()
2668 sdhci_do_set_ios(host, &host->mmc->ios); in sdhci_runtime_resume_host()
2670 sdhci_do_start_signal_voltage_switch(host, &host->mmc->ios); in sdhci_runtime_resume_host()
2710 struct mmc_host *mmc; in sdhci_alloc_host() local
2715 mmc = mmc_alloc_host(sizeof(struct sdhci_host) + priv_size, dev); in sdhci_alloc_host()
2716 if (!mmc) in sdhci_alloc_host()
2719 host = mmc_priv(mmc); in sdhci_alloc_host()
2720 host->mmc = mmc; in sdhci_alloc_host()
2729 struct mmc_host *mmc; in sdhci_add_host() local
2739 mmc = host->mmc; in sdhci_add_host()
2753 "You may experience problems.\n", mmc_hostname(mmc), in sdhci_add_host()
2793 mmc_hostname(mmc)); in sdhci_add_host()
2813 mmc_hostname(mmc)); in sdhci_add_host()
2825 mmc_dev(host->mmc)->dma_mask = &host->dma_mask; in sdhci_add_host()
2840 "frequency.\n", mmc_hostname(mmc)); in sdhci_add_host()
2865 mmc->ops = &sdhci_ops; in sdhci_add_host()
2866 mmc->f_max = host->max_clk; in sdhci_add_host()
2868 mmc->f_min = host->ops->get_min_clock(host); in sdhci_add_host()
2871 mmc->f_min = (host->max_clk * host->clk_mul) / 1024; in sdhci_add_host()
2872 mmc->f_max = host->max_clk * host->clk_mul; in sdhci_add_host()
2874 mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_300; in sdhci_add_host()
2876 mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_200; in sdhci_add_host()
2886 "frequency.\n", mmc_hostname(mmc)); in sdhci_add_host()
2894 host->timeout_clk = mmc->f_max / 1000; in sdhci_add_host()
2896 mmc->max_discard_to = (1 << 27) / host->timeout_clk; in sdhci_add_host()
2898 mmc->caps |= MMC_CAP_SDIO_IRQ | MMC_CAP_ERASE | MMC_CAP_CMD23; in sdhci_add_host()
2908 DBG("%s: Auto-CMD23 available\n", mmc_hostname(mmc)); in sdhci_add_host()
2910 DBG("%s: Auto-CMD23 unavailable\n", mmc_hostname(mmc)); in sdhci_add_host()
2921 mmc->caps |= MMC_CAP_4_BIT_DATA; in sdhci_add_host()
2924 mmc->caps &= ~MMC_CAP_CMD23; in sdhci_add_host()
2927 mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED; in sdhci_add_host()
2930 !(host->mmc->caps & MMC_CAP_NONREMOVABLE)) in sdhci_add_host()
2931 mmc->caps |= MMC_CAP_NEEDS_POLL; in sdhci_add_host()
2934 host->vqmmc = regulator_get(mmc_dev(mmc), "vqmmc"); in sdhci_add_host()
2938 mmc_hostname(mmc)); in sdhci_add_host()
2950 mmc_hostname(mmc), ret); in sdhci_add_host()
2962 mmc->caps |= MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25; in sdhci_add_host()
2966 mmc->caps |= MMC_CAP_UHS_SDR104 | MMC_CAP_UHS_SDR50; in sdhci_add_host()
2968 mmc->caps |= MMC_CAP_UHS_SDR50; in sdhci_add_host()
2971 mmc->caps |= MMC_CAP_UHS_DDR50; in sdhci_add_host()
2978 if (mmc->caps2 & MMC_CAP2_HS200) in sdhci_add_host()
2983 mmc->caps |= MMC_CAP_DRIVER_TYPE_A; in sdhci_add_host()
2985 mmc->caps |= MMC_CAP_DRIVER_TYPE_C; in sdhci_add_host()
2987 mmc->caps |= MMC_CAP_DRIVER_TYPE_D; in sdhci_add_host()
3006 host->vmmc = regulator_get(mmc_dev(mmc), "vmmc"); in sdhci_add_host()
3010 mmc_hostname(mmc)); in sdhci_add_host()
3061 mmc->max_current_330 = ((max_current_caps & in sdhci_add_host()
3069 mmc->max_current_300 = ((max_current_caps & in sdhci_add_host()
3077 mmc->max_current_180 = ((max_current_caps & in sdhci_add_host()
3083 mmc->ocr_avail = ocr_avail; in sdhci_add_host()
3084 mmc->ocr_avail_sdio = ocr_avail; in sdhci_add_host()
3086 mmc->ocr_avail_sdio &= host->ocr_avail_sdio; in sdhci_add_host()
3087 mmc->ocr_avail_sd = ocr_avail; in sdhci_add_host()
3089 mmc->ocr_avail_sd &= host->ocr_avail_sd; in sdhci_add_host()
3091 mmc->ocr_avail_sd &= ~MMC_VDD_165_195; in sdhci_add_host()
3092 mmc->ocr_avail_mmc = ocr_avail; in sdhci_add_host()
3094 mmc->ocr_avail_mmc &= host->ocr_avail_mmc; in sdhci_add_host()
3096 if (mmc->ocr_avail == 0) { in sdhci_add_host()
3098 "support voltages.\n", mmc_hostname(mmc)); in sdhci_add_host()
3109 mmc->max_segs = 128; in sdhci_add_host()
3111 mmc->max_segs = 1; in sdhci_add_host()
3113 mmc->max_segs = 128; in sdhci_add_host()
3119 mmc->max_req_size = 524288; in sdhci_add_host()
3128 mmc->max_seg_size = 65535; in sdhci_add_host()
3130 mmc->max_seg_size = 65536; in sdhci_add_host()
3132 mmc->max_seg_size = mmc->max_req_size; in sdhci_add_host()
3140 mmc->max_blk_size = 2; in sdhci_add_host()
3142 mmc->max_blk_size = (caps[0] & SDHCI_MAX_BLOCK_MASK) >> in sdhci_add_host()
3144 if (mmc->max_blk_size >= 3) { in sdhci_add_host()
3146 "assuming 512 bytes\n", mmc_hostname(mmc)); in sdhci_add_host()
3147 mmc->max_blk_size = 0; in sdhci_add_host()
3151 mmc->max_blk_size = 512 << mmc->max_blk_size; in sdhci_add_host()
3156 mmc->max_blk_count = (host->quirks & SDHCI_QUIRK_NO_MULTIBLOCK) ? 1 : 65535; in sdhci_add_host()
3178 mmc_hostname(mmc), host); in sdhci_add_host()
3181 mmc_hostname(mmc), host->irq, ret); in sdhci_add_host()
3193 "%s::", mmc_hostname(mmc)); in sdhci_add_host()
3196 host->led.default_trigger = mmc_hostname(mmc); in sdhci_add_host()
3199 ret = led_classdev_register(mmc_dev(mmc), &host->led); in sdhci_add_host()
3202 mmc_hostname(mmc), ret); in sdhci_add_host()
3209 mmc_add_host(mmc); in sdhci_add_host()
3212 mmc_hostname(mmc), host->hw_name, dev_name(mmc_dev(mmc)), in sdhci_add_host()
3246 " transfer!\n", mmc_hostname(host->mmc)); in sdhci_remove_host()
3257 mmc_remove_host(host->mmc); in sdhci_remove_host()
3295 mmc_free_host(host->mmc); in sdhci_free_host()