Linux Audio

Check our new training course

Real-Time Linux with PREEMPT_RT training

Feb 18-20, 2025
Register
Loading...
Note: File does not exist in v6.9.4.
  1/*
  2 * ox820.dtsi - Device tree file for Oxford Semiconductor OX820 SoC
  3 *
  4 * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
  5 *
  6 * Licensed under GPLv2 or later
  7 */
  8
  9/include/ "skeleton.dtsi"
 10#include <dt-bindings/interrupt-controller/arm-gic.h>
 11#include <dt-bindings/clock/oxsemi,ox820.h>
 12#include <dt-bindings/reset/oxsemi,ox820.h>
 13
 14/ {
 15	compatible = "oxsemi,ox820";
 16
 17	cpus {
 18		#address-cells = <1>;
 19		#size-cells = <0>;
 20		enable-method = "oxsemi,ox820-smp";
 21
 22		cpu@0 {
 23			device_type = "cpu";
 24			compatible = "arm,arm11mpcore";
 25			clocks = <&armclk>;
 26			reg = <0>;
 27		};
 28
 29		cpu@1 {
 30			device_type = "cpu";
 31			compatible = "arm,arm11mpcore";
 32			clocks = <&armclk>;
 33			reg = <1>;
 34		};
 35	};
 36
 37	memory {
 38		/* Max 512MB @ 0x60000000 */
 39		reg = <0x60000000 0x20000000>;
 40	};
 41
 42	clocks {
 43		osc: oscillator {
 44			compatible = "fixed-clock";
 45			#clock-cells = <0>;
 46			clock-frequency = <25000000>;
 47		};
 48
 49		gmacclk: gmacclk {
 50			compatible = "fixed-clock";
 51			#clock-cells = <0>;
 52			clock-frequency = <125000000>;
 53		};
 54
 55		sysclk: sysclk {
 56			compatible = "fixed-factor-clock";
 57			#clock-cells = <0>;
 58			clock-div = <4>;
 59			clock-mult = <1>;
 60			clocks = <&osc>;
 61		};
 62
 63		plla: plla {
 64			compatible = "fixed-clock";
 65			#clock-cells = <0>;
 66			clock-frequency = <850000000>;
 67		};
 68
 69		armclk: armclk {
 70			compatible = "fixed-factor-clock";
 71			#clock-cells = <0>;
 72			clock-div = <2>;
 73			clock-mult = <1>;
 74			clocks = <&plla>;
 75		};
 76	};
 77
 78	soc {
 79		#address-cells = <1>;
 80		#size-cells = <1>;
 81		compatible = "simple-bus";
 82		ranges;
 83		interrupt-parent = <&gic>;
 84
 85		nandc: nand-controller@41000000 {
 86			compatible = "oxsemi,ox820-nand";
 87			reg = <0x41000000 0x100000>;
 88			clocks = <&stdclk CLK_820_NAND>;
 89			resets = <&reset RESET_NAND>;
 90			#address-cells = <1>;
 91			#size-cells = <0>;
 92			status = "disabled";
 93		};
 94
 95		etha: ethernet@40400000 {
 96			compatible = "oxsemi,ox820-dwmac", "snps,dwmac";
 97			reg = <0x40400000 0x2000>;
 98			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
 99				     <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
100			interrupt-names = "macirq", "eth_wake_irq";
101			mac-address = [000000000000]; /* Filled in by U-Boot */
102			phy-mode = "rgmii";
103
104			clocks = <&stdclk CLK_820_ETHA>, <&gmacclk>;
105			clock-names = "gmac", "stmmaceth";
106			resets = <&reset RESET_MAC>;
107
108			/* Regmap for sys registers */
109			oxsemi,sys-ctrl = <&sys>;
110
111			status = "disabled";
112		};
113
114		apb-bridge@44000000 {
115			#address-cells = <1>;
116			#size-cells = <1>;
117			compatible = "simple-bus";
118			ranges = <0 0x44000000 0x1000000>;
119
120			pinctrl: pinctrl {
121				compatible = "oxsemi,ox820-pinctrl";
122
123				/* Regmap for sys registers */
124				oxsemi,sys-ctrl = <&sys>;
125
126				pinctrl_uart0: uart0 {
127					uart0 {
128						pins = "gpio30", "gpio31";
129						function = "fct5";
130					};
131				};
132
133				pinctrl_uart0_modem: uart0_modem {
134					uart0_modem_a {
135						pins = "gpio24", "gpio24", "gpio26", "gpio27";
136						function = "fct4";
137					};
138					uart0_modem_b {
139						pins = "gpio28", "gpio29";
140						function = "fct5";
141					};
142				};
143
144				pinctrl_uart1: uart1 {
145					uart1 {
146						pins = "gpio7", "gpio8";
147						function = "fct4";
148					};
149				};
150
151				pinctrl_uart1_modem: uart1_modem {
152					uart1_modem {
153						pins = "gpio5", "gpio6", "gpio40", "gpio41", "gpio42", "gpio43";
154						function = "fct4";
155					};
156				};
157
158				pinctrl_etha_mdio: etha_mdio {
159					etha_mdio {
160						pins = "gpio3", "gpio4";
161						function = "fct1";
162					};
163				};
164
165				pinctrl_nand: nand {
166					nand {
167						pins = "gpio12", "gpio13", "gpio14", "gpio15",
168						     "gpio16", "gpio17", "gpio18", "gpio19",
169						     "gpio20", "gpio21", "gpio22", "gpio23",
170						     "gpio24";
171						function = "fct1";
172					};
173				};
174			};
175
176			gpio0: gpio@0 {
177				compatible = "oxsemi,ox820-gpio";
178				reg = <0x000000 0x100000>;
179				interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
180				#gpio-cells = <2>;
181				gpio-controller;
182				interrupt-controller;
183				#interrupt-cells = <2>;
184				ngpios = <32>;
185				oxsemi,gpio-bank = <0>;
186				gpio-ranges = <&pinctrl 0 0 32>;
187			};
188
189			gpio1: gpio@100000 {
190				compatible = "oxsemi,ox820-gpio";
191				reg = <0x100000 0x100000>;
192				interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
193				#gpio-cells = <2>;
194				gpio-controller;
195				interrupt-controller;
196				#interrupt-cells = <2>;
197				ngpios = <18>;
198				oxsemi,gpio-bank = <1>;
199				gpio-ranges = <&pinctrl 0 32 18>;
200			};
201
202			uart0: serial@200000 {
203			       compatible = "ns16550a";
204			       reg = <0x200000 0x100000>;
205			       interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
206			       reg-shift = <0>;
207			       fifo-size = <16>;
208			       reg-io-width = <1>;
209			       current-speed = <115200>;
210			       no-loopback-test;
211			       status = "disabled";
212			       clocks = <&sysclk>;
213			       resets = <&reset RESET_UART1>;
214			};
215
216			uart1: serial@300000 {
217			       compatible = "ns16550a";
218			       reg = <0x200000 0x100000>;
219			       interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
220			       reg-shift = <0>;
221			       fifo-size = <16>;
222			       reg-io-width = <1>;
223			       current-speed = <115200>;
224			       no-loopback-test;
225			       status = "disabled";
226			       clocks = <&sysclk>;
227			       resets = <&reset RESET_UART2>;
228			};
229
230			rps@400000 {
231				#address-cells = <1>;
232				#size-cells = <1>;
233				compatible = "simple-bus";
234				ranges = <0 0x400000 0x100000>;
235
236				intc: interrupt-controller@0 {
237					compatible = "oxsemi,ox820-rps-irq", "oxsemi,ox810se-rps-irq";
238					interrupt-controller;
239					reg = <0 0x200>;
240					interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
241					#interrupt-cells = <1>;
242					valid-mask = <0xFFFFFFFF>;
243					clear-mask = <0>;
244				};
245
246				timer0: timer@200 {
247					compatible = "oxsemi,ox820-rps-timer";
248					reg = <0x200 0x40>;
249					clocks = <&sysclk>;
250					interrupt-parent = <&intc>;
251					interrupts = <4>;
252				};
253			};
254
255			sys: sys-ctrl@e00000 {
256				compatible = "oxsemi,ox820-sys-ctrl", "syscon", "simple-mfd";
257				reg = <0xe00000 0x200000>;
258
259				reset: reset-controller {
260					compatible = "oxsemi,ox820-reset", "oxsemi,ox810se-reset";
261					#reset-cells = <1>;
262				};
263
264				stdclk: stdclk {
265					compatible = "oxsemi,ox820-stdclk", "oxsemi,ox810se-stdclk";
266					#clock-cells = <1>;
267				};
268			};
269		};
270
271		apb-bridge@47000000 {
272			#address-cells = <1>;
273			#size-cells = <1>;
274			compatible = "simple-bus";
275			ranges = <0 0x47000000 0x1000000>;
276
277			scu: scu@0 {
278				compatible = "arm,arm11mp-scu";
279				reg = <0x0 0x100>;
280			};
281
282			local-timer@600 {
283				compatible = "arm,arm11mp-twd-timer";
284				reg = <0x600 0x20>;
285				interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(3)|IRQ_TYPE_LEVEL_HIGH)>;
286				clocks = <&armclk>;
287			};
288
289			gic: gic@1000 {
290				compatible = "arm,arm11mp-gic";
291				interrupt-controller;
292				#interrupt-cells = <3>;
293				reg = <0x1000 0x1000>,
294				      <0x100 0x500>;
295			};
296		};
297	};
298};