This adds a SPI controller to the Microchip Sparx5 SoC, as well as the
mmio-mux that is required to select the right SPI interface for a
given SPI device.

Signed-off-by: Lars Povlsen <[email protected]>
---
 arch/arm64/boot/dts/microchip/sparx5.dtsi | 27 ++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/microchip/sparx5.dtsi 
b/arch/arm64/boot/dts/microchip/sparx5.dtsi
index 7e811e24f0e99..2169746703dfb 100644
--- a/arch/arm64/boot/dts/microchip/sparx5.dtsi
+++ b/arch/arm64/boot/dts/microchip/sparx5.dtsi
@@ -14,6 +14,7 @@ / {
        #size-cells = <1>;
 
        aliases {
+               spi0 = &spi0;
                serial0 = &uart0;
                serial1 = &uart1;
        };
@@ -119,8 +120,19 @@ gic: interrupt-controller@600300000 {
                };
 
                cpu_ctrl: syscon@600000000 {
-                       compatible = "microchip,sparx5-cpu-syscon", "syscon";
+                       compatible = "microchip,sparx5-cpu-syscon", "syscon",
+                                    "simple-mfd";
                        reg = <0x6 0x00000000 0xd0>;
+                       mux: mux-controller {
+                               compatible = "mmio-mux";
+                               #mux-control-cells = <0>;
+                               /*
+                                * SI_OWNER and SI2_OWNER in GENERAL_CTRL
+                                * SPI:  value 9 - (SIMC,SIBM) = 0b1001
+                                * SPI2: value 6 - (SIBM,SIMC) = 0b0110
+                                */
+                               mux-reg-masks = <0x88 0xf0>;
+                       };
                };
 
                reset@611010008 {
@@ -155,6 +167,19 @@ uart1: serial@600102000 {
                        status = "disabled";
                };
 
+               spi0: spi@600104000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "microchip,sparx5-spi";
+                       reg = <0x6 0x00104000 0x40>;
+                       num-cs = <16>;
+                       reg-io-width = <4>;
+                       reg-shift = <2>;
+                       clocks = <&ahb_clk>;
+                       interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
                timer1: timer@600105000 {
                        compatible = "snps,dw-apb-timer";
                        reg = <0x6 0x00105000 0x1000>;
-- 
2.27.0

Reply via email to