[PATCH v8 0/9] riscv: spacemit: enable SD card support with UHS modes for OrangePi RV2
Anand Moon
linux.amoon at gmail.com
Thu Apr 23 05:42:13 PDT 2026
Hi All,
On Mon, 13 Apr 2026 at 13:32, Iker Pedrosa <ikerpedrosam at gmail.com> wrote:
>
> This series enables complete SD card support for the Spacemit K1-based
> OrangePi RV2 board, including UHS (Ultra High Speed) modes for
> high-performance SD card operation.
>
> Background
>
> The Spacemit K1 SoC includes an SDHCI controller capable of supporting
> SD cards up to UHS-I speeds (SDR104 at 208MHz). However, mainline
> currently lacks basic SD controller configuration, SDHCI driver
> enhancements for voltage switching and tuning, and power management
> infrastructure.
>
> Implementation
>
> The series enables SD card support through coordinated layers:
>
> - Hardware infrastructure (patches 1-2): Device tree bindings for voltage
> switching hardware and essential clock infrastructure.
> - SDHCI driver enhancements (patches 3-7): Regulator framework
> integration, pinctrl state switching for voltage domains, AIB register
> programming, and comprehensive SDR tuning support for reliable UHS
> operation.
> - SoC and board integration (patches 8-10): Complete K1 SoC controller
> definitions, PMIC power infrastructure, and OrangePi RV2 board enablement
> with full UHS support.
>
> This transforms the OrangePi RV2 from having no SD card support to full
> UHS-I capability, enabling high-performance storage up to 208MHz.
>
> Tested-by: Michael Opdenacker <michael.opdenacker at rootcommit.com>
> Signed-off-by: Iker Pedrosa <ikerpedrosam at gmail.com>
I'm just checking the status of this series. Since it hasn't been
applied to linux-next,
Will it be included in the next kernel release cycle?
Thanks
-Anand
> ---
> Changes in v8:
> - Resending the series as v8. The v7 submission failed due to an SMTP
> error during transit, which resulted in a broken thread on the mailing
> list.
> - No functional changes from v7.
> - Link to v7: https://lore.kernel.org/r/20260413-orangepi-sd-card-uhs-v7-1-16650f49c022@gmail.com
>
> Changes in v7:
> - Remove sdhci-common.yaml reference from DT binding.
> - Link to v6: https://lore.kernel.org/r/20260407-orangepi-sd-card-uhs-v6-0-b5b8a1b2bfc8@gmail.com
>
> Changes in v6:
> - Add pinctrl support for voltage switching. Document optional
> pinctrl-names property supporting "default" and "uhs" pinctrl states
> for coordinating pin configuration changes during UHS-I voltage
> switching.
> - Update pinctrl state naming from "state_uhs" to "uhs" to match DT
> binding naming convention.
> - Fix MMC drive strength values based on vendor kernel investigation.
> Correct 3.3V operation from 7mA to 19mA and 1.8V UHS operation from
> 13mA to 42mA to match proven vendor implementation.
> - Link to v5: https://lore.kernel.org/r/20260330-orangepi-sd-card-uhs-v5-0-bd853604322d@gmail.com
>
> Changes in v5:
> - Document optional pinctrl-names property supporting "default" and
> "state_uhs" pinctrl states for coordinating pin configuration changes
> during UHS-I voltage switching.
> - Link to v4: https://lore.kernel.org/r/20260323-orangepi-sd-card-uhs-v4-0-567c9775fd0e@gmail.com
>
> Changes in v4:
> - Revert to start_signal_voltage_switch() approach for bidirectional
> voltage switching: replace voltage_switch() callback with
> start_signal_voltage_switch() to properly handle both 3.3V and 1.8V
> signal voltage directions.
> - Fix DC input voltage specification: corrected the main power supply
> from 12V to 5V to match the OrangePi RV2 board specifications. The
> board uses a 5V USB-C input connector, not a 12V rail as previously
> specified in the device tree.
> - k1-bananapi-f3.dts: add `broken-cd` property to work around card
> detection. Using `broken-cd` disables hotplug detection but keeps SD
> card functionality working without additional dependencies.
> - Add SD card support for Muse Pi Pro board (contributed by Trevor
> Gamblin): enable SD card support with UHS-I capabilities following the
> same pattern as OrangePi RV2, including dual pinctrl states, PMIC
> power supplies, and card detection.
> - Link to v3: https://lore.kernel.org/r/20260316-orangepi-sd-card-uhs-v3-0-aefd3b7832df@gmail.com
>
> Changes in v3:
> - Rebase on mmc.git/next to resolve conflicts with "mmc: sdhci-of-k1:
> add reset support" patch.
> - Squash tuning infrastructure and implementation patches (3 and 4)
> together to form complete functionality and avoid unused function
> warnings.
> - Reduce code nesting: implemented an early return sanity check in
> spacemit_sdhci_voltage_switch() to reduce indentation and improve
> logic flow.
> - Refactor pinctrl initialization: moved pinctrl resource acquisition
> and state lookup into a dedicated helper function,
> spacemit_sdhci_get_pins().
> - Use generic regulator node names (buck4, aldo1) instead of
> device-specific aliases (sd_vmmc, sd_vqmmc) to better reflect that
> these PMIC outputs serve multiple devices.
> - Remove dead code handling 3.3V voltage switching from
> spacemit_sdhci_voltage_switch().
> - Optimize tuning algorithm to use single-pass window detection instead
> of storing results in array, reducing memory usage and complexity.
> - Remove unnecessary card detect check in execute_tuning() - rely on MMC
> core.
> - Clarify commit message to mention both SD (UHS-I) and eMMC (HS200)
> tuning support.
> - Add SD card support for Banana Pi BPI-F3 board with UHS-I capabilities
> following the same pattern as OrangePi RV2.
> - Link to v2: https://lore.kernel.org/r/20260309-orangepi-sd-card-uhs-v2-0-5bb2b574df5d@gmail.com
>
> Changes in v2:
> - Removed custom AIB voltage switching code per maintainer feedback. The
> existing pinctrl driver already handles AIB voltage switching
> automatically via power-source property changes during UHS mode
> transitions. This eliminates code duplication.
> - Squashed regulator and pinctrl commits into single voltage switching
> implementation.
> - Moved voltage switching callback from dynamic probe assignment to
> static sdhci_ops declaration. Removed redundant SDHCI core call since
> the framework handles standard voltage switching automatically.
> - Made clock override (SDHC_OVRRD_CLK_OEN | SDHC_FORCE_CLK_ON)
> conditional for SD/SDIO cards only. This follows vendor driver pattern
> of differentiating SD and eMMC card handling.
> - Include no-mmc property for SD card.
> - Link to v1: https://lore.kernel.org/r/20260302-orangepi-sd-card-uhs-v1-0-89c219973c0c@gmail.com
>
> ---
> Iker Pedrosa (8):
> dt-bindings: mmc: spacemit,sdhci: add pinctrl support for voltage switching
> mmc: sdhci-of-k1: enable essential clock infrastructure for SD operation
> mmc: sdhci-of-k1: add regulator and pinctrl voltage switching support
> mmc: sdhci-of-k1: add comprehensive SDR tuning support
> riscv: dts: spacemit: k1: add SD card controller and pinctrl support
> riscv: dts: spacemit: k1-orangepi-rv2: add PMIC and power infrastructure
> riscv: dts: spacemit: k1-orangepi-rv2: add SD card support with UHS modes
> riscv: dts: spacemit: k1-bananapi-f3: add SD card support with UHS modes
>
> Trevor Gamblin (1):
> riscv: dts: spacemit: k1-musepi-pro: add SD card support with UHS modes
>
> .../devicetree/bindings/mmc/spacemit,sdhci.yaml | 15 ++
> arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 24 +-
> arch/riscv/boot/dts/spacemit/k1-musepi-pro.dts | 66 ++++++
> arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts | 67 ++++++
> arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 40 ++++
> arch/riscv/boot/dts/spacemit/k1.dtsi | 13 ++
> drivers/mmc/host/sdhci-of-k1.c | 257 +++++++++++++++++++++
> 7 files changed, 480 insertions(+), 2 deletions(-)
> ---
> base-commit: 4c3b07bf68391122266dfb01126484daf352cf70
> change-id: 20260226-orangepi-sd-card-uhs-0ecb05839b0c
>
> Best regards,
> --
> Iker Pedrosa <ikerpedrosam at gmail.com>
>
More information about the linux-riscv
mailing list