kernel_samsung_a53x/drivers/mmc/core
Avri Altman ea63e8f4b5 mmc: core: Use mrq.sbc in close-ended ffu
commit 4d0c8d0aef6355660b6775d57ccd5d4ea2e15802 upstream.

Field Firmware Update (ffu) may use close-ended or open ended sequence.
Each such sequence is comprised of a write commands enclosed between 2
switch commands - to and from ffu mode. So for the close-ended case, it
will be: cmd6->cmd23-cmd25-cmd6.

Some host controllers however, get confused when multi-block rw is sent
without sbc, and may generate auto-cmd12 which breaks the ffu sequence.
I encountered  this issue while testing fwupd (github.com/fwupd/fwupd)
on HP Chromebook x2, a qualcomm based QC-7c, code name - strongbad.

Instead of a quirk, or hooking the request function of the msm ops,
it would be better to fix the ioctl handling and make it use mrq.sbc
instead of issuing SET_BLOCK_COUNT separately.

Signed-off-by: Avri Altman <avri.altman@wdc.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20231129092535.3278-1-avri.altman@wdc.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-11-18 12:12:58 +01:00
..
block.c mmc: core: Use mrq.sbc in close-ended ffu 2024-11-18 12:12:58 +01:00
block.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bus.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bus.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
card.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
core.c mmc: block: Be sure to wait while busy in CQE error recovery 2024-11-18 12:11:47 +01:00
core.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
crypto.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
crypto.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
debugfs.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
host.c mmc: core: Cancel delayed work before releasing host 2024-11-18 12:12:08 +01:00
host.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mmc.c Revert "mmc: core: Capture correct oemid-bits for eMMC cards" 2024-11-18 11:43:11 +01:00
mmc_ops.c mmc: block: Be sure to wait while busy in CQE error recovery 2024-11-18 12:11:47 +01:00
mmc_ops.h mmc: block: Be sure to wait while busy in CQE error recovery 2024-11-18 12:11:47 +01:00
mmc_test.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pwrseq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pwrseq.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pwrseq_emmc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pwrseq_sd8787.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pwrseq_simple.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
queue.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
queue.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
quirks.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
regulator.c mmc: core: add helpers mmc_regulator_enable/disable_vqmmc 2024-11-18 12:11:17 +01:00
sd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sd.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sd_ops.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sd_ops.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio.c mmc: core: sdio: hold retuning if sdio in 1-bit mode 2024-11-08 11:26:18 +01:00
sdio_bus.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_bus.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_cis.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_cis.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_io.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_irq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_ops.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_ops.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdio_uart.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
slot-gpio.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
slot-gpio.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00