Lines Matching full:mmc
3 * linux/drivers/mmc/host/sdhci.c - Secure Digital Host Controller Interface driver
29 #include <linux/mmc/mmc.h>
30 #include <linux/mmc/host.h>
31 #include <linux/mmc/card.h>
32 #include <linux/mmc/sdio.h>
33 #include <linux/mmc/slot-gpio.h>
40 pr_debug("%s: " DRIVER_NAME ": " f, mmc_hostname(host->mmc), ## x)
43 pr_err("%s: " DRIVER_NAME ": " f, mmc_hostname(host->mmc), ## x)
159 !mmc_card_is_removable(host->mmc) || mmc_can_gpio_cd(host->mmc)) in sdhci_set_card_detection()
191 pm_runtime_get_noresume(mmc_dev(host->mmc)); in sdhci_runtime_pm_bus_on()
199 pm_runtime_put_noidle(mmc_dev(host->mmc)); in sdhci_runtime_pm_bus_off()
226 mmc_hostname(host->mmc), (int)mask); in sdhci_reset()
239 struct mmc_host *mmc = host->mmc; in sdhci_do_reset() local
241 if (!mmc->ops->get_cd(mmc)) in sdhci_do_reset()
356 struct mmc_host *mmc = host->mmc; in sdhci_init() local
377 mmc->ops->set_ios(mmc, &mmc->ios); in sdhci_init()
395 mmc_detect_change(host->mmc, msecs_to_jiffies(200)); in sdhci_reinit()
444 struct mmc_host *mmc = host->mmc; in sdhci_led_register() local
450 "%s::", mmc_hostname(mmc)); in sdhci_led_register()
454 host->led.default_trigger = mmc_hostname(mmc); in sdhci_led_register()
457 return led_classdev_register(mmc_dev(mmc), &host->led); in sdhci_led_register()
672 mmc_hostname(host->mmc), length, in sdhci_pre_dma_transfer()
687 dma_sync_single_for_device(mmc_dev(host->mmc), in sdhci_pre_dma_transfer()
695 sg_count = dma_map_sg(mmc_dev(host->mmc), in sdhci_pre_dma_transfer()
868 dma_sync_sg_for_cpu(mmc_dev(host->mmc), data->sg, in sdhci_adma_table_post()
945 struct mmc_host *mmc = host->mmc; in sdhci_calc_sw_timeout() local
946 struct mmc_ios *ios = &mmc->ios; in sdhci_calc_sw_timeout()
958 freq = mmc->actual_clock ? : host->clock; in sdhci_calc_sw_timeout()
1094 BUG_ON(data->blksz > host->mmc->max_blk_size); in sdhci_initialize_data()
1222 struct mmc_host *mmc = host->mmc; in sdhci_external_dma_init() local
1224 host->tx_chan = dma_request_chan(mmc_dev(mmc), "tx"); in sdhci_external_dma_init()
1233 host->rx_chan = dma_request_chan(mmc_dev(mmc), "rx"); in sdhci_external_dma_init()
1346 mmc_hostname(host->mmc)); in sdhci_external_dma_prepare_data()
1755 mmc_hostname(host->mmc)); in sdhci_send_command_retry()
1766 present = host->mmc->ops->get_cd(host->mmc); in sdhci_send_command_retry()
1819 mmc_command_done(host->mmc, cmd->mrq); in sdhci_finish_command()
1889 mmc_hostname(host->mmc)); in sdhci_get_preset_value()
2005 mmc_hostname(host->mmc)); in sdhci_enable_clk()
2028 mmc_hostname(host->mmc)); in sdhci_enable_clk()
2046 host->mmc->actual_clock = 0; in sdhci_set_clock()
2053 clk = sdhci_calc_clk(host, clock, &host->mmc->actual_clock); in sdhci_set_clock()
2061 struct mmc_host *mmc = host->mmc; in sdhci_set_power_reg() local
2063 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd); in sdhci_set_power_reg()
2104 mmc_hostname(host->mmc), vdd); in sdhci_set_power_noreg()
2154 if (IS_ERR(host->mmc->supply.vmmc)) in sdhci_set_power()
2171 if (!IS_ERR(host->mmc->supply.vmmc)) { in sdhci_set_power_and_bus_voltage()
2172 struct mmc_host *mmc = host->mmc; in sdhci_set_power_and_bus_voltage() local
2174 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd); in sdhci_set_power_and_bus_voltage()
2182 * MMC callbacks *
2186 void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_request() argument
2188 struct sdhci_host *host = mmc_priv(mmc); in sdhci_request()
2194 present = mmc->ops->get_cd(mmc); in sdhci_request()
2218 int sdhci_request_atomic(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_request_atomic() argument
2220 struct sdhci_host *host = mmc_priv(mmc); in sdhci_request_atomic()
2261 if (host->mmc->caps & MMC_CAP_8_BIT_DATA) in sdhci_set_bus_width()
2328 void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in sdhci_set_ios() argument
2330 struct sdhci_host *host = mmc_priv(mmc); in sdhci_set_ios()
2341 if (!IS_ERR(mmc->supply.vmmc) && in sdhci_set_ios()
2343 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0); in sdhci_set_ios()
2369 host->timeout_clk = mmc->actual_clock ? in sdhci_set_ios()
2370 mmc->actual_clock / 1000 : in sdhci_set_ios()
2372 mmc->max_busy_timeout = in sdhci_set_ios()
2376 mmc->max_busy_timeout /= host->timeout_clk; in sdhci_set_ios()
2439 mmc_hostname(mmc)); in sdhci_set_ios()
2489 static int sdhci_get_cd(struct mmc_host *mmc) in sdhci_get_cd() argument
2491 struct sdhci_host *host = mmc_priv(mmc); in sdhci_get_cd()
2492 int gpio_cd = mmc_gpio_get_cd(mmc); in sdhci_get_cd()
2498 if (!mmc_card_is_removable(mmc)) in sdhci_get_cd()
2516 int sdhci_get_cd_nogpio(struct mmc_host *mmc) in sdhci_get_cd_nogpio() argument
2518 struct sdhci_host *host = mmc_priv(mmc); in sdhci_get_cd_nogpio()
2546 else if (mmc_can_gpio_ro(host->mmc)) in sdhci_check_ro()
2547 is_readonly = mmc_gpio_get_ro(host->mmc); in sdhci_check_ro()
2561 static int sdhci_get_ro(struct mmc_host *mmc) in sdhci_get_ro() argument
2563 struct sdhci_host *host = mmc_priv(mmc); in sdhci_get_ro()
2580 static void sdhci_hw_reset(struct mmc_host *mmc) in sdhci_hw_reset() argument
2582 struct sdhci_host *host = mmc_priv(mmc); in sdhci_hw_reset()
2601 void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable) in sdhci_enable_sdio_irq() argument
2603 struct sdhci_host *host = mmc_priv(mmc); in sdhci_enable_sdio_irq()
2607 pm_runtime_get_noresume(mmc_dev(mmc)); in sdhci_enable_sdio_irq()
2614 pm_runtime_put_noidle(mmc_dev(mmc)); in sdhci_enable_sdio_irq()
2618 static void sdhci_ack_sdio_irq(struct mmc_host *mmc) in sdhci_ack_sdio_irq() argument
2620 struct sdhci_host *host = mmc_priv(mmc); in sdhci_ack_sdio_irq()
2628 int sdhci_start_signal_voltage_switch(struct mmc_host *mmc, in sdhci_start_signal_voltage_switch() argument
2631 struct sdhci_host *host = mmc_priv(mmc); in sdhci_start_signal_voltage_switch()
2652 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_start_signal_voltage_switch()
2653 ret = mmc_regulator_set_vqmmc(mmc, ios); in sdhci_start_signal_voltage_switch()
2656 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2669 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2675 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_start_signal_voltage_switch()
2676 ret = mmc_regulator_set_vqmmc(mmc, ios); in sdhci_start_signal_voltage_switch()
2679 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2701 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2707 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_start_signal_voltage_switch()
2708 ret = mmc_regulator_set_vqmmc(mmc, ios); in sdhci_start_signal_voltage_switch()
2711 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2723 static int sdhci_card_busy(struct mmc_host *mmc) in sdhci_card_busy() argument
2725 struct sdhci_host *host = mmc_priv(mmc); in sdhci_card_busy()
2734 static int sdhci_prepare_hs400_tuning(struct mmc_host *mmc, struct mmc_ios *ios) in sdhci_prepare_hs400_tuning() argument
2736 struct sdhci_host *host = mmc_priv(mmc); in sdhci_prepare_hs400_tuning()
2797 mmc_send_abort_tuning(host->mmc, opcode); in sdhci_abort_tuning()
2810 struct mmc_host *mmc = host->mmc; in sdhci_send_tuning() local
2829 mmc->ios.bus_width == MMC_BUS_WIDTH_8) in sdhci_send_tuning()
2878 mmc_hostname(host->mmc)); in __sdhci_execute_tuning()
2897 mmc_hostname(host->mmc)); in __sdhci_execute_tuning()
2902 int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) in sdhci_execute_tuning() argument
2904 struct sdhci_host *host = mmc_priv(mmc); in sdhci_execute_tuning()
2954 mmc->retune_period = tuning_count; in sdhci_execute_tuning()
3000 static void sdhci_post_req(struct mmc_host *mmc, struct mmc_request *mrq, in sdhci_post_req() argument
3006 dma_unmap_sg(mmc_dev(mmc), data->sg, data->sg_len, in sdhci_post_req()
3012 static void sdhci_pre_req(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_pre_req() argument
3014 struct sdhci_host *host = mmc_priv(mmc); in sdhci_pre_req()
3040 static void sdhci_card_event(struct mmc_host *mmc) in sdhci_card_event() argument
3042 struct sdhci_host *host = mmc_priv(mmc); in sdhci_card_event()
3050 present = mmc->ops->get_cd(mmc); in sdhci_card_event()
3057 mmc_hostname(mmc)); in sdhci_card_event()
3059 mmc_hostname(mmc)); in sdhci_card_event()
3167 mmc_hostname(host->mmc), in sdhci_request_done()
3174 mmc_dev(host->mmc), in sdhci_request_done()
3185 mmc_dev(host->mmc), in sdhci_request_done()
3192 dma_unmap_sg(mmc_dev(host->mmc), data->sg, in sdhci_request_done()
3207 mmc_request_done(host->mmc, mrq); in sdhci_request_done()
3232 mmc_hostname(host->mmc)); in sdhci_timeout_timer()
3255 mmc_hostname(host->mmc)); in sdhci_timeout_data_timer()
3307 mmc_hostname(host->mmc), (unsigned)intmask); in sdhci_cmd_irq()
3450 mmc_hostname(host->mmc), (unsigned)intmask); in sdhci_data_irq()
3471 pr_err("%s: ADMA error: 0x%08x\n", mmc_hostname(host->mmc), in sdhci_data_irq()
3611 mmc_hostname(host->mmc)); in sdhci_irq()
3614 mmc_retune_needed(host->mmc); in sdhci_irq()
3619 sdio_signal_irq(host->mmc); in sdhci_irq()
3666 mmc_request_done(host->mmc, mrqs_done[i]); in sdhci_irq()
3671 mmc_hostname(host->mmc), unexpected); in sdhci_irq()
3701 struct mmc_host *mmc = host->mmc; in sdhci_thread_irq() local
3703 mmc->ops->card_event(mmc); in sdhci_thread_irq()
3704 mmc_detect_change(mmc, msecs_to_jiffies(200)); in sdhci_thread_irq()
3720 return mmc_card_is_removable(host->mmc) && in sdhci_cd_irq_can_wakeup()
3722 !mmc_can_gpio_cd(host->mmc); in sdhci_cd_irq_can_wakeup()
3746 if (mmc_card_wake_sdio_irq(host->mmc)) { in sdhci_enable_irq_wakeups()
3785 mmc_retune_timer_stop(host->mmc); in sdhci_suspend_host()
3787 if (!device_may_wakeup(mmc_dev(host->mmc)) || in sdhci_suspend_host()
3802 struct mmc_host *mmc = host->mmc; in sdhci_resume_host() local
3810 if ((mmc->pm_flags & MMC_PM_KEEP_POWER) && in sdhci_resume_host()
3817 mmc->ops->set_ios(mmc, &mmc->ios); in sdhci_resume_host()
3819 sdhci_init(host, (mmc->pm_flags & MMC_PM_KEEP_POWER)); in sdhci_resume_host()
3827 mmc_hostname(mmc), host); in sdhci_resume_host()
3843 mmc_retune_timer_stop(host->mmc); in sdhci_runtime_suspend_host()
3863 struct mmc_host *mmc = host->mmc; in sdhci_runtime_resume_host() local
3874 if (mmc->ios.power_mode != MMC_POWER_UNDEFINED && in sdhci_runtime_resume_host()
3875 mmc->ios.power_mode != MMC_POWER_OFF) { in sdhci_runtime_resume_host()
3880 mmc->ops->start_signal_voltage_switch(mmc, &mmc->ios); in sdhci_runtime_resume_host()
3881 mmc->ops->set_ios(mmc, &mmc->ios); in sdhci_runtime_resume_host()
3890 if ((mmc->caps2 & MMC_CAP2_HS400_ES) && in sdhci_runtime_resume_host()
3891 mmc->ops->hs400_enhanced_strobe) in sdhci_runtime_resume_host()
3892 mmc->ops->hs400_enhanced_strobe(mmc, &mmc->ios); in sdhci_runtime_resume_host()
3900 if (sdio_irq_claimed(mmc)) in sdhci_runtime_resume_host()
3920 void sdhci_cqe_enable(struct mmc_host *mmc) in sdhci_cqe_enable() argument
3922 struct sdhci_host *host = mmc_priv(mmc); in sdhci_cqe_enable()
3957 mmc_hostname(mmc), host->ier, in sdhci_cqe_enable()
3964 void sdhci_cqe_disable(struct mmc_host *mmc, bool recovery) in sdhci_cqe_disable() argument
3966 struct sdhci_host *host = mmc_priv(mmc); in sdhci_cqe_disable()
3979 mmc_hostname(mmc), host->ier, in sdhci_cqe_disable()
4023 mmc_hostname(host->mmc)); in sdhci_cqe_irq()
4029 mmc_hostname(host->mmc), intmask); in sdhci_cqe_irq()
4047 struct mmc_host *mmc; in sdhci_alloc_host() local
4052 mmc = mmc_alloc_host(sizeof(struct sdhci_host) + priv_size, dev); in sdhci_alloc_host()
4053 if (!mmc) in sdhci_alloc_host()
4056 host = mmc_priv(mmc); in sdhci_alloc_host()
4057 host->mmc = mmc; in sdhci_alloc_host()
4059 mmc->ops = &host->mmc_host_ops; in sdhci_alloc_host()
4088 struct mmc_host *mmc = host->mmc; in sdhci_set_dma_mask() local
4089 struct device *dev = mmc_dev(mmc); in sdhci_set_dma_mask()
4100 mmc_hostname(mmc)); in sdhci_set_dma_mask()
4110 mmc_hostname(mmc)); in sdhci_set_dma_mask()
4139 device_property_read_u64(mmc_dev(host->mmc), in __sdhci_read_caps()
4141 device_property_read_u64(mmc_dev(host->mmc), in __sdhci_read_caps()
4173 struct mmc_host *mmc = host->mmc; in sdhci_allocate_bounce_buffer() local
4180 * has diminishing returns, this is probably because SD/MMC in sdhci_allocate_bounce_buffer()
4189 if (mmc->max_req_size < bounce_size) in sdhci_allocate_bounce_buffer()
4190 bounce_size = mmc->max_req_size; in sdhci_allocate_bounce_buffer()
4198 host->bounce_buffer = devm_kmalloc(mmc_dev(mmc), in sdhci_allocate_bounce_buffer()
4203 mmc_hostname(mmc), in sdhci_allocate_bounce_buffer()
4207 * mmc->max_segs == 1. in sdhci_allocate_bounce_buffer()
4212 host->bounce_addr = dma_map_single(mmc_dev(mmc), in sdhci_allocate_bounce_buffer()
4216 ret = dma_mapping_error(mmc_dev(mmc), host->bounce_addr); in sdhci_allocate_bounce_buffer()
4218 devm_kfree(mmc_dev(mmc), host->bounce_buffer); in sdhci_allocate_bounce_buffer()
4227 mmc->max_segs = max_blocks; in sdhci_allocate_bounce_buffer()
4228 mmc->max_seg_size = bounce_size; in sdhci_allocate_bounce_buffer()
4229 mmc->max_req_size = bounce_size; in sdhci_allocate_bounce_buffer()
4232 mmc_hostname(mmc), max_blocks, bounce_size); in sdhci_allocate_bounce_buffer()
4250 struct mmc_host *mmc; in sdhci_setup_host() local
4262 mmc = host->mmc; in sdhci_setup_host()
4270 if (!mmc->supply.vqmmc) { in sdhci_setup_host()
4271 ret = mmc_regulator_get_supply(mmc); in sdhci_setup_host()
4290 mmc_hostname(mmc), host->version); in sdhci_setup_host()
4345 mmc_hostname(mmc)); in sdhci_setup_host()
4373 buf = dma_alloc_coherent(mmc_dev(mmc), in sdhci_setup_host()
4378 mmc_hostname(mmc)); in sdhci_setup_host()
4383 mmc_hostname(mmc)); in sdhci_setup_host()
4385 dma_free_coherent(mmc_dev(mmc), host->align_buffer_sz + in sdhci_setup_host()
4403 mmc_dev(mmc)->dma_mask = &host->dma_mask; in sdhci_setup_host()
4416 mmc_hostname(mmc)); in sdhci_setup_host()
4444 mmc->f_min = host->ops->get_min_clock(host); in sdhci_setup_host()
4452 mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_300; in sdhci_setup_host()
4454 mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_200; in sdhci_setup_host()
4456 if (!mmc->f_max || mmc->f_max > max_clk) in sdhci_setup_host()
4457 mmc->f_max = max_clk; in sdhci_setup_host()
4468 mmc_hostname(mmc)); in sdhci_setup_host()
4481 mmc->max_busy_timeout = host->ops->get_max_timeout_count ? in sdhci_setup_host()
4483 mmc->max_busy_timeout /= host->timeout_clk; in sdhci_setup_host()
4488 mmc->max_busy_timeout = 0; in sdhci_setup_host()
4490 mmc->caps |= MMC_CAP_SDIO_IRQ | MMC_CAP_CMD23; in sdhci_setup_host()
4491 mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD; in sdhci_setup_host()
4513 * 8-bit width must set "mmc->caps |= MMC_CAP_8_BIT_DATA;" in in sdhci_setup_host()
4518 mmc->caps |= MMC_CAP_4_BIT_DATA; in sdhci_setup_host()
4521 mmc->caps &= ~MMC_CAP_CMD23; in sdhci_setup_host()
4524 mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED; in sdhci_setup_host()
4527 mmc_card_is_removable(mmc) && in sdhci_setup_host()
4528 mmc_gpio_get_cd(mmc) < 0) in sdhci_setup_host()
4529 mmc->caps |= MMC_CAP_NEEDS_POLL; in sdhci_setup_host()
4531 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_setup_host()
4533 ret = regulator_enable(mmc->supply.vqmmc); in sdhci_setup_host()
4538 if (!regulator_is_supported_voltage(mmc->supply.vqmmc, 1700000, in sdhci_setup_host()
4545 if (!regulator_is_supported_voltage(mmc->supply.vqmmc, 2700000, in sdhci_setup_host()
4551 mmc_hostname(mmc), ret); in sdhci_setup_host()
4552 mmc->supply.vqmmc = ERR_PTR(-EINVAL); in sdhci_setup_host()
4562 * (indicated using mmc-hs200-1_8v/mmc-hs400-1_8v dt property), in sdhci_setup_host()
4568 mmc->caps2 &= ~(MMC_CAP2_HSX00_1_8V | MMC_CAP2_HS400_ES); in sdhci_setup_host()
4569 mmc->caps &= ~(MMC_CAP_1_8V_DDR | MMC_CAP_UHS); in sdhci_setup_host()
4575 mmc->caps |= MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25; in sdhci_setup_host()
4579 mmc->caps |= MMC_CAP_UHS_SDR104 | MMC_CAP_UHS_SDR50; in sdhci_setup_host()
4584 mmc->caps2 |= MMC_CAP2_HS200; in sdhci_setup_host()
4586 mmc->caps |= MMC_CAP_UHS_SDR50; in sdhci_setup_host()
4591 mmc->caps2 |= MMC_CAP2_HS400; in sdhci_setup_host()
4593 if ((mmc->caps2 & MMC_CAP2_HSX00_1_2V) && in sdhci_setup_host()
4594 (IS_ERR(mmc->supply.vqmmc) || in sdhci_setup_host()
4595 !regulator_is_supported_voltage(mmc->supply.vqmmc, 1100000, in sdhci_setup_host()
4597 mmc->caps2 &= ~MMC_CAP2_HSX00_1_2V; in sdhci_setup_host()
4601 mmc->caps |= MMC_CAP_UHS_DDR50; in sdhci_setup_host()
4609 mmc->caps |= MMC_CAP_DRIVER_TYPE_A; in sdhci_setup_host()
4611 mmc->caps |= MMC_CAP_DRIVER_TYPE_C; in sdhci_setup_host()
4613 mmc->caps |= MMC_CAP_DRIVER_TYPE_D; in sdhci_setup_host()
4639 if (!max_current_caps && !IS_ERR(mmc->supply.vmmc)) { in sdhci_setup_host()
4640 int curr = regulator_get_current_limit(mmc->supply.vmmc); in sdhci_setup_host()
4658 mmc->max_current_330 = FIELD_GET(SDHCI_MAX_CURRENT_330_MASK, in sdhci_setup_host()
4665 mmc->max_current_300 = FIELD_GET(SDHCI_MAX_CURRENT_300_MASK, in sdhci_setup_host()
4672 mmc->max_current_180 = FIELD_GET(SDHCI_MAX_CURRENT_180_MASK, in sdhci_setup_host()
4682 if (mmc->ocr_avail) in sdhci_setup_host()
4683 ocr_avail = mmc->ocr_avail; in sdhci_setup_host()
4685 mmc->ocr_avail = ocr_avail; in sdhci_setup_host()
4686 mmc->ocr_avail_sdio = ocr_avail; in sdhci_setup_host()
4688 mmc->ocr_avail_sdio &= host->ocr_avail_sdio; in sdhci_setup_host()
4689 mmc->ocr_avail_sd = ocr_avail; in sdhci_setup_host()
4691 mmc->ocr_avail_sd &= host->ocr_avail_sd; in sdhci_setup_host()
4693 mmc->ocr_avail_sd &= ~MMC_VDD_165_195; in sdhci_setup_host()
4694 mmc->ocr_avail_mmc = ocr_avail; in sdhci_setup_host()
4696 mmc->ocr_avail_mmc &= host->ocr_avail_mmc; in sdhci_setup_host()
4698 if (mmc->ocr_avail == 0) { in sdhci_setup_host()
4700 mmc_hostname(mmc)); in sdhci_setup_host()
4705 if ((mmc->caps & (MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25 | in sdhci_setup_host()
4708 (mmc->caps2 & (MMC_CAP2_HS200_1_8V_SDR | MMC_CAP2_HS400_1_8V))) in sdhci_setup_host()
4711 if (mmc->caps2 & MMC_CAP2_HSX00_1_2V) in sdhci_setup_host()
4721 mmc->max_req_size = 524288; in sdhci_setup_host()
4728 mmc->max_segs = SDHCI_MAX_SEGS; in sdhci_setup_host()
4730 mmc->max_segs = 1; in sdhci_setup_host()
4731 mmc->max_req_size = min_t(size_t, mmc->max_req_size, in sdhci_setup_host()
4732 dma_max_mapping_size(mmc_dev(mmc))); in sdhci_setup_host()
4734 mmc->max_segs = SDHCI_MAX_SEGS; in sdhci_setup_host()
4745 mmc->max_seg_size = 65535; in sdhci_setup_host()
4747 mmc->max_seg_size = 65536; in sdhci_setup_host()
4750 mmc->max_seg_size = mmc->max_req_size; in sdhci_setup_host()
4758 mmc->max_blk_size = 2; in sdhci_setup_host()
4760 mmc->max_blk_size = (host->caps & SDHCI_MAX_BLOCK_MASK) >> in sdhci_setup_host()
4762 if (mmc->max_blk_size >= 3) { in sdhci_setup_host()
4764 mmc_hostname(mmc)); in sdhci_setup_host()
4765 mmc->max_blk_size = 0; in sdhci_setup_host()
4769 mmc->max_blk_size = 512 << mmc->max_blk_size; in sdhci_setup_host()
4774 mmc->max_blk_count = (host->quirks & SDHCI_QUIRK_NO_MULTIBLOCK) ? 1 : 65535; in sdhci_setup_host()
4776 if (mmc->max_segs == 1) in sdhci_setup_host()
4777 /* This may alter mmc->*_blk_* parameters */ in sdhci_setup_host()
4784 regulator_disable(mmc->supply.vqmmc); in sdhci_setup_host()
4787 dma_free_coherent(mmc_dev(mmc), host->align_buffer_sz + in sdhci_setup_host()
4799 struct mmc_host *mmc = host->mmc; in sdhci_cleanup_host() local
4802 regulator_disable(mmc->supply.vqmmc); in sdhci_cleanup_host()
4805 dma_free_coherent(mmc_dev(mmc), host->align_buffer_sz + in sdhci_cleanup_host()
4820 struct mmc_host *mmc = host->mmc; in __sdhci_add_host() local
4823 if ((mmc->caps2 & MMC_CAP2_CQE) && in __sdhci_add_host()
4825 mmc->caps2 &= ~MMC_CAP2_CQE; in __sdhci_add_host()
4826 mmc->cqe_ops = NULL; in __sdhci_add_host()
4843 IRQF_SHARED, mmc_hostname(mmc), host); in __sdhci_add_host()
4846 mmc_hostname(mmc), host->irq, ret); in __sdhci_add_host()
4853 mmc_hostname(mmc), ret); in __sdhci_add_host()
4857 ret = mmc_add_host(mmc); in __sdhci_add_host()
4862 mmc_hostname(mmc), host->hw_name, dev_name(mmc_dev(mmc)), in __sdhci_add_host()
4909 struct mmc_host *mmc = host->mmc; in sdhci_remove_host() local
4919 " transfer!\n", mmc_hostname(mmc)); in sdhci_remove_host()
4928 mmc_remove_host(mmc); in sdhci_remove_host()
4945 regulator_disable(mmc->supply.vqmmc); in sdhci_remove_host()
4948 dma_free_coherent(mmc_dev(mmc), host->align_buffer_sz + in sdhci_remove_host()
4963 mmc_free_host(host->mmc); in sdhci_free_host()