Lines Matching refs:mmc
54 static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode);
85 mmc_hostname(host->mmc)); in sdhci_dumpregs()
149 (host->mmc->caps & MMC_CAP_NONREMOVABLE)) in sdhci_set_card_detection()
196 mmc_hostname(host->mmc), (int)mask); in sdhci_reset()
226 static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios);
247 sdhci_set_ios(host->mmc, &host->mmc->ios); in sdhci_init()
491 host->align_addr = dma_map_single(mmc_dev(host->mmc), in sdhci_adma_table_pre()
493 if (dma_mapping_error(mmc_dev(host->mmc), host->align_addr)) in sdhci_adma_table_pre()
578 dma_sync_single_for_device(mmc_dev(host->mmc), in sdhci_adma_table_pre()
585 dma_unmap_single(mmc_dev(host->mmc), host->align_addr, in sdhci_adma_table_pre()
608 dma_unmap_single(mmc_dev(host->mmc), host->align_addr, in sdhci_adma_table_post()
620 dma_sync_sg_for_cpu(mmc_dev(host->mmc), data->sg, in sdhci_adma_table_post()
640 dma_unmap_sg(mmc_dev(host->mmc), data->sg, in sdhci_adma_table_post()
706 mmc_hostname(host->mmc), count, cmd->opcode); in sdhci_calc_timeout()
755 BUG_ON(data->blksz > host->mmc->max_blk_size); in sdhci_prepare_data()
967 dma_unmap_sg(mmc_dev(host->mmc), in sdhci_finish_data()
1034 "inhibit bit(s).\n", mmc_hostname(host->mmc)); in sdhci_send_command()
1062 mmc_hostname(host->mmc)); in sdhci_send_command()
1159 mmc_hostname(host->mmc)); in sdhci_get_preset_value()
1174 host->mmc->actual_clock = 0; in sdhci_set_clock()
1259 host->mmc->actual_clock = (host->max_clk * clk_mul) / real_div; in sdhci_set_clock()
1272 "stabilised.\n", mmc_hostname(host->mmc)); in sdhci_set_clock()
1288 struct mmc_host *mmc = host->mmc; in sdhci_set_power() local
1291 if (!IS_ERR(mmc->supply.vmmc)) { in sdhci_set_power()
1293 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd); in sdhci_set_power()
1370 static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_request() argument
1376 host = mmc_priv(mmc); in sdhci_request()
1381 present = mmc->ops->get_cd(mmc); in sdhci_request()
1468 struct mmc_host *mmc = host->mmc; in sdhci_do_set_ios() local
1474 if (!IS_ERR(mmc->supply.vmmc) && in sdhci_do_set_ios()
1476 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0); in sdhci_do_set_ios()
1500 host->timeout_clk = host->mmc->actual_clock ? in sdhci_do_set_ios()
1501 host->mmc->actual_clock / 1000 : in sdhci_do_set_ios()
1503 host->mmc->max_busy_timeout = in sdhci_do_set_ios()
1507 host->mmc->max_busy_timeout /= host->timeout_clk; in sdhci_do_set_ios()
1558 "driver type B\n", mmc_hostname(mmc)); in sdhci_do_set_ios()
1622 static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in sdhci_set_ios() argument
1624 struct sdhci_host *host = mmc_priv(mmc); in sdhci_set_ios()
1633 int gpio_cd = mmc_gpio_get_cd(host->mmc); in sdhci_do_get_cd()
1639 if (host->mmc->caps & MMC_CAP_NONREMOVABLE) in sdhci_do_get_cd()
1657 static int sdhci_get_cd(struct mmc_host *mmc) in sdhci_get_cd() argument
1659 struct sdhci_host *host = mmc_priv(mmc); in sdhci_get_cd()
1710 static void sdhci_hw_reset(struct mmc_host *mmc) in sdhci_hw_reset() argument
1712 struct sdhci_host *host = mmc_priv(mmc); in sdhci_hw_reset()
1718 static int sdhci_get_ro(struct mmc_host *mmc) in sdhci_get_ro() argument
1720 struct sdhci_host *host = mmc_priv(mmc); in sdhci_get_ro()
1743 static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable) in sdhci_enable_sdio_irq() argument
1745 struct sdhci_host *host = mmc_priv(mmc); in sdhci_enable_sdio_irq()
1765 struct mmc_host *mmc = host->mmc; in sdhci_do_start_signal_voltage_switch() local
1784 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_do_start_signal_voltage_switch()
1785 ret = regulator_set_voltage(mmc->supply.vqmmc, 2700000, in sdhci_do_start_signal_voltage_switch()
1789 mmc_hostname(mmc)); in sdhci_do_start_signal_voltage_switch()
1802 mmc_hostname(mmc)); in sdhci_do_start_signal_voltage_switch()
1806 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_do_start_signal_voltage_switch()
1807 ret = regulator_set_voltage(mmc->supply.vqmmc, in sdhci_do_start_signal_voltage_switch()
1811 mmc_hostname(mmc)); in sdhci_do_start_signal_voltage_switch()
1833 mmc_hostname(mmc)); in sdhci_do_start_signal_voltage_switch()
1837 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_do_start_signal_voltage_switch()
1838 ret = regulator_set_voltage(mmc->supply.vqmmc, 1100000, in sdhci_do_start_signal_voltage_switch()
1842 mmc_hostname(mmc)); in sdhci_do_start_signal_voltage_switch()
1853 static int sdhci_start_signal_voltage_switch(struct mmc_host *mmc, in sdhci_start_signal_voltage_switch() argument
1856 struct sdhci_host *host = mmc_priv(mmc); in sdhci_start_signal_voltage_switch()
1867 static int sdhci_card_busy(struct mmc_host *mmc) in sdhci_card_busy() argument
1869 struct sdhci_host *host = mmc_priv(mmc); in sdhci_card_busy()
1880 static int sdhci_prepare_hs400_tuning(struct mmc_host *mmc, struct mmc_ios *ios) in sdhci_prepare_hs400_tuning() argument
1882 struct sdhci_host *host = mmc_priv(mmc); in sdhci_prepare_hs400_tuning()
1892 static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) in sdhci_execute_tuning() argument
1894 struct sdhci_host *host = mmc_priv(mmc); in sdhci_execute_tuning()
2000 if (mmc->ios.bus_width == MMC_BUS_WIDTH_8) in sdhci_execute_tuning()
2003 else if (mmc->ios.bus_width == MMC_BUS_WIDTH_4) in sdhci_execute_tuning()
2081 host->mmc->retune_period = err ? 0 : tuning_count; in sdhci_execute_tuning()
2134 static void sdhci_post_req(struct mmc_host *mmc, struct mmc_request *mrq, in sdhci_post_req() argument
2137 struct sdhci_host *host = mmc_priv(mmc); in sdhci_post_req()
2143 dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len, in sdhci_post_req()
2162 sg_count = dma_map_sg(mmc_dev(host->mmc), data->sg, data->sg_len, in sdhci_pre_dma_transfer()
2175 static void sdhci_pre_req(struct mmc_host *mmc, struct mmc_request *mrq, in sdhci_pre_req() argument
2178 struct sdhci_host *host = mmc_priv(mmc); in sdhci_pre_req()
2186 static void sdhci_card_event(struct mmc_host *mmc) in sdhci_card_event() argument
2188 struct sdhci_host *host = mmc_priv(mmc); in sdhci_card_event()
2203 mmc_hostname(host->mmc)); in sdhci_card_event()
2205 mmc_hostname(host->mmc)); in sdhci_card_event()
2296 mmc_request_done(host->mmc, mrq); in sdhci_tasklet_finish()
2311 "interrupt.\n", mmc_hostname(host->mmc)); in sdhci_timeout_timer()
2344 mmc_hostname(host->mmc), (unsigned)intmask); in sdhci_cmd_irq()
2396 const char *name = mmc_hostname(host->mmc); in sdhci_adma_show_error()
2470 mmc_hostname(host->mmc), (unsigned)intmask); in sdhci_data_irq()
2485 pr_err("%s: ADMA error\n", mmc_hostname(host->mmc)); in sdhci_data_irq()
2520 mmc_hostname(host->mmc), dmastart, in sdhci_data_irq()
2567 mmc_hostname(host->mmc), intmask); in sdhci_irq()
2608 mmc_hostname(host->mmc)); in sdhci_irq()
2636 mmc_hostname(host->mmc), unexpected); in sdhci_irq()
2655 sdhci_card_event(host->mmc); in sdhci_thread_irq()
2656 mmc_detect_change(host->mmc, msecs_to_jiffies(200)); in sdhci_thread_irq()
2660 sdio_run_irqs(host->mmc); in sdhci_thread_irq()
2708 mmc_retune_timer_stop(host->mmc); in sdhci_suspend_host()
2709 mmc_retune_needed(host->mmc); in sdhci_suspend_host()
2711 if (!device_may_wakeup(mmc_dev(host->mmc))) { in sdhci_suspend_host()
2734 if ((host->mmc->pm_flags & MMC_PM_KEEP_POWER) && in sdhci_resume_host()
2740 sdhci_do_set_ios(host, &host->mmc->ios); in sdhci_resume_host()
2742 sdhci_init(host, (host->mmc->pm_flags & MMC_PM_KEEP_POWER)); in sdhci_resume_host()
2746 if (!device_may_wakeup(mmc_dev(host->mmc))) { in sdhci_resume_host()
2749 mmc_hostname(host->mmc), host); in sdhci_resume_host()
2766 return pm_runtime_get_sync(host->mmc->parent); in sdhci_runtime_pm_get()
2771 pm_runtime_mark_last_busy(host->mmc->parent); in sdhci_runtime_pm_put()
2772 return pm_runtime_put_autosuspend(host->mmc->parent); in sdhci_runtime_pm_put()
2780 pm_runtime_get_noresume(host->mmc->parent); in sdhci_runtime_pm_bus_on()
2788 pm_runtime_put_noidle(host->mmc->parent); in sdhci_runtime_pm_bus_off()
2795 mmc_retune_timer_stop(host->mmc); in sdhci_runtime_suspend_host()
2796 mmc_retune_needed(host->mmc); in sdhci_runtime_suspend_host()
2829 sdhci_do_start_signal_voltage_switch(host, &host->mmc->ios); in sdhci_runtime_resume_host()
2830 sdhci_do_set_ios(host, &host->mmc->ios); in sdhci_runtime_resume_host()
2867 struct mmc_host *mmc; in sdhci_alloc_host() local
2872 mmc = mmc_alloc_host(sizeof(struct sdhci_host) + priv_size, dev); in sdhci_alloc_host()
2873 if (!mmc) in sdhci_alloc_host()
2876 host = mmc_priv(mmc); in sdhci_alloc_host()
2877 host->mmc = mmc; in sdhci_alloc_host()
2879 mmc->ops = &host->mmc_host_ops; in sdhci_alloc_host()
2888 struct mmc_host *mmc; in sdhci_add_host() local
2900 mmc = host->mmc; in sdhci_add_host()
2916 "You may experience problems.\n", mmc_hostname(mmc), in sdhci_add_host()
2965 mmc_hostname(mmc)); in sdhci_add_host()
3000 host->adma_table = dma_alloc_coherent(mmc_dev(mmc), in sdhci_add_host()
3007 dma_free_coherent(mmc_dev(mmc), in sdhci_add_host()
3013 mmc_hostname(mmc)); in sdhci_add_host()
3019 mmc_hostname(mmc)); in sdhci_add_host()
3021 dma_free_coherent(mmc_dev(mmc), host->adma_table_sz, in sdhci_add_host()
3036 mmc_dev(mmc)->dma_mask = &host->dma_mask; in sdhci_add_host()
3051 "frequency.\n", mmc_hostname(mmc)); in sdhci_add_host()
3079 mmc->f_min = host->ops->get_min_clock(host); in sdhci_add_host()
3082 mmc->f_min = (host->max_clk * host->clk_mul) / 1024; in sdhci_add_host()
3085 mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_300; in sdhci_add_host()
3087 mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_200; in sdhci_add_host()
3089 if (!mmc->f_max || (mmc->f_max && (mmc->f_max > max_clk))) in sdhci_add_host()
3090 mmc->f_max = max_clk; in sdhci_add_host()
3101 mmc_hostname(mmc)); in sdhci_add_host()
3112 mmc->max_busy_timeout = host->ops->get_max_timeout_count ? in sdhci_add_host()
3114 mmc->max_busy_timeout /= host->timeout_clk; in sdhci_add_host()
3117 mmc->caps |= MMC_CAP_SDIO_IRQ | MMC_CAP_ERASE | MMC_CAP_CMD23; in sdhci_add_host()
3118 mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD; in sdhci_add_host()
3129 DBG("%s: Auto-CMD23 available\n", mmc_hostname(mmc)); in sdhci_add_host()
3131 DBG("%s: Auto-CMD23 unavailable\n", mmc_hostname(mmc)); in sdhci_add_host()
3142 mmc->caps |= MMC_CAP_4_BIT_DATA; in sdhci_add_host()
3145 mmc->caps &= ~MMC_CAP_CMD23; in sdhci_add_host()
3148 mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED; in sdhci_add_host()
3151 !(mmc->caps & MMC_CAP_NONREMOVABLE) && in sdhci_add_host()
3152 IS_ERR_VALUE(mmc_gpio_get_cd(host->mmc))) in sdhci_add_host()
3153 mmc->caps |= MMC_CAP_NEEDS_POLL; in sdhci_add_host()
3156 if (mmc_regulator_get_supply(mmc) == -EPROBE_DEFER) in sdhci_add_host()
3160 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_add_host()
3161 ret = regulator_enable(mmc->supply.vqmmc); in sdhci_add_host()
3162 if (!regulator_is_supported_voltage(mmc->supply.vqmmc, 1700000, in sdhci_add_host()
3169 mmc_hostname(mmc), ret); in sdhci_add_host()
3170 mmc->supply.vqmmc = ERR_PTR(-EINVAL); in sdhci_add_host()
3181 mmc->caps |= MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25; in sdhci_add_host()
3185 mmc->caps |= MMC_CAP_UHS_SDR104 | MMC_CAP_UHS_SDR50; in sdhci_add_host()
3190 mmc->caps2 |= MMC_CAP2_HS200; in sdhci_add_host()
3192 mmc->caps |= MMC_CAP_UHS_SDR50; in sdhci_add_host()
3196 mmc->caps2 |= MMC_CAP2_HS400; in sdhci_add_host()
3198 if ((mmc->caps2 & MMC_CAP2_HSX00_1_2V) && in sdhci_add_host()
3199 (IS_ERR(mmc->supply.vqmmc) || in sdhci_add_host()
3200 !regulator_is_supported_voltage(mmc->supply.vqmmc, 1100000, in sdhci_add_host()
3202 mmc->caps2 &= ~MMC_CAP2_HSX00_1_2V; in sdhci_add_host()
3206 mmc->caps |= MMC_CAP_UHS_DDR50; in sdhci_add_host()
3213 if (mmc->caps2 & MMC_CAP2_HS200) in sdhci_add_host()
3218 mmc->caps |= MMC_CAP_DRIVER_TYPE_A; in sdhci_add_host()
3220 mmc->caps |= MMC_CAP_DRIVER_TYPE_C; in sdhci_add_host()
3222 mmc->caps |= MMC_CAP_DRIVER_TYPE_D; in sdhci_add_host()
3249 if (!max_current_caps && !IS_ERR(mmc->supply.vmmc)) { in sdhci_add_host()
3250 int curr = regulator_get_current_limit(mmc->supply.vmmc); in sdhci_add_host()
3268 mmc->max_current_330 = ((max_current_caps & in sdhci_add_host()
3276 mmc->max_current_300 = ((max_current_caps & in sdhci_add_host()
3284 mmc->max_current_180 = ((max_current_caps & in sdhci_add_host()
3295 if (mmc->ocr_avail) in sdhci_add_host()
3296 ocr_avail = mmc->ocr_avail; in sdhci_add_host()
3298 mmc->ocr_avail = ocr_avail; in sdhci_add_host()
3299 mmc->ocr_avail_sdio = ocr_avail; in sdhci_add_host()
3301 mmc->ocr_avail_sdio &= host->ocr_avail_sdio; in sdhci_add_host()
3302 mmc->ocr_avail_sd = ocr_avail; in sdhci_add_host()
3304 mmc->ocr_avail_sd &= host->ocr_avail_sd; in sdhci_add_host()
3306 mmc->ocr_avail_sd &= ~MMC_VDD_165_195; in sdhci_add_host()
3307 mmc->ocr_avail_mmc = ocr_avail; in sdhci_add_host()
3309 mmc->ocr_avail_mmc &= host->ocr_avail_mmc; in sdhci_add_host()
3311 if (mmc->ocr_avail == 0) { in sdhci_add_host()
3313 "support voltages.\n", mmc_hostname(mmc)); in sdhci_add_host()
3324 mmc->max_segs = SDHCI_MAX_SEGS; in sdhci_add_host()
3326 mmc->max_segs = 1; in sdhci_add_host()
3328 mmc->max_segs = SDHCI_MAX_SEGS; in sdhci_add_host()
3335 mmc->max_req_size = 524288; in sdhci_add_host()
3344 mmc->max_seg_size = 65535; in sdhci_add_host()
3346 mmc->max_seg_size = 65536; in sdhci_add_host()
3348 mmc->max_seg_size = mmc->max_req_size; in sdhci_add_host()
3356 mmc->max_blk_size = 2; in sdhci_add_host()
3358 mmc->max_blk_size = (caps[0] & SDHCI_MAX_BLOCK_MASK) >> in sdhci_add_host()
3360 if (mmc->max_blk_size >= 3) { in sdhci_add_host()
3362 mmc_hostname(mmc)); in sdhci_add_host()
3363 mmc->max_blk_size = 0; in sdhci_add_host()
3367 mmc->max_blk_size = 512 << mmc->max_blk_size; in sdhci_add_host()
3372 mmc->max_blk_count = (host->quirks & SDHCI_QUIRK_NO_MULTIBLOCK) ? 1 : 65535; in sdhci_add_host()
3387 IRQF_SHARED, mmc_hostname(mmc), host); in sdhci_add_host()
3390 mmc_hostname(mmc), host->irq, ret); in sdhci_add_host()
3400 "%s::", mmc_hostname(mmc)); in sdhci_add_host()
3403 host->led.default_trigger = mmc_hostname(mmc); in sdhci_add_host()
3406 ret = led_classdev_register(mmc_dev(mmc), &host->led); in sdhci_add_host()
3409 mmc_hostname(mmc), ret); in sdhci_add_host()
3416 mmc_add_host(mmc); in sdhci_add_host()
3419 mmc_hostname(mmc), host->hw_name, dev_name(mmc_dev(mmc)), in sdhci_add_host()
3445 struct mmc_host *mmc = host->mmc; in sdhci_remove_host() local
3455 " transfer!\n", mmc_hostname(mmc)); in sdhci_remove_host()
3466 mmc_remove_host(mmc); in sdhci_remove_host()
3483 if (!IS_ERR(mmc->supply.vqmmc)) in sdhci_remove_host()
3484 regulator_disable(mmc->supply.vqmmc); in sdhci_remove_host()
3487 dma_free_coherent(mmc_dev(mmc), host->adma_table_sz, in sdhci_remove_host()
3499 mmc_free_host(host->mmc); in sdhci_free_host()