linux/drivers/mmc/core
Ulf Hansson 20f921bb01 mmc: core: Invent MMC_CAP_3_3V_DDR
According the JEDEC specification an eMMC card supporting 1.8V vccq in DDR
mode should also be capable of 3.3V. However, it's been reported that some
mmc hosts supports 3.3V, but not 1.8V.

Currently the mmc core implements an error handling when the host fails to
set 1.8V for vccq, by falling back to 3.3V. Unfortunate, this seems to be
insufficient for some mmc hosts. To enable these to use eMMC DDR mode let's
invent a new mmc cap, MMC_CAP_3_3V_DDR, which tells whether they support
the eMMC 3.3V DDR mode.

In case MMC_CAP_3_3V_DDR is set, but not MMC_CAP_1_8V_DDR, let's change to
remain on the 3.3V, as it's the default voltage level for vccq, set by the
earlier power up sequence.

As this change introduces MMC_CAP_3_3V_DDR, let's take the opportunity to
do some re-formatting of the related defines in the header file.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Shawn Lin <shawn.lin@rock-chips.com>
Tested-by: Jan Glauber <jglauber@cavium.com>
Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
2017-02-13 13:20:44 +01:00
..
block.c mmc: block: stop passing around pointless return values 2017-02-13 13:20:40 +01:00
block.h mmc: block: stop passing around pointless return values 2017-02-13 13:20:40 +01:00
bus.c mmc: core: Move public functions from host.h to private headers 2017-02-13 13:20:25 +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: Move public functions from card.h to private headers 2017-02-13 13:20:24 +01:00
core.c mmc: core: Rename __mmc_set_signal_voltage() to mmc_set_signal_voltage() 2017-02-13 13:20:43 +01:00
core.h mmc: core: Rename __mmc_set_signal_voltage() to mmc_set_signal_voltage() 2017-02-13 13:20:43 +01:00
debugfs.c mmc: core: Move public functions from host.h to private headers 2017-02-13 13:20:25 +01:00
host.c mmc: core: expose MMC_CAP2_NO_* to dt 2016-07-25 10:34:49 +02:00
host.h mmc: core: Move public functions from host.h to private headers 2017-02-13 13:20:25 +01:00
Kconfig mmc: pwrseq: add support for Marvell SD8787 chip 2017-02-13 13:20:33 +01:00
Makefile mmc: pwrseq: add support for Marvell SD8787 chip 2017-02-13 13:20:33 +01:00
mmc_ops.c mmc: use empty initializer list to zero-clear structures 2017-02-13 13:19:54 +01:00
mmc_ops.h mmc: core: Move public functions from core.h to private headers 2017-02-13 13:20:21 +01:00
mmc_test.c mmc: core: Move public functions from host.h to private headers 2017-02-13 13:20:25 +01:00
mmc.c mmc: core: Invent MMC_CAP_3_3V_DDR 2017-02-13 13:20:44 +01:00
pwrseq_emmc.c mmc: pwrseq: convert to proper platform device 2016-05-02 10:33:30 +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-simple: Add an optional post-power-on-delay 2016-09-26 21:31:07 +02:00
pwrseq.c mmc: pwrseq: convert to proper platform device 2016-05-02 10:33:30 +02:00
pwrseq.h mmc: core: First step in cleaning up private mmc header files 2017-02-13 13:20:20 +01:00
queue.c mmc: core: Move public functions from card.h to private headers 2017-02-13 13:20:24 +01:00
queue.h mmc: core: First step in cleaning up private mmc header files 2017-02-13 13:20:20 +01:00
quirks.c mmc: core: Move public functions from card.h to private headers 2017-02-13 13:20:24 +01:00
sd_ops.c mmc: use empty initializer list to zero-clear structures 2017-02-13 13:19:54 +01:00
sd_ops.h mmc: core: Move public functions from core.h to private headers 2017-02-13 13:20:21 +01:00
sd.c mmc: core: Clarify usage of mmc_set_signal_voltage() 2017-02-13 13:20:43 +01:00
sd.h mmc: core: First step in cleaning up private mmc header files 2017-02-13 13:20:20 +01:00
sdio_bus.c mmc: core: Move public functions from card.h to private headers 2017-02-13 13:20:24 +01: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: Move public functions from card.h to private headers 2017-02-13 13:20:24 +01:00
sdio_irq.c mmc: core: Move public functions from card.h to private headers 2017-02-13 13:20:24 +01:00
sdio_ops.c mmc: use empty initializer list to zero-clear structures 2017-02-13 13:19:54 +01:00
sdio_ops.h mmc: core: Move public functions from core.h to private headers 2017-02-13 13:20:21 +01:00
sdio_uart.c mmc: block: Move files to core 2016-12-12 16:30:05 +01:00
sdio.c mmc: core: Clarify usage of mmc_set_signal_voltage() 2017-02-13 13:20:43 +01:00
slot-gpio.c mmc: slot-gpio: Don't override con_id when request descriptor 2017-02-13 13:20:06 +01:00
slot-gpio.h mmc: core: First step in cleaning up private mmc header files 2017-02-13 13:20:20 +01:00