From 3a4a8963aace2eb04610af6d944d002f146af55f Mon Sep 17 00:00:00 2001 From: Hiago De Franco Date: Thu, 7 May 2026 20:48:36 -0300 Subject: mmc: cv1800b_sdhci: honor 'no-1-8-v' DT property CV1800B SDHCI controller does support 1.8V, however, boards like MilkV-Duo 256M do not have a VCCIO 1.8V regulator (the bus is wired for 3.3V only). These boards set 'no-1-8-v' in their device tree, and mmc_of_parse() does respect this property. Later, when sdhci_setup_cfg() is called, it reads SDHCI_CAPABILITIES_1 from the hardware and unconditionally adds the UHS caps again based on what the controller advertises. Since the board cannot switch to 1.8V, the host issues CMD11 (voltage switch request), the card transitions, but the bus stays at 3.3V. The SD card stops responding until the next power cycle. Before calling sdhci_setup_cfg(), set the SDHCI_QUIRK_NO_1_8_V quirk when 'no-1-8-v' is present. The quirk causes the SDR104/SDR50/DDR50 bits to be masked out of the caps, allowing the card to initialize properly. This matches the pattern used by zynq_sdhci. Fixes: eb36f28ff721 ("mmc: cv1800b: Add sdhci driver support for cv1800b SoC") Signed-off-by: Hiago De Franco Reviewed-by: Peng Fan Signed-off-by: Peng Fan --- drivers/mmc/cv1800b_sdhci.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/mmc/cv1800b_sdhci.c b/drivers/mmc/cv1800b_sdhci.c index 036e798f374..72c5bfc6f35 100644 --- a/drivers/mmc/cv1800b_sdhci.c +++ b/drivers/mmc/cv1800b_sdhci.c @@ -94,6 +94,9 @@ static int cv1800b_sdhci_probe(struct udevice *dev) host->ops = &cv1800b_sdhci_sd_ops; host->max_clk = MMC_MAX_CLOCK; + if (dev_read_bool(dev, "no-1-8-v")) + host->quirks |= SDHCI_QUIRK_NO_1_8_V; + ret = mmc_of_parse(dev, &plat->cfg); if (ret) return ret; -- cgit v1.3.1