Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'sparx5-dt-5.10' of https://github.com/microchip-ung/linux-upstream into arm/dt

Sparx5 DT updates for Linux 5.10

- Add public repo to MAINTAINERS
- Add SPI controller and devices
- Add eMMC controller and devices
- Add temperature sensor

* tag 'sparx5-dt-5.10' of https://github.com/microchip-ung/linux-upstream:
arm64: dts: sparx5: Add spi-nand devices
arm64: dts: sparx5: Add spi-nor support
arm64: dts: sparx5: Add SPI controller and associated mmio-mux
MAINTAINERS: Add git tree for Sparx5
arm64: dts: sparx5: Add hwmon temperature sensor
arm64: dts: sparx5: Add Sparx5 eMMC support

Link: https://lore.kernel.org/r/878sda2dj0.fsf@microchip.com
Signed-off-by: Olof Johansson <olof@lixom.net>

+278
+1
MAINTAINERS
··· 2136 2136 M: Microchip Linux Driver Support <UNGLinuxDriver@microchip.com> 2137 2137 L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 2138 2138 S: Supported 2139 + T: git git://github.com/microchip-ung/linux-upstream.git 2139 2140 F: arch/arm64/boot/dts/microchip/ 2140 2141 N: sparx5 2141 2142
+81
arch/arm64/boot/dts/microchip/sparx5.dtsi
··· 5 5 6 6 #include <dt-bindings/gpio/gpio.h> 7 7 #include <dt-bindings/interrupt-controller/arm-gic.h> 8 + #include <dt-bindings/clock/microchip,sparx5.h> 8 9 9 10 / { 10 11 compatible = "microchip,sparx5"; ··· 14 13 #size-cells = <1>; 15 14 16 15 aliases { 16 + spi0 = &spi0; 17 17 serial0 = &uart0; 18 18 serial1 = &uart1; 19 19 }; ··· 119 117 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; 120 118 }; 121 119 120 + cpu_ctrl: syscon@600000000 { 121 + compatible = "microchip,sparx5-cpu-syscon", "syscon", 122 + "simple-mfd"; 123 + reg = <0x6 0x00000000 0xd0>; 124 + mux: mux-controller { 125 + compatible = "mmio-mux"; 126 + #mux-control-cells = <0>; 127 + /* 128 + * SI_OWNER and SI2_OWNER in GENERAL_CTRL 129 + * SPI: value 9 - (SIMC,SIBM) = 0b1001 130 + * SPI2: value 6 - (SIBM,SIMC) = 0b0110 131 + */ 132 + mux-reg-masks = <0x88 0xf0>; 133 + }; 134 + }; 135 + 122 136 uart0: serial@600100000 { 123 137 pinctrl-0 = <&uart_pins>; 124 138 pinctrl-names = "default"; ··· 161 143 status = "disabled"; 162 144 }; 163 145 146 + spi0: spi@600104000 { 147 + #address-cells = <1>; 148 + #size-cells = <0>; 149 + compatible = "microchip,sparx5-spi"; 150 + reg = <0x6 0x00104000 0x40>; 151 + num-cs = <16>; 152 + reg-io-width = <4>; 153 + reg-shift = <2>; 154 + clocks = <&ahb_clk>; 155 + interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>; 156 + status = "disabled"; 157 + }; 158 + 164 159 timer1: timer@600105000 { 165 160 compatible = "snps,dw-apb-timer"; 166 161 reg = <0x6 0x00105000 0x1000>; 167 162 clocks = <&ahb_clk>; 168 163 clock-names = "timer"; 169 164 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; 165 + }; 166 + 167 + sdhci0: mmc@600800000 { 168 + compatible = "microchip,dw-sparx5-sdhci"; 169 + status = "disabled"; 170 + reg = <0x6 0x00800000 0x1000>; 171 + pinctrl-0 = <&emmc_pins>; 172 + pinctrl-names = "default"; 173 + clocks = <&clks CLK_ID_AUX1>; 174 + clock-names = "core"; 175 + assigned-clocks = <&clks CLK_ID_AUX1>; 176 + assigned-clock-rates = <800000000>; 177 + interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; 178 + bus-width = <8>; 170 179 }; 171 180 172 181 gpio: pinctrl@6110101e0 { ··· 205 160 interrupt-controller; 206 161 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; 207 162 #interrupt-cells = <2>; 163 + 164 + cs1_pins: cs1-pins { 165 + pins = "GPIO_16"; 166 + function = "si"; 167 + }; 168 + 169 + cs2_pins: cs2-pins { 170 + pins = "GPIO_17"; 171 + function = "si"; 172 + }; 173 + 174 + cs3_pins: cs3-pins { 175 + pins = "GPIO_18"; 176 + function = "si"; 177 + }; 178 + 179 + si2_pins: si2-pins { 180 + pins = "GPIO_39", "GPIO_40", "GPIO_41"; 181 + function = "si2"; 182 + }; 208 183 209 184 uart_pins: uart-pins { 210 185 pins = "GPIO_10", "GPIO_11"; ··· 244 179 i2c2_pins: i2c2-pins { 245 180 pins = "GPIO_28", "GPIO_29"; 246 181 function = "twi2"; 182 + }; 183 + 184 + emmc_pins: emmc-pins { 185 + pins = "GPIO_34", "GPIO_35", "GPIO_36", 186 + "GPIO_37", "GPIO_38", "GPIO_39", 187 + "GPIO_40", "GPIO_41", "GPIO_42", 188 + "GPIO_43", "GPIO_44", "GPIO_45", 189 + "GPIO_46", "GPIO_47"; 190 + function = "emmc"; 247 191 }; 248 192 }; 249 193 ··· 281 207 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 282 208 i2c-sda-hold-time-ns = <300>; 283 209 clock-frequency = <100000>; 210 + clocks = <&ahb_clk>; 211 + }; 212 + 213 + tmon0: tmon@610508110 { 214 + compatible = "microchip,sparx5-temp"; 215 + reg = <0x6 0x10508110 0xc>; 216 + #thermal-sensor-cells = <0>; 284 217 clocks = <&ahb_clk>; 285 218 }; 286 219 };
+31
arch/arm64/boot/dts/microchip/sparx5_nand.dtsi
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2 + /* 3 + * Copyright (c) 2020 Microchip Technology Inc. and its subsidiaries. 4 + */ 5 + 6 + &gpio { 7 + cs14_pins: cs14-pins { 8 + pins = "GPIO_44"; 9 + function = "si"; 10 + }; 11 + }; 12 + 13 + &spi0 { 14 + pinctrl-0 = <&si2_pins>; 15 + pinctrl-names = "default"; 16 + spi@e { 17 + compatible = "spi-mux"; 18 + mux-controls = <&mux>; 19 + #address-cells = <1>; 20 + #size-cells = <0>; 21 + reg = <14>; /* CS14 */ 22 + spi-flash@6 { 23 + compatible = "spi-nand"; 24 + pinctrl-0 = <&cs14_pins>; 25 + pinctrl-names = "default"; 26 + reg = <0x6>; /* SPI2 */ 27 + spi-max-frequency = <42000000>; 28 + rx-sample-delay-ns = <7>; /* Tune for speed */ 29 + }; 30 + }; 31 + };
+53
arch/arm64/boot/dts/microchip/sparx5_pcb125.dts
··· 16 16 }; 17 17 }; 18 18 19 + &gpio { 20 + emmc_pins: emmc-pins { 21 + /* NB: No "GPIO_35", "GPIO_36", "GPIO_37" 22 + * (N/A: CARD_nDETECT, CARD_WP, CARD_LED) 23 + */ 24 + pins = "GPIO_34", "GPIO_38", "GPIO_39", 25 + "GPIO_40", "GPIO_41", "GPIO_42", 26 + "GPIO_43", "GPIO_44", "GPIO_45", 27 + "GPIO_46", "GPIO_47"; 28 + drive-strength = <3>; 29 + function = "emmc"; 30 + }; 31 + }; 32 + 33 + &sdhci0 { 34 + status = "okay"; 35 + bus-width = <8>; 36 + non-removable; 37 + pinctrl-0 = <&emmc_pins>; 38 + max-frequency = <8000000>; 39 + microchip,clock-delay = <10>; 40 + }; 41 + 42 + &spi0 { 43 + status = "okay"; 44 + spi@0 { 45 + compatible = "spi-mux"; 46 + mux-controls = <&mux>; 47 + #address-cells = <1>; 48 + #size-cells = <0>; 49 + reg = <0>; /* CS0 */ 50 + spi-flash@9 { 51 + compatible = "jedec,spi-nor"; 52 + spi-max-frequency = <8000000>; 53 + reg = <0x9>; /* SPI */ 54 + }; 55 + }; 56 + spi@1 { 57 + compatible = "spi-mux"; 58 + mux-controls = <&mux 0>; 59 + #address-cells = <1>; 60 + #size-cells = <0>; 61 + reg = <1>; /* CS1 */ 62 + spi-flash@9 { 63 + compatible = "spi-nand"; 64 + pinctrl-0 = <&cs1_pins>; 65 + pinctrl-names = "default"; 66 + spi-max-frequency = <8000000>; 67 + reg = <0x9>; /* SPI */ 68 + }; 69 + }; 70 + }; 71 + 19 72 &i2c1 { 20 73 status = "okay"; 21 74 };
+1
arch/arm64/boot/dts/microchip/sparx5_pcb134.dts
··· 5 5 6 6 /dts-v1/; 7 7 #include "sparx5_pcb134_board.dtsi" 8 + #include "sparx5_nand.dtsi" 8 9 9 10 / { 10 11 model = "Sparx5 PCB134 Reference Board (NAND)";
+32
arch/arm64/boot/dts/microchip/sparx5_pcb134_board.dtsi
··· 38 38 }; 39 39 }; 40 40 41 + &spi0 { 42 + status = "okay"; 43 + spi@0 { 44 + compatible = "spi-mux"; 45 + mux-controls = <&mux>; 46 + #address-cells = <1>; 47 + #size-cells = <0>; 48 + reg = <0>; /* CS0 */ 49 + spi-flash@9 { 50 + compatible = "jedec,spi-nor"; 51 + spi-max-frequency = <8000000>; 52 + reg = <0x9>; /* SPI */ 53 + }; 54 + }; 55 + }; 56 + 57 + &spi0 { 58 + status = "okay"; 59 + spi@0 { 60 + compatible = "spi-mux"; 61 + mux-controls = <&mux>; 62 + #address-cells = <1>; 63 + #size-cells = <0>; 64 + reg = <0>; /* CS0 */ 65 + spi-flash@9 { 66 + compatible = "jedec,spi-nor"; 67 + spi-max-frequency = <8000000>; 68 + reg = <0x9>; /* SPI */ 69 + }; 70 + }; 71 + }; 72 + 41 73 &gpio { 42 74 i2cmux_pins_i: i2cmux-pins-i { 43 75 pins = "GPIO_16", "GPIO_17", "GPIO_18", "GPIO_19",
+23
arch/arm64/boot/dts/microchip/sparx5_pcb134_emmc.dts
··· 15 15 reg = <0x00000000 0x00000000 0x10000000>; 16 16 }; 17 17 }; 18 + 19 + &gpio { 20 + emmc_pins: emmc-pins { 21 + /* NB: No "GPIO_35", "GPIO_36", "GPIO_37" 22 + * (N/A: CARD_nDETECT, CARD_WP, CARD_LED) 23 + */ 24 + pins = "GPIO_34", "GPIO_38", "GPIO_39", 25 + "GPIO_40", "GPIO_41", "GPIO_42", 26 + "GPIO_43", "GPIO_44", "GPIO_45", 27 + "GPIO_46", "GPIO_47"; 28 + drive-strength = <3>; 29 + function = "emmc"; 30 + }; 31 + }; 32 + 33 + &sdhci0 { 34 + status = "okay"; 35 + pinctrl-0 = <&emmc_pins>; 36 + non-removable; 37 + max-frequency = <52000000>; 38 + bus-width = <8>; 39 + microchip,clock-delay = <10>; 40 + };
+1
arch/arm64/boot/dts/microchip/sparx5_pcb135.dts
··· 5 5 6 6 /dts-v1/; 7 7 #include "sparx5_pcb135_board.dtsi" 8 + #include "sparx5_nand.dtsi" 8 9 9 10 / { 10 11 model = "Sparx5 PCB135 Reference Board (NAND)";
+32
arch/arm64/boot/dts/microchip/sparx5_pcb135_board.dtsi
··· 51 51 }; 52 52 }; 53 53 54 + &spi0 { 55 + status = "okay"; 56 + spi@0 { 57 + compatible = "spi-mux"; 58 + mux-controls = <&mux>; 59 + #address-cells = <1>; 60 + #size-cells = <0>; 61 + reg = <0>; /* CS0 */ 62 + spi-flash@9 { 63 + compatible = "jedec,spi-nor"; 64 + spi-max-frequency = <8000000>; 65 + reg = <0x9>; /* SPI */ 66 + }; 67 + }; 68 + }; 69 + 70 + &spi0 { 71 + status = "okay"; 72 + spi@0 { 73 + compatible = "spi-mux"; 74 + mux-controls = <&mux>; 75 + #address-cells = <1>; 76 + #size-cells = <0>; 77 + reg = <0>; /* CS0 */ 78 + spi-flash@9 { 79 + compatible = "jedec,spi-nor"; 80 + spi-max-frequency = <8000000>; 81 + reg = <0x9>; /* SPI */ 82 + }; 83 + }; 84 + }; 85 + 54 86 &axi { 55 87 i2c0_imux: i2c0-imux@0 { 56 88 compatible = "i2c-mux-pinctrl";
+23
arch/arm64/boot/dts/microchip/sparx5_pcb135_emmc.dts
··· 15 15 reg = <0x00000000 0x00000000 0x10000000>; 16 16 }; 17 17 }; 18 + 19 + &gpio { 20 + emmc_pins: emmc-pins { 21 + /* NB: No "GPIO_35", "GPIO_36", "GPIO_37" 22 + * (N/A: CARD_nDETECT, CARD_WP, CARD_LED) 23 + */ 24 + pins = "GPIO_34", "GPIO_38", "GPIO_39", 25 + "GPIO_40", "GPIO_41", "GPIO_42", 26 + "GPIO_43", "GPIO_44", "GPIO_45", 27 + "GPIO_46", "GPIO_47"; 28 + drive-strength = <3>; 29 + function = "emmc"; 30 + }; 31 + }; 32 + 33 + &sdhci0 { 34 + status = "okay"; 35 + pinctrl-0 = <&emmc_pins>; 36 + non-removable; 37 + max-frequency = <52000000>; 38 + bus-width = <8>; 39 + microchip,clock-delay = <10>; 40 + };