linux-stable/drivers/mmc/core
Shawn Lin 6d796c68cd mmc: core: add tunable delay waiting for power to be stable
The hard-coded 10ms delay in mmc_power_up came from
commit 79bccc5aef ("mmc: increase power up delay"), which said "The TI
controller on Toshiba Tecra M5 needs more time to power up or the cards
will init incorrectly or not at all." But it's too engineering solution
for a special board but force all platforms to wait for that long time,
especially painful for mmc_power_up for eMMC when booting.

However, it's added since 2009, and we can't tell if other platforms
benefit from it. But in practise, the modern hardware are most likely to
have a stable power supply with 1ms after setting it for no matter PMIC
or discrete power. And more importnatly, most regulators implement the
callback of ->set_voltage_time_sel() for regulator core to wait for
specific period of time for the power supply to be stable, which means
once regulator_set_voltage_* return, the power should reach the the
minimum voltage that works for initialization. Of course, if there
are some other ways for host to power the card, we should allow them
to argue a suitable delay as well.

With this patch, we could assign the delay from firmware, or we could
assigne it via ->set_ios() callback from host drivers.

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2018-05-21 10:38:50 +02:00
..
block.c mmc: card: Don't show eMMC RPMB and BOOT areas in /proc/partitions 2018-05-02 15:08:36 +02:00
block.h mmc: block: Remove code no longer needed after the switch to blk-mq 2017-12-11 13:02:22 +01:00
bus.c mmc: core: Remove code no longer needed after the switch to blk-mq 2017-12-11 13:05:58 +01:00
bus.h mmc: core: Move public functions from card.h to private headers 2017-02-13 13:20:24 +01:00
card.h mmc: core: Add a new quirk for limiting clock rate 2018-05-02 15:08:39 +02:00
core.c mmc: core: add tunable delay waiting for power to be stable 2018-05-21 10:38:50 +02:00
core.h mmc: core: Share internal function to set initial signal voltage 2018-05-08 09:33:50 +02:00
debugfs.c mmc: Export host capabilities to debugfs. 2018-03-22 10:36:27 +01:00
host.c mmc: core: add tunable delay waiting for power to be stable 2018-05-21 10:38:50 +02:00
host.h mmc: core: Don't try UHS-I mode if 4-bit mode isn't supported 2018-03-15 09:30:39 +01:00
Kconfig mmc: core: Delete bounce buffer Kconfig option 2017-06-20 10:30:17 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mmc.c mmc: core: Rename ->reset() bus ops to ->hw_reset() 2018-05-08 09:33:29 +02:00
mmc_ops.c mmc: core: Avoid hanging to claim host for mmc via some nested calls 2018-02-27 15:12:37 +01:00
mmc_ops.h mmc: core: Re-factor code for sending CID 2017-06-20 10:30:45 +02:00
mmc_test.c mmc: mmc_test: Ensure command queue is disabled for testing 2017-12-11 12:51:29 +01:00
pwrseq.c mmc: pwrseq: Add reset callback to the struct mmc_pwrseq_ops 2017-06-20 10:30:09 +02:00
pwrseq.h mmc: pwrseq: Add reset callback to the struct mmc_pwrseq_ops 2017-06-20 10:30:09 +02:00
pwrseq_emmc.c mmc: core: Don't do eMMC HW reset when resuming the eMMC card 2017-06-20 10:30:10 +02:00
pwrseq_sd8787.c mmc: pwrseq: add support for Marvell SD8787 chip 2017-02-13 13:20:33 +01:00
pwrseq_simple.c mmc: pwrseq: Use kmalloc_array instead of stack VLA 2018-05-02 15:08:29 +02:00
queue.c block: Use blk_queue_flag_*() in drivers instead of queue_flag_*() 2018-03-08 14:13:48 -07:00
queue.h mmc: block: Remove code no longer needed after the switch to blk-mq 2017-12-11 13:02:22 +01:00
quirks.h mmc: core: sdio: Set SDIO clock of SDR104 to 150MHz for Marvell 8887 chip 2018-05-02 15:08:39 +02:00
sd.c mmc: core: Rename ->reset() bus ops to ->hw_reset() 2018-05-08 09:33:29 +02:00
sd.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sd_ops.c mmc: core: add proper be32 annotation 2017-04-24 21:42:19 +02:00
sd_ops.h mmc: core: add proper be32 annotation 2017-04-24 21:42:19 +02:00
sdio.c mmc: core: Implement ->sw_reset bus ops for SDIO 2018-05-08 09:33:56 +02:00
sdio_bus.c mmc: sdio: fix alignment issue in struct sdio_func 2017-04-18 19:18:07 +02:00
sdio_bus.h mmc: core: First step in cleaning up private mmc header files 2017-02-13 13:20:20 +01:00
sdio_cis.c mmc: core: remove BUG_ONs from sdio 2016-12-05 10:31:08 +01:00
sdio_cis.h mmc: core: First step in cleaning up private mmc header files 2017-02-13 13:20:20 +01:00
sdio_io.c mmc: core: simplify return code 2017-04-24 21:41:24 +02:00
sdio_irq.c mmc: update sdio_claim_irq documentation 2018-03-22 10:50:24 +01:00
sdio_ops.c mmc: sdio: improve mmc_io_rw_extended 2017-04-24 21:41:42 +02:00
sdio_ops.h mmc: sdio: Add API to manage SDIO IRQs from a workqueue 2017-06-20 10:30:11 +02:00
sdio_uart.c mmc: block: Move files to core 2016-12-12 16:30:05 +01:00
slot-gpio.c mmc: core: Add tunable delay before detecting card after card is inserted 2018-05-03 10:33:52 +02:00
slot-gpio.h mmc: core: First step in cleaning up private mmc header files 2017-02-13 13:20:20 +01:00