linux/drivers/mmc/core
Shawn Lin 5fc3d80ef4 mmc: sdio: don't use rocr to check if the card could support UHS mode
Per SDIO Simplified Specification V3, section 3.1.2, A host that
supports UHS-I sets S18R to 1 in the argument of CMD5 to request a
change of the signal voltage to 1.8V. If the card supports UHS-I and
the current signal voltage is 3.3V, S18A is set to 1 in the R4 response.
If the signal voltage is already 1.8V, the card sets S18A to 0 so that
host maintains the current signal voltage. UHS-I is supported in SD mode
and S18A is always 0 in SPI mode.

For the current code, if the signaling voltage is fixed 1.8v, so
the card will set S18A to 0 for rocr and thus we would clear the
R4_18V_PRESENT from ocr, which make core won't try to use uhs mode.

To fix it, we expect sdio_read_cccr would fail if the uhs mode won't
work at all. Note that it's interesting that some sdio cards still
response S18A even the voltage is fixed to 1.8v and the CMD11 will
also accepted and finish enabling UHS mode successfully. I guess this
is why folks didn't notice this problem. Anyway, fix it.

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2017-02-13 13:20:13 +01:00
..
block.c mmc: use empty initializer list to zero-clear structures 2017-02-13 13:19:54 +01:00
block.h mmc: block: Move files to core 2016-12-12 16:30:05 +01:00
bus.c mmc: core: implement enhanced strobe support 2016-07-25 10:34:05 +02:00
bus.h mmc: rename dev_to_mmc_card() to mmc_dev_to_card() 2010-10-23 21:11:12 +08:00
core.c mmc: use empty initializer list to zero-clear structures 2017-02-13 13:19:54 +01:00
core.h mmc: fix mmc_{un,}register_pm_notifier prototypes 2015-12-22 11:32:09 +01:00
debugfs.c mmc: debugfs: remove BUG_ON from mmc_ext_csd_open 2016-12-05 10:31:09 +01:00
host.c mmc: core: expose MMC_CAP2_NO_* to dt 2016-07-25 10:34:49 +02:00
host.h mmc: host: Add facility to support re-tuning 2015-06-01 09:06:53 +02:00
Kconfig mmc: block: Move files to core 2016-12-12 16:30:05 +01:00
Makefile mmc: block: Move files to core 2016-12-12 16:30:05 +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: mmc: Relax checking for switch errors after HS200 switch 2016-12-05 14:15:46 +01:00
mmc_test.c mmc: mmc_test: Use kcalloc() in mmc_test_alloc_mem() 2017-02-13 13:20:11 +01:00
mmc.c mmc: use empty initializer list to zero-clear structures 2017-02-13 13:19:54 +01:00
pwrseq_emmc.c mmc: pwrseq: convert to proper platform device 2016-05-02 10:33:30 +02: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: pwrseq: convert to proper platform device 2016-05-02 10:33:30 +02:00
queue.c mmc: core: Use kmalloc_array() in mmc_alloc_sg() 2017-02-13 13:20:11 +01:00
queue.h mmc: block: Move files to core 2016-12-12 16:30:05 +01:00
quirks.c mmc: core: Disable HPI for certain Hynix eMMC cards 2016-07-25 10:34:12 +02: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: add erase, secure erase, trim and secure trim operations 2010-08-12 08:43:30 -07:00
sd.c mmc: sd: Meet alignment requirements for raw_ssr DMA 2016-12-21 08:34:30 +01:00
sd.h mmc: drop the speed mode of card's state 2014-05-12 18:05:53 -04:00
sdio_bus.c mmc: enable MMC/SD/SDIO device to suspend/resume asynchronously 2015-12-22 11:32:16 +01:00
sdio_bus.h
sdio_cis.c mmc: core: remove BUG_ONs from sdio 2016-12-05 10:31:08 +01:00
sdio_cis.h
sdio_io.c mmc: sdio: deploy error handling instead of triggering BUG_ON 2016-09-26 21:31:15 +02:00
sdio_irq.c mmc: core: remove BUG_ONs from sdio 2016-12-05 10:31:08 +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: Add mmc_is_io_op helper function 2015-10-26 16:00:01 +01:00
sdio_uart.c mmc: block: Move files to core 2016-12-12 16:30:05 +01:00
sdio.c mmc: sdio: don't use rocr to check if the card could support UHS mode 2017-02-13 13:20:13 +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: slot-gpio: Make mmc_gpio_alloc() available for MMC core 2015-01-19 09:56:17 +01:00