From: Iker Pedrosa <[email protected]>

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 <[email protected]>
Tested-by: Trevor Gamblin <[email protected]>
Tested-by: Vincent Legoll <[email protected]>
Reviewed-by: Troy Mitchell <[email protected]>
Signed-off-by: Iker Pedrosa <[email protected]>
Link: 
https://patch.msgid.link/[email protected]
Signed-off-by: Yixun Lan <[email protected]>

[ upstream commit: 2d77e577109967ef65f269c1fc1d6a659d4260fb ]

(cherry picked from commit 785af36511c3d3664204be1427c5cade3ce9765d)
---
 dts/upstream/src/riscv/spacemit/k1-pinctrl.dtsi | 40 +++++++++++++++++++++++++
 dts/upstream/src/riscv/spacemit/k1.dtsi         | 13 ++++++++
 2 files changed, 53 insertions(+)

diff --git a/dts/upstream/src/riscv/spacemit/k1-pinctrl.dtsi 
b/dts/upstream/src/riscv/spacemit/k1-pinctrl.dtsi
index 34d88334e95e..4e9a62d0e85b 100644
--- a/dts/upstream/src/riscv/spacemit/k1-pinctrl.dtsi
+++ b/dts/upstream/src/riscv/spacemit/k1-pinctrl.dtsi
@@ -590,4 +590,44 @@
                        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>;
+               };
+       };
 };
diff --git a/dts/upstream/src/riscv/spacemit/k1.dtsi 
b/dts/upstream/src/riscv/spacemit/k1.dtsi
index f8747190d2e1..acb608ee7b53 100644
--- a/dts/upstream/src/riscv/spacemit/k1.dtsi
+++ b/dts/upstream/src/riscv/spacemit/k1.dtsi
@@ -1214,6 +1214,19 @@
                                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>;

-- 
2.51.0

Reply via email to