[PATCH v4 4/8] riscv: dts: spacemit: k1: add SD card controller and pinctrl support
From: Iker Pedrosa <ikerpedrosam@gmail.com>
Date: 2026-03-23 10:19:37
Also in:
linux-mmc, linux-riscv, lkml, spacemit
Subsystem:
risc-v architecture, risc-v spacemit soc support, the rest · Maintainers:
Paul Walmsley, Palmer Dabbelt, Albert Ou, Yixun Lan, Linus Torvalds
Add SD card controller infrastructure for SpacemiT K1 SoC with complete pinctrl support for both standard and UHS modes. - Add sdhci0 controller definition with clocks, resets and interrupts - Add mmc1_cfg pinctrl for 3.3V standard SD operation - Add mmc1_uhs_cfg pinctrl for 1.8V UHS high-speed operation - Configure appropriate drive strength and power-source properties This provides complete SD card infrastructure that K1-based boards can enable. Tested-by: Anand Moon <redacted> Tested-by: Trevor Gamblin <tgamblin@baylibre.com> Signed-off-by: Iker Pedrosa <ikerpedrosam@gmail.com> --- arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 40 ++++++++++++++++++++++++++++ arch/riscv/boot/dts/spacemit/k1.dtsi | 13 +++++++++ 2 files changed, 53 insertions(+)
diff --git a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi
index b13dcb10f4d66022d27307de73a6ea3287e97441..8d82011f1af666fb78c282a2abcc0cb88f962053 100644
--- a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi
+++ b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi@@ -570,4 +570,44 @@ pwm14-1-pins { drive-strength = <32>; }; }; + + mmc1_cfg: mmc1-cfg { + mmc1-data-cmd-pins { + pinmux = <K1_PADCONF(104, 0)>, /* mmc1_d3 */ + <K1_PADCONF(105, 0)>, /* mmc1_d2 */ + <K1_PADCONF(106, 0)>, /* mmc1_d1 */ + <K1_PADCONF(107, 0)>, /* mmc1_d0 */ + <K1_PADCONF(108, 0)>; /* mmc1_cmd */ + bias-pull-up = <1>; + drive-strength = <7>; + power-source = <3300>; + }; + + mmc1-clk-pins { + pinmux = <K1_PADCONF(109, 0)>; /* mmc1_clk */ + bias-pull-down = <1>; + drive-strength = <7>; + power-source = <3300>; + }; + }; + + mmc1_uhs_cfg: mmc1-uhs-cfg { + mmc1-data-cmd-pins { + pinmux = <K1_PADCONF(104, 0)>, /* mmc1_d3 */ + <K1_PADCONF(105, 0)>, /* mmc1_d2 */ + <K1_PADCONF(106, 0)>, /* mmc1_d1 */ + <K1_PADCONF(107, 0)>, /* mmc1_d0 */ + <K1_PADCONF(108, 0)>; /* mmc1_cmd */ + bias-pull-up = <1>; + drive-strength = <13>; + power-source = <1800>; + }; + + mmc1-clk-pins { + pinmux = <K1_PADCONF(109, 0)>; /* mmc1_clk */ + bias-pull-down = <1>; + drive-strength = <13>; + power-source = <1800>; + }; + }; };
diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spacemit/k1.dtsi
index d2015201f8e5adff8bda75712036b8dc2b79bcb5..3952c4d0ecfb26e9d215955ca8791243bbd1dab7 100644
--- a/arch/riscv/boot/dts/spacemit/k1.dtsi
+++ b/arch/riscv/boot/dts/spacemit/k1.dtsi@@ -1211,6 +1211,19 @@ emmc: mmc@d4281000 { interrupts = <101>; status = "disabled"; }; + + sdhci0: mmc@d4280000 { + compatible = "spacemit,k1-sdhci"; + reg = <0x0 0xd4280000 0x0 0x200>; + clocks = <&syscon_apmu CLK_SDH_AXI>, + <&syscon_apmu CLK_SDH0>; + clock-names = "core", "io"; + resets = <&syscon_apmu RESET_SDH_AXI>, + <&syscon_apmu RESET_SDH0>; + reset-names = "axi", "sdh"; + interrupts = <99>; + status = "disabled"; + }; }; }; };
--
2.53.0