[PATCH v2 5/5] mmc: fix mmc_deinit regression when card is at 1.8V signaling
Kathpalia, Tanmay
tanmay.kathpalia at altera.com
Mon Jul 13 19:51:08 CEST 2026
Hi Peng,
Thanks for making the changes.
On 7/13/2026 7:02 PM, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan at nxp.com>
>
> Commit 906ee6785b1c ("mmc: sd: Handle UHS-I voltage signaling without
> power cycle") added detection of cards already operating at 1.8V
> signaling via mmc_sd_card_using_v18(). This correctly handles the
> warm-reboot scenario in mmc_startup().
>
> However, mmc_deinit() strips ALL UHS capabilities from the card caps
> and calls sd_select_mode_and_width() to downgrade the card before
> kernel handoff. For a card that has switched to 1.8V, uhs_en is
> already true (via OCR_S18R in mmc->ocr), so sd_select_mode_and_width()
> attempts UHS mode selection -- but no UHS modes remain in the filtered
> caps. The non-UHS fallbacks (SD_HS, MMC_LEGACY) are 3.3V speed modes
> which, when selected while signaling at 1.8V, leave the card in an
> inconsistent state it cannot recover from without a power cycle.
>
> Per SD Physical Layer Specification: "Once the card enters 1.8V
> signaling mode, the card cannot be switched to 3.3V signaling without
> power cycle. If the card receives CMD0, card returns to Idle state but
> still works with SDR12 timing."
>
> Fix by using a UHS capability mask that preserves UHS_SDR12 when the
> card is operating at 1.8V. SDR12 is the minimum valid UHS-I mode and
> is always available at 1.8V signaling per the SD specification, so the
> card is left in a consistent (1.8V) state at a low, safe speed.
>
> Fixes: 906ee6785b1c ("mmc: sd: Handle UHS-I voltage signaling without power cycle")
> Signed-off-by: Peng Fan <peng.fan at nxp.com>
Signed-off-by: Tanmay Kathpalia<tanmay.kathpalia at altera.com>
More information about the U-Boot
mailing list