[PATCH v2 0/9] mmc: sdhci-cadence: Improvements and fixes for Cadence SDHCI driver

Tanmay Kathpalia tanmay.kathpalia at altera.com
Wed Dec 3 13:21:30 CET 2025


This v2 series updates the Cadence SDHCI driver and related MMC code to
improve timing mode handling, device tree integration, SD/eMMC tuning,
and alignment with newer SDHCI specification versions.

Changes in v2:

- Updated patch 1 (reset control support): avoid calling
  reset_deassert_bulk() when reset_get_bulk() failed — only deassert
  resets on successful reset_get_bulk().

- Added a new patch in mmc-uclass to explicitly default cfg->f_max to 0
  when the "max-frequency" property is not present. This ensures that
  sdhci_setup_cfg() correctly falls back to the controller’s capability
  registers for the maximum clock rate.

- Adjusted patch ordering so the mmc-uclass behavior is defined before
  the Cadence driver uses it.

- All other patches are carried forward unchanged from v1.

Thanks to Peng Fan for the review and suggestions.

Link to v1:
https://lore.kernel.org/u-boot/20251110173737.24545-1-tanmay.kathpalia@altera.com/

Summary of changes:

- Add reset control support
  Ensures proper controller reset during probe for reliable initialization.

- Add max-frequency handling in mmc-uclass
  Defaults cfg->f_max to 0 when the property is absent so host drivers
  correctly fall back to controller capabilities.

- Respect max-frequency from device tree in Cadence SDHCI
  Uses the max-frequency property when present, and falls back to the
  controller's maximum base clock from the capabilities register when not.

- Correct timing mode and PHY/control configuration
  Refactors timing mode selection for SD and eMMC cards, implements new
  mode mapping, and updates PHY/control settings for UHS and legacy modes.

- Add SDHCI_SPEC_400, _410, and _420 defines
  Introduces new specification macros for SDHCI v4.0+ compatibility.

- Use hardware version field for controller detection
  Switches from compatible string checks to hardware version detection for
  controller capabilities.

- Enable software tuning for SD and eMMC
  Extends tuning logic to support both SD and eMMC devices, improving
  reliability.

- Fix device tree property naming conventions
  Updates DT property names for compliance and corrects minor typos.

- Add DLL master control and improve tuning reliability
  Adds support for PHY DLL master control and enhances tuning robustness.

Regards,
Tanmay Kathpalia
tanmay.kathpalia at altera.com

Tanmay Kathpalia (9):
  mmc: sdhci-cadence: Add reset control support
  mmc: mmc-uclass: Use max-frequency from device tree with default
    handling
  mmc: sdhci-cadence: Use max-frequency property from device tree
  mmc: sdhci-cadence: Set controller and PHY speed modes for SD and eMMC
    cards
  mmc: sdhci: Add SDHCI_SPEC_400, _410, and _420 version defines
  mmc: sdhci-cadence: Use hardware version field for Cadence SDHCI
    controller
  mmc: sdhci-cadence: Enable software tuning for both SD and eMMC
    interfaces
  mmc: sdhci-cadence6: socfpga: Fix DT property naming convention
  mmc: sdhci-cadence6: Add DLL master control and improve tuning
    reliability

 drivers/mmc/mmc-uclass.c     |  9 +++-
 drivers/mmc/sdhci-cadence.c  | 98 +++++++++++++++++++++++++-----------
 drivers/mmc/sdhci-cadence6.c | 82 +++++++++++++++++++++++-------
 include/sdhci.h              |  3 ++
 4 files changed, 142 insertions(+), 50 deletions(-)

-- 
2.43.7



More information about the U-Boot mailing list