• Home
  • Raw
  • Download

Lines Matching full:mmc

3  *  linux/drivers/mmc/host/sdhci.c - Secure Digital Host Controller Interface driver
30 #include <linux/mmc/mmc.h>
31 #include <linux/mmc/host.h>
32 #include <linux/mmc/card.h>
33 #include <linux/mmc/sdio.h>
34 #include <linux/mmc/slot-gpio.h>
41 pr_debug("%s: " DRIVER_NAME ": " f, mmc_hostname(host->mmc), ## x)
44 pr_err("%s: " DRIVER_NAME ": " f, mmc_hostname(host->mmc), ## x)
160 !mmc_card_is_removable(host->mmc) || mmc_can_gpio_cd(host->mmc)) in sdhci_set_card_detection()
192 pm_runtime_get_noresume(host->mmc->parent); in sdhci_runtime_pm_bus_on()
200 pm_runtime_put_noidle(host->mmc->parent); in sdhci_runtime_pm_bus_off()
227 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()
322 struct mmc_host *mmc = host->mmc; in sdhci_init() local
342 mmc->ops->set_ios(mmc, &mmc->ios); in sdhci_init()
360 mmc_detect_change(host->mmc, msecs_to_jiffies(200)); in sdhci_reinit()
409 struct mmc_host *mmc = host->mmc; in sdhci_led_register() local
415 "%s::", mmc_hostname(mmc)); in sdhci_led_register()
419 host->led.default_trigger = mmc_hostname(mmc); in sdhci_led_register()
422 return led_classdev_register(mmc_dev(mmc), &host->led); in sdhci_led_register()
637 mmc_hostname(host->mmc), length, in sdhci_pre_dma_transfer()
652 dma_sync_single_for_device(host->mmc->parent, in sdhci_pre_dma_transfer()
660 sg_count = dma_map_sg(mmc_dev(host->mmc), in sdhci_pre_dma_transfer()
833 dma_sync_sg_for_cpu(mmc_dev(host->mmc), data->sg, in sdhci_adma_table_post()
910 struct mmc_host *mmc = host->mmc; in sdhci_calc_sw_timeout() local
911 struct mmc_ios *ios = &mmc->ios; in sdhci_calc_sw_timeout()
923 freq = host->mmc->actual_clock ? : host->clock; in sdhci_calc_sw_timeout()
1062 BUG_ON(data->blksz > host->mmc->max_blk_size); in sdhci_initialize_data()
1190 struct mmc_host *mmc = host->mmc; in sdhci_external_dma_init() local
1192 host->tx_chan = dma_request_chan(mmc->parent, "tx"); in sdhci_external_dma_init()
1201 host->rx_chan = dma_request_chan(mmc->parent, "rx"); in sdhci_external_dma_init()
1314 mmc_hostname(host->mmc)); in sdhci_external_dma_prepare_data()
1722 mmc_hostname(host->mmc)); in sdhci_send_command_retry()
1732 present = host->mmc->ops->get_cd(host->mmc); in sdhci_send_command_retry()
1785 mmc_command_done(host->mmc, cmd->mrq); in sdhci_finish_command()
1855 mmc_hostname(host->mmc)); in sdhci_get_preset_value()
1971 mmc_hostname(host->mmc)); in sdhci_enable_clk()
1993 mmc_hostname(host->mmc)); in sdhci_enable_clk()
2010 host->mmc->actual_clock = 0; in sdhci_set_clock()
2017 clk = sdhci_calc_clk(host, clock, &host->mmc->actual_clock); in sdhci_set_clock()
2025 struct mmc_host *mmc = host->mmc; in sdhci_set_power_reg() local
2027 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd); in sdhci_set_power_reg()
2068 mmc_hostname(host->mmc), vdd); in sdhci_set_power_noreg()
2118 if (IS_ERR(host->mmc->supply.vmmc)) in sdhci_set_power()
2135 if (!IS_ERR(host->mmc->supply.vmmc)) { in sdhci_set_power_and_bus_voltage()
2136 struct mmc_host *mmc = host->mmc; in sdhci_set_power_and_bus_voltage() local
2138 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd); in sdhci_set_power_and_bus_voltage()
2146 * MMC callbacks *
2150 void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_request() argument
2152 struct sdhci_host *host = mmc_priv(mmc); in sdhci_request()
2158 present = mmc->ops->get_cd(mmc); in sdhci_request()
2182 int sdhci_request_atomic(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_request_atomic() argument
2184 struct sdhci_host *host = mmc_priv(mmc); in sdhci_request_atomic()
2225 if (host->mmc->caps & MMC_CAP_8_BIT_DATA) in sdhci_set_bus_width()
2261 void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) in sdhci_set_ios() argument
2263 struct sdhci_host *host = mmc_priv(mmc); in sdhci_set_ios()
2270 if (!IS_ERR(mmc->supply.vmmc) && in sdhci_set_ios()
2272 mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0); in sdhci_set_ios()
2296 host->timeout_clk = host->mmc->actual_clock ? in sdhci_set_ios()
2297 host->mmc->actual_clock / 1000 : in sdhci_set_ios()
2299 host->mmc->max_busy_timeout = in sdhci_set_ios()
2303 host->mmc->max_busy_timeout /= host->timeout_clk; in sdhci_set_ios()
2355 mmc_hostname(mmc)); in sdhci_set_ios()
2417 static int sdhci_get_cd(struct mmc_host *mmc) in sdhci_get_cd() argument
2419 struct sdhci_host *host = mmc_priv(mmc); in sdhci_get_cd()
2420 int gpio_cd = mmc_gpio_get_cd(mmc); in sdhci_get_cd()
2426 if (!mmc_card_is_removable(host->mmc)) in sdhci_get_cd()
2455 else if (mmc_can_gpio_ro(host->mmc)) in sdhci_check_ro()
2456 is_readonly = mmc_gpio_get_ro(host->mmc); in sdhci_check_ro()
2470 static int sdhci_get_ro(struct mmc_host *mmc) in sdhci_get_ro() argument
2472 struct sdhci_host *host = mmc_priv(mmc); in sdhci_get_ro()
2489 static void sdhci_hw_reset(struct mmc_host *mmc) in sdhci_hw_reset() argument
2491 struct sdhci_host *host = mmc_priv(mmc); in sdhci_hw_reset()
2510 void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable) in sdhci_enable_sdio_irq() argument
2512 struct sdhci_host *host = mmc_priv(mmc); in sdhci_enable_sdio_irq()
2516 pm_runtime_get_noresume(host->mmc->parent); in sdhci_enable_sdio_irq()
2523 pm_runtime_put_noidle(host->mmc->parent); in sdhci_enable_sdio_irq()
2527 static void sdhci_ack_sdio_irq(struct mmc_host *mmc) in sdhci_ack_sdio_irq() argument
2529 struct sdhci_host *host = mmc_priv(mmc); in sdhci_ack_sdio_irq()
2537 int sdhci_start_signal_voltage_switch(struct mmc_host *mmc, in sdhci_start_signal_voltage_switch() argument
2540 struct sdhci_host *host = mmc_priv(mmc); in sdhci_start_signal_voltage_switch()
2561 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_start_signal_voltage_switch()
2562 ret = mmc_regulator_set_vqmmc(mmc, ios); in sdhci_start_signal_voltage_switch()
2565 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2578 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2584 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_start_signal_voltage_switch()
2585 ret = mmc_regulator_set_vqmmc(mmc, ios); in sdhci_start_signal_voltage_switch()
2588 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2610 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2616 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_start_signal_voltage_switch()
2617 ret = mmc_regulator_set_vqmmc(mmc, ios); in sdhci_start_signal_voltage_switch()
2620 mmc_hostname(mmc)); in sdhci_start_signal_voltage_switch()
2632 static int sdhci_card_busy(struct mmc_host *mmc) in sdhci_card_busy() argument
2634 struct sdhci_host *host = mmc_priv(mmc); in sdhci_card_busy()
2643 static int sdhci_prepare_hs400_tuning(struct mmc_host *mmc, struct mmc_ios *ios) in sdhci_prepare_hs400_tuning() argument
2645 struct sdhci_host *host = mmc_priv(mmc); in sdhci_prepare_hs400_tuning()
2707 mmc_abort_tuning(host->mmc, opcode); in sdhci_abort_tuning()
2720 struct mmc_host *mmc = host->mmc; in sdhci_send_tuning() local
2739 mmc->ios.bus_width == MMC_BUS_WIDTH_8) in sdhci_send_tuning()
2788 mmc_hostname(host->mmc)); in __sdhci_execute_tuning()
2807 mmc_hostname(host->mmc)); in __sdhci_execute_tuning()
2812 int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) in sdhci_execute_tuning() argument
2814 struct sdhci_host *host = mmc_priv(mmc); in sdhci_execute_tuning()
2864 host->mmc->retune_period = tuning_count; in sdhci_execute_tuning()
2910 static void sdhci_post_req(struct mmc_host *mmc, struct mmc_request *mrq, in sdhci_post_req() argument
2913 struct sdhci_host *host = mmc_priv(mmc); in sdhci_post_req()
2917 dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len, in sdhci_post_req()
2923 static void sdhci_pre_req(struct mmc_host *mmc, struct mmc_request *mrq) in sdhci_pre_req() argument
2925 struct sdhci_host *host = mmc_priv(mmc); in sdhci_pre_req()
2951 static void sdhci_card_event(struct mmc_host *mmc) in sdhci_card_event() argument
2953 struct sdhci_host *host = mmc_priv(mmc); in sdhci_card_event()
2961 present = mmc->ops->get_cd(mmc); in sdhci_card_event()
2968 mmc_hostname(host->mmc)); in sdhci_card_event()
2970 mmc_hostname(host->mmc)); in sdhci_card_event()
3084 mmc_hostname(host->mmc), in sdhci_request_done()
3091 host->mmc->parent, in sdhci_request_done()
3102 host->mmc->parent, in sdhci_request_done()
3109 dma_unmap_sg(mmc_dev(host->mmc), data->sg, in sdhci_request_done()
3124 mmc_request_done(host->mmc, mrq); in sdhci_request_done()
3149 mmc_hostname(host->mmc)); in sdhci_timeout_timer()
3171 mmc_hostname(host->mmc)); in sdhci_timeout_data_timer()
3222 mmc_hostname(host->mmc), (unsigned)intmask); in sdhci_cmd_irq()
3352 mmc_hostname(host->mmc), (unsigned)intmask); in sdhci_data_irq()
3367 pr_err("%s: ADMA error: 0x%08x\n", mmc_hostname(host->mmc), in sdhci_data_irq()
3506 mmc_hostname(host->mmc)); in sdhci_irq()
3509 mmc_retune_needed(host->mmc); in sdhci_irq()
3514 sdio_signal_irq(host->mmc); in sdhci_irq()
3561 mmc_request_done(host->mmc, mrqs_done[i]); in sdhci_irq()
3566 mmc_hostname(host->mmc), unexpected); in sdhci_irq()
3595 struct mmc_host *mmc = host->mmc; in sdhci_thread_irq() local
3597 mmc->ops->card_event(mmc); in sdhci_thread_irq()
3598 mmc_detect_change(mmc, msecs_to_jiffies(200)); in sdhci_thread_irq()
3614 return mmc_card_is_removable(host->mmc) && in sdhci_cd_irq_can_wakeup()
3616 !mmc_can_gpio_cd(host->mmc); in sdhci_cd_irq_can_wakeup()
3640 if (mmc_card_wake_sdio_irq(host->mmc)) { in sdhci_enable_irq_wakeups()
3679 mmc_retune_timer_stop(host->mmc); in sdhci_suspend_host()
3681 if (!device_may_wakeup(mmc_dev(host->mmc)) || in sdhci_suspend_host()
3696 struct mmc_host *mmc = host->mmc; in sdhci_resume_host() local
3704 if ((host->mmc->pm_flags & MMC_PM_KEEP_POWER) && in sdhci_resume_host()
3710 mmc->ops->set_ios(mmc, &mmc->ios); in sdhci_resume_host()
3712 sdhci_init(host, (host->mmc->pm_flags & MMC_PM_KEEP_POWER)); in sdhci_resume_host()
3720 mmc_hostname(host->mmc), host); in sdhci_resume_host()
3736 mmc_retune_timer_stop(host->mmc); in sdhci_runtime_suspend_host()
3756 struct mmc_host *mmc = host->mmc; in sdhci_runtime_resume_host() local
3767 if (mmc->ios.power_mode != MMC_POWER_UNDEFINED && in sdhci_runtime_resume_host()
3768 mmc->ios.power_mode != MMC_POWER_OFF) { in sdhci_runtime_resume_host()
3772 mmc->ops->start_signal_voltage_switch(mmc, &mmc->ios); in sdhci_runtime_resume_host()
3773 mmc->ops->set_ios(mmc, &mmc->ios); in sdhci_runtime_resume_host()
3782 if ((mmc->caps2 & MMC_CAP2_HS400_ES) && in sdhci_runtime_resume_host()
3783 mmc->ops->hs400_enhanced_strobe) in sdhci_runtime_resume_host()
3784 mmc->ops->hs400_enhanced_strobe(mmc, &mmc->ios); in sdhci_runtime_resume_host()
3792 if (sdio_irq_claimed(mmc)) in sdhci_runtime_resume_host()
3812 void sdhci_cqe_enable(struct mmc_host *mmc) in sdhci_cqe_enable() argument
3814 struct sdhci_host *host = mmc_priv(mmc); in sdhci_cqe_enable()
3849 mmc_hostname(mmc), host->ier, in sdhci_cqe_enable()
3856 void sdhci_cqe_disable(struct mmc_host *mmc, bool recovery) in sdhci_cqe_disable() argument
3858 struct sdhci_host *host = mmc_priv(mmc); in sdhci_cqe_disable()
3873 mmc_hostname(mmc), host->ier, in sdhci_cqe_disable()
3910 mmc_hostname(host->mmc)); in sdhci_cqe_irq()
3916 mmc_hostname(host->mmc), intmask); in sdhci_cqe_irq()
3933 struct mmc_host *mmc; in sdhci_alloc_host() local
3938 mmc = mmc_alloc_host(sizeof(struct sdhci_host) + priv_size, dev); in sdhci_alloc_host()
3939 if (!mmc) in sdhci_alloc_host()
3942 host = mmc_priv(mmc); in sdhci_alloc_host()
3943 host->mmc = mmc; in sdhci_alloc_host()
3945 mmc->ops = &host->mmc_host_ops; in sdhci_alloc_host()
3972 struct mmc_host *mmc = host->mmc; in sdhci_set_dma_mask() local
3973 struct device *dev = mmc_dev(mmc); in sdhci_set_dma_mask()
3984 mmc_hostname(mmc)); in sdhci_set_dma_mask()
3994 mmc_hostname(mmc)); in sdhci_set_dma_mask()
4023 device_property_read_u64_array(mmc_dev(host->mmc), in __sdhci_read_caps()
4025 device_property_read_u64_array(mmc_dev(host->mmc), in __sdhci_read_caps()
4057 struct mmc_host *mmc = host->mmc; in sdhci_allocate_bounce_buffer() local
4064 * has diminishing returns, this is probably because SD/MMC in sdhci_allocate_bounce_buffer()
4073 if (mmc->max_req_size < bounce_size) in sdhci_allocate_bounce_buffer()
4074 bounce_size = mmc->max_req_size; in sdhci_allocate_bounce_buffer()
4082 host->bounce_buffer = devm_kmalloc(mmc->parent, in sdhci_allocate_bounce_buffer()
4087 mmc_hostname(mmc), in sdhci_allocate_bounce_buffer()
4091 * mmc->max_segs == 1. in sdhci_allocate_bounce_buffer()
4096 host->bounce_addr = dma_map_single(mmc->parent, in sdhci_allocate_bounce_buffer()
4100 ret = dma_mapping_error(mmc->parent, host->bounce_addr); in sdhci_allocate_bounce_buffer()
4107 mmc->max_segs = max_blocks; in sdhci_allocate_bounce_buffer()
4108 mmc->max_seg_size = bounce_size; in sdhci_allocate_bounce_buffer()
4109 mmc->max_req_size = bounce_size; in sdhci_allocate_bounce_buffer()
4112 mmc_hostname(mmc), max_blocks, bounce_size); in sdhci_allocate_bounce_buffer()
4130 struct mmc_host *mmc; in sdhci_setup_host() local
4142 mmc = host->mmc; in sdhci_setup_host()
4150 if (!mmc->supply.vqmmc) { in sdhci_setup_host()
4151 ret = mmc_regulator_get_supply(mmc); in sdhci_setup_host()
4170 mmc_hostname(mmc), host->version); in sdhci_setup_host()
4225 mmc_hostname(mmc)); in sdhci_setup_host()
4253 buf = dma_alloc_coherent(mmc_dev(mmc), in sdhci_setup_host()
4258 mmc_hostname(mmc)); in sdhci_setup_host()
4263 mmc_hostname(mmc)); in sdhci_setup_host()
4265 dma_free_coherent(mmc_dev(mmc), host->align_buffer_sz + in sdhci_setup_host()
4283 mmc_dev(mmc)->dma_mask = &host->dma_mask; in sdhci_setup_host()
4296 mmc_hostname(mmc)); in sdhci_setup_host()
4324 mmc->f_min = host->ops->get_min_clock(host); in sdhci_setup_host()
4332 mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_300; in sdhci_setup_host()
4334 mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_200; in sdhci_setup_host()
4336 if (!mmc->f_max || mmc->f_max > max_clk) in sdhci_setup_host()
4337 mmc->f_max = max_clk; in sdhci_setup_host()
4348 mmc_hostname(mmc)); in sdhci_setup_host()
4361 mmc->max_busy_timeout = host->ops->get_max_timeout_count ? in sdhci_setup_host()
4363 mmc->max_busy_timeout /= host->timeout_clk; in sdhci_setup_host()
4368 mmc->max_busy_timeout = 0; in sdhci_setup_host()
4370 mmc->caps |= MMC_CAP_SDIO_IRQ | MMC_CAP_CMD23; in sdhci_setup_host()
4371 mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD; in sdhci_setup_host()
4393 * 8-bit width must set "mmc->caps |= MMC_CAP_8_BIT_DATA;" in in sdhci_setup_host()
4398 mmc->caps |= MMC_CAP_4_BIT_DATA; in sdhci_setup_host()
4401 mmc->caps &= ~MMC_CAP_CMD23; in sdhci_setup_host()
4404 mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED; in sdhci_setup_host()
4407 mmc_card_is_removable(mmc) && in sdhci_setup_host()
4408 mmc_gpio_get_cd(host->mmc) < 0) in sdhci_setup_host()
4409 mmc->caps |= MMC_CAP_NEEDS_POLL; in sdhci_setup_host()
4411 if (!IS_ERR(mmc->supply.vqmmc)) { in sdhci_setup_host()
4413 ret = regulator_enable(mmc->supply.vqmmc); in sdhci_setup_host()
4418 if (!regulator_is_supported_voltage(mmc->supply.vqmmc, 1700000, in sdhci_setup_host()
4425 if (!regulator_is_supported_voltage(mmc->supply.vqmmc, 2700000, in sdhci_setup_host()
4431 mmc_hostname(mmc), ret); in sdhci_setup_host()
4432 mmc->supply.vqmmc = ERR_PTR(-EINVAL); in sdhci_setup_host()
4442 * (indicated using mmc-hs200-1_8v/mmc-hs400-1_8v dt property), in sdhci_setup_host()
4448 mmc->caps2 &= ~(MMC_CAP2_HSX00_1_8V | MMC_CAP2_HS400_ES); in sdhci_setup_host()
4449 mmc->caps &= ~(MMC_CAP_1_8V_DDR | MMC_CAP_UHS); in sdhci_setup_host()
4455 mmc->caps |= MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25; in sdhci_setup_host()
4459 mmc->caps |= MMC_CAP_UHS_SDR104 | MMC_CAP_UHS_SDR50; in sdhci_setup_host()
4464 mmc->caps2 |= MMC_CAP2_HS200; in sdhci_setup_host()
4466 mmc->caps |= MMC_CAP_UHS_SDR50; in sdhci_setup_host()
4471 mmc->caps2 |= MMC_CAP2_HS400; in sdhci_setup_host()
4473 if ((mmc->caps2 & MMC_CAP2_HSX00_1_2V) && in sdhci_setup_host()
4474 (IS_ERR(mmc->supply.vqmmc) || in sdhci_setup_host()
4475 !regulator_is_supported_voltage(mmc->supply.vqmmc, 1100000, in sdhci_setup_host()
4477 mmc->caps2 &= ~MMC_CAP2_HSX00_1_2V; in sdhci_setup_host()
4481 mmc->caps |= MMC_CAP_UHS_DDR50; in sdhci_setup_host()
4489 mmc->caps |= MMC_CAP_DRIVER_TYPE_A; in sdhci_setup_host()
4491 mmc->caps |= MMC_CAP_DRIVER_TYPE_C; in sdhci_setup_host()
4493 mmc->caps |= MMC_CAP_DRIVER_TYPE_D; in sdhci_setup_host()
4519 if (!max_current_caps && !IS_ERR(mmc->supply.vmmc)) { in sdhci_setup_host()
4520 int curr = regulator_get_current_limit(mmc->supply.vmmc); in sdhci_setup_host()
4538 mmc->max_current_330 = FIELD_GET(SDHCI_MAX_CURRENT_330_MASK, in sdhci_setup_host()
4545 mmc->max_current_300 = FIELD_GET(SDHCI_MAX_CURRENT_300_MASK, in sdhci_setup_host()
4552 mmc->max_current_180 = FIELD_GET(SDHCI_MAX_CURRENT_180_MASK, in sdhci_setup_host()
4562 if (mmc->ocr_avail) in sdhci_setup_host()
4563 ocr_avail = mmc->ocr_avail; in sdhci_setup_host()
4565 mmc->ocr_avail = ocr_avail; in sdhci_setup_host()
4566 mmc->ocr_avail_sdio = ocr_avail; in sdhci_setup_host()
4568 mmc->ocr_avail_sdio &= host->ocr_avail_sdio; in sdhci_setup_host()
4569 mmc->ocr_avail_sd = ocr_avail; in sdhci_setup_host()
4571 mmc->ocr_avail_sd &= host->ocr_avail_sd; in sdhci_setup_host()
4573 mmc->ocr_avail_sd &= ~MMC_VDD_165_195; in sdhci_setup_host()
4574 mmc->ocr_avail_mmc = ocr_avail; in sdhci_setup_host()
4576 mmc->ocr_avail_mmc &= host->ocr_avail_mmc; in sdhci_setup_host()
4578 if (mmc->ocr_avail == 0) { in sdhci_setup_host()
4580 mmc_hostname(mmc)); in sdhci_setup_host()
4585 if ((mmc->caps & (MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25 | in sdhci_setup_host()
4588 (mmc->caps2 & (MMC_CAP2_HS200_1_8V_SDR | MMC_CAP2_HS400_1_8V))) in sdhci_setup_host()
4591 if (mmc->caps2 & MMC_CAP2_HSX00_1_2V) in sdhci_setup_host()
4601 mmc->max_req_size = 524288; in sdhci_setup_host()
4608 mmc->max_segs = SDHCI_MAX_SEGS; in sdhci_setup_host()
4610 mmc->max_segs = 1; in sdhci_setup_host()
4614 mmc->max_req_size = min(mmc->max_req_size, in sdhci_setup_host()
4618 mmc->max_segs = SDHCI_MAX_SEGS; in sdhci_setup_host()
4629 mmc->max_seg_size = 65535; in sdhci_setup_host()
4631 mmc->max_seg_size = 65536; in sdhci_setup_host()
4634 mmc->max_seg_size = mmc->max_req_size; in sdhci_setup_host()
4642 mmc->max_blk_size = 2; in sdhci_setup_host()
4644 mmc->max_blk_size = (host->caps & SDHCI_MAX_BLOCK_MASK) >> in sdhci_setup_host()
4646 if (mmc->max_blk_size >= 3) { in sdhci_setup_host()
4648 mmc_hostname(mmc)); in sdhci_setup_host()
4649 mmc->max_blk_size = 0; in sdhci_setup_host()
4653 mmc->max_blk_size = 512 << mmc->max_blk_size; in sdhci_setup_host()
4658 mmc->max_blk_count = (host->quirks & SDHCI_QUIRK_NO_MULTIBLOCK) ? 1 : 65535; in sdhci_setup_host()
4660 if (mmc->max_segs == 1) in sdhci_setup_host()
4661 /* This may alter mmc->*_blk_* parameters */ in sdhci_setup_host()
4668 regulator_disable(mmc->supply.vqmmc); in sdhci_setup_host()
4671 dma_free_coherent(mmc_dev(mmc), host->align_buffer_sz + in sdhci_setup_host()
4683 struct mmc_host *mmc = host->mmc; in sdhci_cleanup_host() local
4686 regulator_disable(mmc->supply.vqmmc); in sdhci_cleanup_host()
4689 dma_free_coherent(mmc_dev(mmc), host->align_buffer_sz + in sdhci_cleanup_host()
4704 struct mmc_host *mmc = host->mmc; in __sdhci_add_host() local
4707 if ((mmc->caps2 & MMC_CAP2_CQE) && in __sdhci_add_host()
4709 mmc->caps2 &= ~MMC_CAP2_CQE; in __sdhci_add_host()
4710 mmc->cqe_ops = NULL; in __sdhci_add_host()
4727 IRQF_SHARED, mmc_hostname(mmc), host); in __sdhci_add_host()
4730 mmc_hostname(mmc), host->irq, ret); in __sdhci_add_host()
4737 mmc_hostname(mmc), ret); in __sdhci_add_host()
4741 ret = mmc_add_host(mmc); in __sdhci_add_host()
4746 mmc_hostname(mmc), host->hw_name, dev_name(mmc_dev(mmc)), in __sdhci_add_host()
4793 struct mmc_host *mmc = host->mmc; in sdhci_remove_host() local
4803 " transfer!\n", mmc_hostname(mmc)); in sdhci_remove_host()
4812 mmc_remove_host(mmc); in sdhci_remove_host()
4829 regulator_disable(mmc->supply.vqmmc); in sdhci_remove_host()
4832 dma_free_coherent(mmc_dev(mmc), host->align_buffer_sz + in sdhci_remove_host()
4847 mmc_free_host(host->mmc); in sdhci_free_host()