GNU Linux-libre 6.1.90-gnu
[releases.git] / arch / arm / boot / dts / ox810se.dtsi
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * ox810se.dtsi - Device tree file for Oxford Semiconductor OX810SE SoC
4  *
5  * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
6  */
7
8 #include <dt-bindings/clock/oxsemi,ox810se.h>
9 #include <dt-bindings/reset/oxsemi,ox810se.h>
10
11 / {
12         #address-cells = <1>;
13         #size-cells = <1>;
14         compatible = "oxsemi,ox810se";
15
16         cpus {
17                 #address-cells = <0>;
18                 #size-cells = <0>;
19
20                 cpu {
21                         device_type = "cpu";
22                         compatible = "arm,arm926ej-s";
23                         clocks = <&armclk>;
24                 };
25         };
26
27         memory {
28                 device_type = "memory";
29                 /* Max 256MB @ 0x48000000 */
30                 reg = <0x48000000 0x10000000>;
31         };
32
33         clocks {
34                 osc: oscillator {
35                         compatible = "fixed-clock";
36                         #clock-cells = <0>;
37                         clock-frequency = <25000000>;
38                 };
39
40                 gmacclk: gmacclk {
41                         compatible = "fixed-clock";
42                         #clock-cells = <0>;
43                         clock-frequency = <125000000>;
44                 };
45
46                 rpsclk: rpsclk {
47                         compatible = "fixed-factor-clock";
48                         #clock-cells = <0>;
49                         clock-div = <1>;
50                         clock-mult = <1>;
51                         clocks = <&osc>;
52                 };
53
54                 pll400: pll400 {
55                         compatible = "fixed-clock";
56                         #clock-cells = <0>;
57                         clock-frequency = <733333333>;
58                 };
59
60                 sysclk: sysclk {
61                         compatible = "fixed-factor-clock";
62                         #clock-cells = <0>;
63                         clock-div = <4>;
64                         clock-mult = <1>;
65                         clocks = <&pll400>;
66                 };
67
68                 armclk: armclk {
69                         compatible = "fixed-factor-clock";
70                         #clock-cells = <0>;
71                         clock-div = <2>;
72                         clock-mult = <1>;
73                         clocks = <&pll400>;
74                 };
75         };
76
77         soc {
78                 #address-cells = <1>;
79                 #size-cells = <1>;
80                 compatible = "simple-bus";
81                 ranges;
82                 interrupt-parent = <&intc>;
83
84                 etha: ethernet@40400000 {
85                         compatible = "oxsemi,ox810se-dwmac", "snps,dwmac";
86                         reg = <0x40400000 0x2000>;
87                         interrupts = <8>;
88                         interrupt-names = "macirq";
89                         mac-address = [000000000000]; /* Filled in by U-Boot */
90                         phy-mode = "rgmii";
91
92                         clocks = <&stdclk 6>, <&gmacclk>;
93                         clock-names = "gmac", "stmmaceth";
94                         resets = <&reset 6>;
95
96                         /* Regmap for sys registers */
97                         oxsemi,sys-ctrl = <&sys>;
98
99                         status = "disabled";
100                 };
101
102                 apb-bridge@44000000 {
103                         #address-cells = <1>;
104                         #size-cells = <1>;
105                         compatible = "simple-bus";
106                         ranges = <0 0x44000000 0x1000000>;
107
108                         pinctrl: pinctrl {
109                                 compatible = "oxsemi,ox810se-pinctrl";
110
111                                 /* Regmap for sys registers */
112                                 oxsemi,sys-ctrl = <&sys>;
113
114                                 pinctrl_uart0: uart0 {
115                                         uart0a {
116                                                 pins = "gpio31";
117                                                 function = "fct3";
118                                         };
119                                         uart0b {
120                                                 pins = "gpio32";
121                                                 function = "fct3";
122                                         };
123                                 };
124
125                                 pinctrl_uart0_modem: uart0_modem {
126                                         uart0c {
127                                                 pins = "gpio27";
128                                                 function = "fct3";
129                                         };
130                                         uart0d {
131                                                 pins = "gpio28";
132                                                 function = "fct3";
133                                         };
134                                         uart0e {
135                                                 pins = "gpio29";
136                                                 function = "fct3";
137                                         };
138                                         uart0f {
139                                                 pins = "gpio30";
140                                                 function = "fct3";
141                                         };
142                                         uart0g {
143                                                 pins = "gpio33";
144                                                 function = "fct3";
145                                         };
146                                         uart0h {
147                                                 pins = "gpio34";
148                                                 function = "fct3";
149                                         };
150                                 };
151
152                                 pinctrl_uart1: uart1 {
153                                         uart1a {
154                                                 pins = "gpio20";
155                                                 function = "fct3";
156                                         };
157                                         uart1b {
158                                                 pins = "gpio22";
159                                                 function = "fct3";
160                                         };
161                                 };
162
163                                 pinctrl_uart1_modem: uart1_modem {
164                                         uart1c {
165                                                 pins = "gpio8";
166                                                 function = "fct3";
167                                         };
168                                         uart1d {
169                                                 pins = "gpio9";
170                                                 function = "fct3";
171                                         };
172                                         uart1e {
173                                                 pins = "gpio23";
174                                                 function = "fct3";
175                                         };
176                                         uart1f {
177                                                 pins = "gpio24";
178                                                 function = "fct3";
179                                         };
180                                         uart1g {
181                                                 pins = "gpio25";
182                                                 function = "fct3";
183                                         };
184                                         uart1h {
185                                                 pins = "gpio26";
186                                                 function = "fct3";
187                                         };
188                                 };
189
190                                 pinctrl_uart2: uart2 {
191                                         uart2a {
192                                                 pins = "gpio6";
193                                                 function = "fct3";
194                                         };
195                                         uart2b {
196                                                 pins = "gpio7";
197                                                 function = "fct3";
198                                         };
199                                 };
200
201                                 pinctrl_uart2_modem: uart2_modem {
202                                         uart2c {
203                                                 pins = "gpio0";
204                                                 function = "fct3";
205                                         };
206                                         uart2d {
207                                                 pins = "gpio1";
208                                                 function = "fct3";
209                                         };
210                                         uart2e {
211                                                 pins = "gpio2";
212                                                 function = "fct3";
213                                         };
214                                         uart2f {
215                                                 pins = "gpio3";
216                                                 function = "fct3";
217                                         };
218                                         uart2g {
219                                                 pins = "gpio4";
220                                                 function = "fct3";
221                                         };
222                                         uart2h {
223                                                 pins = "gpio5";
224                                                 function = "fct3";
225                                         };
226                                 };
227                         };
228
229                         gpio0: gpio@0 {
230                                 compatible = "oxsemi,ox810se-gpio";
231                                 reg = <0x000000 0x100000>;
232                                 interrupts = <21>;
233                                 #gpio-cells = <2>;
234                                 gpio-controller;
235                                 interrupt-controller;
236                                 #interrupt-cells = <2>;
237                                 ngpios = <32>;
238                                 oxsemi,gpio-bank = <0>;
239                                 gpio-ranges = <&pinctrl 0 0 32>;
240                         };
241
242                         gpio1: gpio@100000 {
243                                 compatible = "oxsemi,ox810se-gpio";
244                                 reg = <0x100000 0x100000>;
245                                 interrupts = <22>;
246                                 #gpio-cells = <2>;
247                                 gpio-controller;
248                                 interrupt-controller;
249                                 #interrupt-cells = <2>;
250                                 ngpios = <3>;
251                                 oxsemi,gpio-bank = <1>;
252                                 gpio-ranges = <&pinctrl 0 32 3>;
253                         };
254
255                         uart0: serial@200000 {
256                                compatible = "ns16550a";
257                                reg = <0x200000 0x100000>;
258                                clocks = <&sysclk>;
259                                interrupts = <23>;
260                                reg-shift = <0>;
261                                fifo-size = <16>;
262                                reg-io-width = <1>;
263                                current-speed = <115200>;
264                                no-loopback-test;
265                                status = "disabled";
266                                resets = <&reset RESET_UART1>;
267                         };
268
269                         uart1: serial@300000 {
270                                compatible = "ns16550a";
271                                reg = <0x300000 0x100000>;
272                                clocks = <&sysclk>;
273                                interrupts = <24>;
274                                reg-shift = <0>;
275                                fifo-size = <16>;
276                                reg-io-width = <1>;
277                                current-speed = <115200>;
278                                no-loopback-test;
279                                status = "disabled";
280                                resets = <&reset RESET_UART2>;
281                         };
282
283                         uart2: serial@900000 {
284                                compatible = "ns16550a";
285                                reg = <0x900000 0x100000>;
286                                clocks = <&sysclk>;
287                                interrupts = <29>;
288                                reg-shift = <0>;
289                                fifo-size = <16>;
290                                reg-io-width = <1>;
291                                current-speed = <115200>;
292                                no-loopback-test;
293                                status = "disabled";
294                                resets = <&reset RESET_UART3>;
295                         };
296
297                         uart3: serial@a00000 {
298                                compatible = "ns16550a";
299                                reg = <0xa00000 0x100000>;
300                                clocks = <&sysclk>;
301                                interrupts = <30>;
302                                reg-shift = <0>;
303                                fifo-size = <16>;
304                                reg-io-width = <1>;
305                                current-speed = <115200>;
306                                no-loopback-test;
307                                status = "disabled";
308                                resets = <&reset RESET_UART4>;
309                         };
310                 };
311
312                 apb-bridge@45000000 {
313                         #address-cells = <1>;
314                         #size-cells = <1>;
315                         compatible = "simple-bus";
316                         ranges = <0 0x45000000 0x1000000>;
317
318                         sys: sys-ctrl@0 {
319                                 compatible = "oxsemi,ox810se-sys-ctrl", "syscon", "simple-mfd";
320                                 reg = <0x000000 0x100000>;
321
322                                 reset: reset-controller {
323                                         compatible = "oxsemi,ox810se-reset";
324                                         #reset-cells = <1>;
325                                 };
326
327                                 stdclk: stdclk {
328                                         compatible = "oxsemi,ox810se-stdclk";
329                                         #clock-cells = <1>;
330                                 };
331                         };
332
333                         rps@300000 {
334                                 #address-cells = <1>;
335                                 #size-cells = <1>;
336                                 compatible = "simple-bus";
337                                 ranges = <0 0x300000 0x100000>;
338
339                                 intc: interrupt-controller@0 {
340                                         compatible = "oxsemi,ox810se-rps-irq";
341                                         interrupt-controller;
342                                         reg = <0 0x200>;
343                                         #interrupt-cells = <1>;
344                                         valid-mask = <0xffffffff>;
345                                         clear-mask = <0xffffffff>;
346                                 };
347
348                                 timer0: timer@200 {
349                                         compatible = "oxsemi,ox810se-rps-timer";
350                                         reg = <0x200 0x40>;
351                                         clocks = <&rpsclk>;
352                                         interrupts = <4 5>;
353                                 };
354                         };
355                 };
356         };
357 };