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()
238 struct mmc_host *mmc = host->mmc; in sdhci_do_reset() local
240 if (!mmc->ops->get_cd(mmc)) in sdhci_do_reset()
321 struct mmc_host *mmc = host->mmc; in sdhci_init() local
341 mmc->ops->set_ios(mmc, &mmc->ios); in sdhci_init()
359 mmc_detect_change(host->mmc, msecs_to_jiffies(200)); in sdhci_reinit()
408 struct mmc_host *mmc = host->mmc; in sdhci_led_register() local
414 "%s::", mmc_hostname(mmc)); in sdhci_led_register()
418 host->led.default_trigger = mmc_hostname(mmc); in sdhci_led_register()
421 return led_classdev_register(mmc_dev(mmc), &host->led); in sdhci_led_register()
636 mmc_hostname(host->mmc), length, in sdhci_pre_dma_transfer()
651 dma_sync_single_for_device(mmc_dev(host->mmc), in sdhci_pre_dma_transfer()
659 sg_count = dma_map_sg(mmc_dev(host->mmc), in sdhci_pre_dma_transfer()
820 dma_sync_sg_for_cpu(mmc_dev(host->mmc), data->sg, in sdhci_adma_table_post()
897 struct mmc_host *mmc = host->mmc; in sdhci_calc_sw_timeout() local
898 struct mmc_ios *ios = &mmc->ios; in sdhci_calc_sw_timeout()
910 freq = mmc->actual_clock ? : host->clock; in sdhci_calc_sw_timeout()
1049 BUG_ON(data->blksz > host->mmc->max_blk_size); in sdhci_initialize_data()
1177 struct mmc_host *mmc = host->mmc; in sdhci_external_dma_init() local
1179 host->tx_chan = dma_request_chan(mmc_dev(mmc), "tx"); in sdhci_external_dma_init()
1188 host->rx_chan = dma_request_chan(mmc_dev(mmc), "rx"); in sdhci_external_dma_init()
1301 mmc_hostname(host->mmc)); in sdhci_external_dma_prepare_data()
1709 mmc_hostname(host->mmc)); in sdhci_send_command_retry()
1719 present = host->mmc->ops->get_cd(host->mmc); in sdhci_send_command_retry()
1772 mmc_command_done(host->mmc, cmd->mrq); in sdhci_finish_command()
1842 mmc_hostname(host->mmc)); in sdhci_get_preset_value()
1958 mmc_hostname(host->mmc)); in sdhci_enable_clk()
1980 mmc_hostname(host->mmc)); in sdhci_enable_clk()
1997 host->mmc->actual_clock = 0; in sdhci_set_clock()
2004 clk = sdhci_calc_clk(host, clock, &host->mmc->actual_clock); in sdhci_set_clock()
2012 struct mmc_host *mmc = host->mmc; in sdhci_set_power_reg() local
2014 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd); in sdhci_set_power_reg()
2055 mmc_hostname(host->mmc), vdd); in sdhci_set_power_noreg()
2105 if (IS_ERR(host->mmc->supply.vmmc)) in sdhci_set_power()
2122 if (!IS_ERR(host->mmc->supply.vmmc)) { in sdhci_set_power_and_bus_voltage()
2123 struct mmc_host *mmc = host->mmc; in sdhci_set_power_and_bus_voltage() local
2125 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd); in sdhci_set_power_and_bus_voltage()
2133 * MMC callbacks *
2137 void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_request() argument
2139 struct sdhci_host *host = mmc_priv(mmc); in sdhci_request()
2145 present = mmc->ops->get_cd(mmc); in sdhci_request()
2169 int sdhci_request_atomic(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_request_atomic() argument
2171 struct sdhci_host *host = mmc_priv(mmc); in sdhci_request_atomic()
2212 if (host->mmc->caps & MMC_CAP_8_BIT_DATA) in sdhci_set_bus_width()
2248 void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in sdhci_set_ios() argument
2250 struct sdhci_host *host = mmc_priv(mmc); in sdhci_set_ios()
2257 if (!IS_ERR(mmc->supply.vmmc) && in sdhci_set_ios()
2259 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0); in sdhci_set_ios()
2283 host->timeout_clk = mmc->actual_clock ? in sdhci_set_ios()
2284 mmc->actual_clock / 1000 : in sdhci_set_ios()
2286 mmc->max_busy_timeout = in sdhci_set_ios()
2290 mmc->max_busy_timeout /= host->timeout_clk; in sdhci_set_ios()
2342 mmc_hostname(mmc)); in sdhci_set_ios()
2404 static int sdhci_get_cd(struct mmc_host *mmc) in sdhci_get_cd() argument
2406 struct sdhci_host *host = mmc_priv(mmc); in sdhci_get_cd()
2407 int gpio_cd = mmc_gpio_get_cd(mmc); in sdhci_get_cd()
2413 if (!mmc_card_is_removable(mmc)) in sdhci_get_cd()
2442 else if (mmc_can_gpio_ro(host->mmc)) in sdhci_check_ro()
2443 is_readonly = mmc_gpio_get_ro(host->mmc); in sdhci_check_ro()
2457 static int sdhci_get_ro(struct mmc_host *mmc) in sdhci_get_ro() argument
2459 struct sdhci_host *host = mmc_priv(mmc); in sdhci_get_ro()
2476 static void sdhci_hw_reset(struct mmc_host *mmc) in sdhci_hw_reset() argument
2478 struct sdhci_host *host = mmc_priv(mmc); in sdhci_hw_reset()
2497 void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable) in sdhci_enable_sdio_irq() argument
2499 struct sdhci_host *host = mmc_priv(mmc); in sdhci_enable_sdio_irq()
2503 pm_runtime_get_noresume(mmc_dev(mmc)); in sdhci_enable_sdio_irq()
2510 pm_runtime_put_noidle(mmc_dev(mmc)); in sdhci_enable_sdio_irq()
2514 static void sdhci_ack_sdio_irq(struct mmc_host *mmc) in sdhci_ack_sdio_irq() argument
2516 struct sdhci_host *host = mmc_priv(mmc); in sdhci_ack_sdio_irq()
2524 int sdhci_start_signal_voltage_switch(struct mmc_host *mmc, in sdhci_start_signal_voltage_switch() argument
2527 struct sdhci_host *host = mmc_priv(mmc); in sdhci_start_signal_voltage_switch()
2548 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_start_signal_voltage_switch()
2549 ret = mmc_regulator_set_vqmmc(mmc, ios); in sdhci_start_signal_voltage_switch()
2552 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2565 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2571 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_start_signal_voltage_switch()
2572 ret = mmc_regulator_set_vqmmc(mmc, ios); in sdhci_start_signal_voltage_switch()
2575 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2597 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2603 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_start_signal_voltage_switch()
2604 ret = mmc_regulator_set_vqmmc(mmc, ios); in sdhci_start_signal_voltage_switch()
2607 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2619 static int sdhci_card_busy(struct mmc_host *mmc) in sdhci_card_busy() argument
2621 struct sdhci_host *host = mmc_priv(mmc); in sdhci_card_busy()
2630 static int sdhci_prepare_hs400_tuning(struct mmc_host *mmc, struct mmc_ios *ios) in sdhci_prepare_hs400_tuning() argument
2632 struct sdhci_host *host = mmc_priv(mmc); in sdhci_prepare_hs400_tuning()
2694 mmc_send_abort_tuning(host->mmc, opcode); in sdhci_abort_tuning()
2707 struct mmc_host *mmc = host->mmc; in sdhci_send_tuning() local
2726 mmc->ios.bus_width == MMC_BUS_WIDTH_8) in sdhci_send_tuning()
2775 mmc_hostname(host->mmc)); in __sdhci_execute_tuning()
2794 mmc_hostname(host->mmc)); in __sdhci_execute_tuning()
2799 int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) in sdhci_execute_tuning() argument
2801 struct sdhci_host *host = mmc_priv(mmc); in sdhci_execute_tuning()
2851 mmc->retune_period = tuning_count; in sdhci_execute_tuning()
2897 static void sdhci_post_req(struct mmc_host *mmc, struct mmc_request *mrq, in sdhci_post_req() argument
2903 dma_unmap_sg(mmc_dev(mmc), data->sg, data->sg_len, in sdhci_post_req()
2909 static void sdhci_pre_req(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_pre_req() argument
2911 struct sdhci_host *host = mmc_priv(mmc); in sdhci_pre_req()
2937 static void sdhci_card_event(struct mmc_host *mmc) in sdhci_card_event() argument
2939 struct sdhci_host *host = mmc_priv(mmc); in sdhci_card_event()
2947 present = mmc->ops->get_cd(mmc); in sdhci_card_event()
2954 mmc_hostname(mmc)); in sdhci_card_event()
2956 mmc_hostname(mmc)); in sdhci_card_event()
3070 mmc_hostname(host->mmc), in sdhci_request_done()
3077 mmc_dev(host->mmc), in sdhci_request_done()
3088 mmc_dev(host->mmc), in sdhci_request_done()
3095 dma_unmap_sg(mmc_dev(host->mmc), data->sg, in sdhci_request_done()
3110 mmc_request_done(host->mmc, mrq); in sdhci_request_done()
3135 mmc_hostname(host->mmc)); in sdhci_timeout_timer()
3157 mmc_hostname(host->mmc)); in sdhci_timeout_data_timer()
3208 mmc_hostname(host->mmc), (unsigned)intmask); in sdhci_cmd_irq()
3344 mmc_hostname(host->mmc), (unsigned)intmask); in sdhci_data_irq()
3359 pr_err("%s: ADMA error: 0x%08x\n", mmc_hostname(host->mmc), in sdhci_data_irq()
3498 mmc_hostname(host->mmc)); in sdhci_irq()
3501 mmc_retune_needed(host->mmc); in sdhci_irq()
3506 sdio_signal_irq(host->mmc); in sdhci_irq()
3553 mmc_request_done(host->mmc, mrqs_done[i]); in sdhci_irq()
3558 mmc_hostname(host->mmc), unexpected); in sdhci_irq()
3587 struct mmc_host *mmc = host->mmc; in sdhci_thread_irq() local
3589 mmc->ops->card_event(mmc); in sdhci_thread_irq()
3590 mmc_detect_change(mmc, msecs_to_jiffies(200)); in sdhci_thread_irq()
3606 return mmc_card_is_removable(host->mmc) && in sdhci_cd_irq_can_wakeup()
3608 !mmc_can_gpio_cd(host->mmc); in sdhci_cd_irq_can_wakeup()
3632 if (mmc_card_wake_sdio_irq(host->mmc)) { in sdhci_enable_irq_wakeups()
3671 mmc_retune_timer_stop(host->mmc); in sdhci_suspend_host()
3673 if (!device_may_wakeup(mmc_dev(host->mmc)) || in sdhci_suspend_host()
3688 struct mmc_host *mmc = host->mmc; in sdhci_resume_host() local
3696 if ((mmc->pm_flags & MMC_PM_KEEP_POWER) && in sdhci_resume_host()
3702 mmc->ops->set_ios(mmc, &mmc->ios); in sdhci_resume_host()
3704 sdhci_init(host, (mmc->pm_flags & MMC_PM_KEEP_POWER)); in sdhci_resume_host()
3712 mmc_hostname(mmc), host); in sdhci_resume_host()
3728 mmc_retune_timer_stop(host->mmc); in sdhci_runtime_suspend_host()
3748 struct mmc_host *mmc = host->mmc; in sdhci_runtime_resume_host() local
3759 if (mmc->ios.power_mode != MMC_POWER_UNDEFINED && in sdhci_runtime_resume_host()
3760 mmc->ios.power_mode != MMC_POWER_OFF) { in sdhci_runtime_resume_host()
3764 mmc->ops->start_signal_voltage_switch(mmc, &mmc->ios); in sdhci_runtime_resume_host()
3765 mmc->ops->set_ios(mmc, &mmc->ios); in sdhci_runtime_resume_host()
3774 if ((mmc->caps2 & MMC_CAP2_HS400_ES) && in sdhci_runtime_resume_host()
3775 mmc->ops->hs400_enhanced_strobe) in sdhci_runtime_resume_host()
3776 mmc->ops->hs400_enhanced_strobe(mmc, &mmc->ios); in sdhci_runtime_resume_host()
3784 if (sdio_irq_claimed(mmc)) in sdhci_runtime_resume_host()
3804 void sdhci_cqe_enable(struct mmc_host *mmc) in sdhci_cqe_enable() argument
3806 struct sdhci_host *host = mmc_priv(mmc); in sdhci_cqe_enable()
3841 mmc_hostname(mmc), host->ier, in sdhci_cqe_enable()
3848 void sdhci_cqe_disable(struct mmc_host *mmc, bool recovery) in sdhci_cqe_disable() argument
3850 struct sdhci_host *host = mmc_priv(mmc); in sdhci_cqe_disable()
3865 mmc_hostname(mmc), host->ier, in sdhci_cqe_disable()
3902 mmc_hostname(host->mmc)); in sdhci_cqe_irq()
3908 mmc_hostname(host->mmc), intmask); in sdhci_cqe_irq()
3925 struct mmc_host *mmc; in sdhci_alloc_host() local
3930 mmc = mmc_alloc_host(sizeof(struct sdhci_host) + priv_size, dev); in sdhci_alloc_host()
3931 if (!mmc) in sdhci_alloc_host()
3934 host = mmc_priv(mmc); in sdhci_alloc_host()
3935 host->mmc = mmc; in sdhci_alloc_host()
3937 mmc->ops = &host->mmc_host_ops; in sdhci_alloc_host()
3965 struct mmc_host *mmc = host->mmc; in sdhci_set_dma_mask() local
3966 struct device *dev = mmc_dev(mmc); in sdhci_set_dma_mask()
3977 mmc_hostname(mmc)); in sdhci_set_dma_mask()
3987 mmc_hostname(mmc)); in sdhci_set_dma_mask()
4016 device_property_read_u64(mmc_dev(host->mmc), in __sdhci_read_caps()
4018 device_property_read_u64(mmc_dev(host->mmc), in __sdhci_read_caps()
4050 struct mmc_host *mmc = host->mmc; in sdhci_allocate_bounce_buffer() local
4057 * has diminishing returns, this is probably because SD/MMC in sdhci_allocate_bounce_buffer()
4066 if (mmc->max_req_size < bounce_size) in sdhci_allocate_bounce_buffer()
4067 bounce_size = mmc->max_req_size; in sdhci_allocate_bounce_buffer()
4075 host->bounce_buffer = devm_kmalloc(mmc_dev(mmc), in sdhci_allocate_bounce_buffer()
4080 mmc_hostname(mmc), in sdhci_allocate_bounce_buffer()
4084 * mmc->max_segs == 1. in sdhci_allocate_bounce_buffer()
4089 host->bounce_addr = dma_map_single(mmc_dev(mmc), in sdhci_allocate_bounce_buffer()
4093 ret = dma_mapping_error(mmc_dev(mmc), host->bounce_addr); in sdhci_allocate_bounce_buffer()
4095 devm_kfree(mmc_dev(mmc), host->bounce_buffer); in sdhci_allocate_bounce_buffer()
4104 mmc->max_segs = max_blocks; in sdhci_allocate_bounce_buffer()
4105 mmc->max_seg_size = bounce_size; in sdhci_allocate_bounce_buffer()
4106 mmc->max_req_size = bounce_size; in sdhci_allocate_bounce_buffer()
4109 mmc_hostname(mmc), max_blocks, bounce_size); in sdhci_allocate_bounce_buffer()
4127 struct mmc_host *mmc; in sdhci_setup_host() local
4139 mmc = host->mmc; in sdhci_setup_host()
4147 if (!mmc->supply.vqmmc) { in sdhci_setup_host()
4148 ret = mmc_regulator_get_supply(mmc); in sdhci_setup_host()
4167 mmc_hostname(mmc), host->version); in sdhci_setup_host()
4222 mmc_hostname(mmc)); in sdhci_setup_host()
4250 buf = dma_alloc_coherent(mmc_dev(mmc), in sdhci_setup_host()
4255 mmc_hostname(mmc)); in sdhci_setup_host()
4260 mmc_hostname(mmc)); in sdhci_setup_host()
4262 dma_free_coherent(mmc_dev(mmc), host->align_buffer_sz + in sdhci_setup_host()
4280 mmc_dev(mmc)->dma_mask = &host->dma_mask; in sdhci_setup_host()
4293 mmc_hostname(mmc)); in sdhci_setup_host()
4321 mmc->f_min = host->ops->get_min_clock(host); in sdhci_setup_host()
4329 mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_300; in sdhci_setup_host()
4331 mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_200; in sdhci_setup_host()
4333 if (!mmc->f_max || mmc->f_max > max_clk) in sdhci_setup_host()
4334 mmc->f_max = max_clk; in sdhci_setup_host()
4345 mmc_hostname(mmc)); in sdhci_setup_host()
4358 mmc->max_busy_timeout = host->ops->get_max_timeout_count ? in sdhci_setup_host()
4360 mmc->max_busy_timeout /= host->timeout_clk; in sdhci_setup_host()
4365 mmc->max_busy_timeout = 0; in sdhci_setup_host()
4367 mmc->caps |= MMC_CAP_SDIO_IRQ | MMC_CAP_CMD23; in sdhci_setup_host()
4368 mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD; in sdhci_setup_host()
4390 * 8-bit width must set "mmc->caps |= MMC_CAP_8_BIT_DATA;" in in sdhci_setup_host()
4395 mmc->caps |= MMC_CAP_4_BIT_DATA; in sdhci_setup_host()
4398 mmc->caps &= ~MMC_CAP_CMD23; in sdhci_setup_host()
4401 mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED; in sdhci_setup_host()
4404 mmc_card_is_removable(mmc) && in sdhci_setup_host()
4405 mmc_gpio_get_cd(mmc) < 0) in sdhci_setup_host()
4406 mmc->caps |= MMC_CAP_NEEDS_POLL; in sdhci_setup_host()
4408 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_setup_host()
4410 ret = regulator_enable(mmc->supply.vqmmc); in sdhci_setup_host()
4415 if (!regulator_is_supported_voltage(mmc->supply.vqmmc, 1700000, in sdhci_setup_host()
4422 if (!regulator_is_supported_voltage(mmc->supply.vqmmc, 2700000, in sdhci_setup_host()
4428 mmc_hostname(mmc), ret); in sdhci_setup_host()
4429 mmc->supply.vqmmc = ERR_PTR(-EINVAL); in sdhci_setup_host()
4439 * (indicated using mmc-hs200-1_8v/mmc-hs400-1_8v dt property), in sdhci_setup_host()
4445 mmc->caps2 &= ~(MMC_CAP2_HSX00_1_8V | MMC_CAP2_HS400_ES); in sdhci_setup_host()
4446 mmc->caps &= ~(MMC_CAP_1_8V_DDR | MMC_CAP_UHS); in sdhci_setup_host()
4452 mmc->caps |= MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25; in sdhci_setup_host()
4456 mmc->caps |= MMC_CAP_UHS_SDR104 | MMC_CAP_UHS_SDR50; in sdhci_setup_host()
4461 mmc->caps2 |= MMC_CAP2_HS200; in sdhci_setup_host()
4463 mmc->caps |= MMC_CAP_UHS_SDR50; in sdhci_setup_host()
4468 mmc->caps2 |= MMC_CAP2_HS400; in sdhci_setup_host()
4470 if ((mmc->caps2 & MMC_CAP2_HSX00_1_2V) && in sdhci_setup_host()
4471 (IS_ERR(mmc->supply.vqmmc) || in sdhci_setup_host()
4472 !regulator_is_supported_voltage(mmc->supply.vqmmc, 1100000, in sdhci_setup_host()
4474 mmc->caps2 &= ~MMC_CAP2_HSX00_1_2V; in sdhci_setup_host()
4478 mmc->caps |= MMC_CAP_UHS_DDR50; in sdhci_setup_host()
4486 mmc->caps |= MMC_CAP_DRIVER_TYPE_A; in sdhci_setup_host()
4488 mmc->caps |= MMC_CAP_DRIVER_TYPE_C; in sdhci_setup_host()
4490 mmc->caps |= MMC_CAP_DRIVER_TYPE_D; in sdhci_setup_host()
4516 if (!max_current_caps && !IS_ERR(mmc->supply.vmmc)) { in sdhci_setup_host()
4517 int curr = regulator_get_current_limit(mmc->supply.vmmc); in sdhci_setup_host()
4535 mmc->max_current_330 = FIELD_GET(SDHCI_MAX_CURRENT_330_MASK, in sdhci_setup_host()
4542 mmc->max_current_300 = FIELD_GET(SDHCI_MAX_CURRENT_300_MASK, in sdhci_setup_host()
4549 mmc->max_current_180 = FIELD_GET(SDHCI_MAX_CURRENT_180_MASK, in sdhci_setup_host()
4559 if (mmc->ocr_avail) in sdhci_setup_host()
4560 ocr_avail = mmc->ocr_avail; in sdhci_setup_host()
4562 mmc->ocr_avail = ocr_avail; in sdhci_setup_host()
4563 mmc->ocr_avail_sdio = ocr_avail; in sdhci_setup_host()
4565 mmc->ocr_avail_sdio &= host->ocr_avail_sdio; in sdhci_setup_host()
4566 mmc->ocr_avail_sd = ocr_avail; in sdhci_setup_host()
4568 mmc->ocr_avail_sd &= host->ocr_avail_sd; in sdhci_setup_host()
4570 mmc->ocr_avail_sd &= ~MMC_VDD_165_195; in sdhci_setup_host()
4571 mmc->ocr_avail_mmc = ocr_avail; in sdhci_setup_host()
4573 mmc->ocr_avail_mmc &= host->ocr_avail_mmc; in sdhci_setup_host()
4575 if (mmc->ocr_avail == 0) { in sdhci_setup_host()
4577 mmc_hostname(mmc)); in sdhci_setup_host()
4582 if ((mmc->caps & (MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25 | in sdhci_setup_host()
4585 (mmc->caps2 & (MMC_CAP2_HS200_1_8V_SDR | MMC_CAP2_HS400_1_8V))) in sdhci_setup_host()
4588 if (mmc->caps2 & MMC_CAP2_HSX00_1_2V) in sdhci_setup_host()
4598 mmc->max_req_size = 524288; in sdhci_setup_host()
4605 mmc->max_segs = SDHCI_MAX_SEGS; in sdhci_setup_host()
4607 mmc->max_segs = 1; in sdhci_setup_host()
4608 mmc->max_req_size = min_t(size_t, mmc->max_req_size, in sdhci_setup_host()
4609 dma_max_mapping_size(mmc_dev(mmc))); in sdhci_setup_host()
4611 mmc->max_segs = SDHCI_MAX_SEGS; in sdhci_setup_host()
4621 mmc->max_seg_size = 65535; in sdhci_setup_host()
4623 mmc->max_seg_size = 65536; in sdhci_setup_host()
4625 mmc->max_seg_size = mmc->max_req_size; in sdhci_setup_host()
4633 mmc->max_blk_size = 2; in sdhci_setup_host()
4635 mmc->max_blk_size = (host->caps & SDHCI_MAX_BLOCK_MASK) >> in sdhci_setup_host()
4637 if (mmc->max_blk_size >= 3) { in sdhci_setup_host()
4639 mmc_hostname(mmc)); in sdhci_setup_host()
4640 mmc->max_blk_size = 0; in sdhci_setup_host()
4644 mmc->max_blk_size = 512 << mmc->max_blk_size; in sdhci_setup_host()
4649 mmc->max_blk_count = (host->quirks & SDHCI_QUIRK_NO_MULTIBLOCK) ? 1 : 65535; in sdhci_setup_host()
4651 if (mmc->max_segs == 1) in sdhci_setup_host()
4652 /* This may alter mmc->*_blk_* parameters */ in sdhci_setup_host()
4659 regulator_disable(mmc->supply.vqmmc); in sdhci_setup_host()
4662 dma_free_coherent(mmc_dev(mmc), host->align_buffer_sz + in sdhci_setup_host()
4674 struct mmc_host *mmc = host->mmc; in sdhci_cleanup_host() local
4677 regulator_disable(mmc->supply.vqmmc); in sdhci_cleanup_host()
4680 dma_free_coherent(mmc_dev(mmc), host->align_buffer_sz + in sdhci_cleanup_host()
4695 struct mmc_host *mmc = host->mmc; in __sdhci_add_host() local
4698 if ((mmc->caps2 & MMC_CAP2_CQE) && in __sdhci_add_host()
4700 mmc->caps2 &= ~MMC_CAP2_CQE; in __sdhci_add_host()
4701 mmc->cqe_ops = NULL; in __sdhci_add_host()
4718 IRQF_SHARED, mmc_hostname(mmc), host); in __sdhci_add_host()
4721 mmc_hostname(mmc), host->irq, ret); in __sdhci_add_host()
4728 mmc_hostname(mmc), ret); in __sdhci_add_host()
4732 ret = mmc_add_host(mmc); in __sdhci_add_host()
4737 mmc_hostname(mmc), host->hw_name, dev_name(mmc_dev(mmc)), in __sdhci_add_host()
4784 struct mmc_host *mmc = host->mmc; in sdhci_remove_host() local
4794 " transfer!\n", mmc_hostname(mmc)); in sdhci_remove_host()
4803 mmc_remove_host(mmc); in sdhci_remove_host()
4820 regulator_disable(mmc->supply.vqmmc); in sdhci_remove_host()
4823 dma_free_coherent(mmc_dev(mmc), host->align_buffer_sz + in sdhci_remove_host()
4838 mmc_free_host(host->mmc); in sdhci_free_host()