]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
riscv: dts: spacemit: k1: add SD card controller and pinctrl support
authorIker Pedrosa <ikerpedrosam@gmail.com>
Fri, 15 May 2026 10:48:59 +0000 (12:48 +0200)
committerYixun Lan <dlan@kernel.org>
Sat, 16 May 2026 02:10:05 +0000 (02:10 +0000)
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 <linux.amoon@gmail.com>
Tested-by: Trevor Gamblin <tgamblin@baylibre.com>
Tested-by: Vincent Legoll <legoll@online.fr>
Reviewed-by: Troy Mitchell <troy.mitchell@linux.dev>
Signed-off-by: Iker Pedrosa <ikerpedrosam@gmail.com>
Link: https://patch.msgid.link/20260515-orangepi-sd-card-uhs-v10-1-094af27e310d@gmail.com
Signed-off-by: Yixun Lan <dlan@kernel.org>
arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi
arch/riscv/boot/dts/spacemit/k1.dtsi

index 34d88334e95e4287a440da31aabad6d82c0a00d3..4e9a62d0e85b5dd2cf221c0abba782ba3f4dabca 100644 (file)
                        power-source = <3300>;
                };
        };
+
+       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 = <19>;
+                       power-source = <3300>;
+               };
+
+               mmc1-clk-pins {
+                       pinmux = <K1_PADCONF(109, 0)>;   /* mmc1_clk */
+                       bias-pull-down = <1>;
+                       drive-strength = <19>;
+                       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 = <42>;
+                       power-source = <1800>;
+               };
+
+               mmc1-clk-pins {
+                       pinmux = <K1_PADCONF(109, 0)>;   /* mmc1_clk */
+                       bias-pull-down = <1>;
+                       drive-strength = <42>;
+                       power-source = <1800>;
+               };
+       };
 };
index 24becab4c959479f488bc3d771722fa8fa02dd55..06469c364eefda4d4ebc8e98d1b8faab6320db81 100644 (file)
                                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";
+                       };
+
                        emmc: mmc@d4281000 {
                                compatible = "spacemit,k1-sdhci";
                                reg = <0x0 0xd4281000 0x0 0x200>;