GNU Linux-libre 4.19.263-gnu1
[releases.git] / arch / mips / boot / dts / mscc / ocelot.dtsi
1 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
2 /* Copyright (c) 2017 Microsemi Corporation */
3
4 / {
5         #address-cells = <1>;
6         #size-cells = <1>;
7         compatible = "mscc,ocelot";
8
9         cpus {
10                 #address-cells = <1>;
11                 #size-cells = <0>;
12
13                 cpu@0 {
14                         compatible = "mips,mips24KEc";
15                         device_type = "cpu";
16                         clocks = <&cpu_clk>;
17                         reg = <0>;
18                 };
19         };
20
21         aliases {
22                 serial0 = &uart0;
23         };
24
25         cpuintc: interrupt-controller {
26                 #address-cells = <0>;
27                 #interrupt-cells = <1>;
28                 interrupt-controller;
29                 compatible = "mti,cpu-interrupt-controller";
30         };
31
32         cpu_clk: cpu-clock {
33                 compatible = "fixed-clock";
34                 #clock-cells = <0>;
35                 clock-frequency = <500000000>;
36         };
37
38         ahb_clk: ahb-clk {
39                 compatible = "fixed-factor-clock";
40                 #clock-cells = <0>;
41                 clocks = <&cpu_clk>;
42                 clock-div = <2>;
43                 clock-mult = <1>;
44         };
45
46         ahb@70000000 {
47                 compatible = "simple-bus";
48                 #address-cells = <1>;
49                 #size-cells = <1>;
50                 ranges = <0 0x70000000 0x2000000>;
51
52                 interrupt-parent = <&intc>;
53
54                 cpu_ctrl: syscon@0 {
55                         compatible = "mscc,ocelot-cpu-syscon", "syscon";
56                         reg = <0x0 0x2c>;
57                 };
58
59                 intc: interrupt-controller@70 {
60                         compatible = "mscc,ocelot-icpu-intr";
61                         reg = <0x70 0x70>;
62                         #interrupt-cells = <1>;
63                         interrupt-controller;
64                         interrupt-parent = <&cpuintc>;
65                         interrupts = <2>;
66                 };
67
68                 uart0: serial@100000 {
69                         pinctrl-0 = <&uart_pins>;
70                         pinctrl-names = "default";
71                         compatible = "ns16550a";
72                         reg = <0x100000 0x20>;
73                         interrupts = <6>;
74                         clocks = <&ahb_clk>;
75                         reg-io-width = <4>;
76                         reg-shift = <2>;
77
78                         status = "disabled";
79                 };
80
81                 uart2: serial@100800 {
82                         pinctrl-0 = <&uart2_pins>;
83                         pinctrl-names = "default";
84                         compatible = "ns16550a";
85                         reg = <0x100800 0x20>;
86                         interrupts = <7>;
87                         clocks = <&ahb_clk>;
88                         reg-io-width = <4>;
89                         reg-shift = <2>;
90
91                         status = "disabled";
92                 };
93
94                 spi: spi@101000 {
95                         compatible = "mscc,ocelot-spi", "snps,dw-apb-ssi";
96                         #address-cells = <1>;
97                         #size-cells = <0>;
98                         reg = <0x101000 0x100>, <0x3c 0x18>;
99                         interrupts = <9>;
100                         clocks = <&ahb_clk>;
101
102                         status = "disabled";
103                 };
104
105                 switch@1010000 {
106                         compatible = "mscc,vsc7514-switch";
107                         reg = <0x1010000 0x10000>,
108                               <0x1030000 0x10000>,
109                               <0x1080000 0x100>,
110                               <0x10d0000 0x10000>,
111                               <0x11e0000 0x100>,
112                               <0x11f0000 0x100>,
113                               <0x1200000 0x100>,
114                               <0x1210000 0x100>,
115                               <0x1220000 0x100>,
116                               <0x1230000 0x100>,
117                               <0x1240000 0x100>,
118                               <0x1250000 0x100>,
119                               <0x1260000 0x100>,
120                               <0x1270000 0x100>,
121                               <0x1280000 0x100>,
122                               <0x1800000 0x80000>,
123                               <0x1880000 0x10000>;
124                         reg-names = "sys", "rew", "qs", "hsio", "port0",
125                                     "port1", "port2", "port3", "port4", "port5",
126                                     "port6", "port7", "port8", "port9", "port10",
127                                     "qsys", "ana";
128                         interrupts = <21 22>;
129                         interrupt-names = "xtr", "inj";
130
131                         ethernet-ports {
132                                 #address-cells = <1>;
133                                 #size-cells = <0>;
134
135                                 port0: port@0 {
136                                         reg = <0>;
137                                 };
138                                 port1: port@1 {
139                                         reg = <1>;
140                                 };
141                                 port2: port@2 {
142                                         reg = <2>;
143                                 };
144                                 port3: port@3 {
145                                         reg = <3>;
146                                 };
147                                 port4: port@4 {
148                                         reg = <4>;
149                                 };
150                                 port5: port@5 {
151                                         reg = <5>;
152                                 };
153                                 port6: port@6 {
154                                         reg = <6>;
155                                 };
156                                 port7: port@7 {
157                                         reg = <7>;
158                                 };
159                                 port8: port@8 {
160                                         reg = <8>;
161                                 };
162                                 port9: port@9 {
163                                         reg = <9>;
164                                 };
165                                 port10: port@10 {
166                                         reg = <10>;
167                                 };
168                         };
169                 };
170
171                 reset@1070008 {
172                         compatible = "mscc,ocelot-chip-reset";
173                         reg = <0x1070008 0x4>;
174                 };
175
176                 gpio: pinctrl@1070034 {
177                         compatible = "mscc,ocelot-pinctrl";
178                         reg = <0x1070034 0x68>;
179                         gpio-controller;
180                         #gpio-cells = <2>;
181                         gpio-ranges = <&gpio 0 0 22>;
182                         interrupt-controller;
183                         interrupts = <13>;
184                         #interrupt-cells = <2>;
185
186                         uart_pins: uart-pins {
187                                 pins = "GPIO_6", "GPIO_7";
188                                 function = "uart";
189                         };
190
191                         uart2_pins: uart2-pins {
192                                 pins = "GPIO_12", "GPIO_13";
193                                 function = "uart2";
194                         };
195
196                         miim1: miim1 {
197                                 pins = "GPIO_14", "GPIO_15";
198                                 function = "miim1";
199                         };
200                 };
201
202                 mdio0: mdio@107009c {
203                         #address-cells = <1>;
204                         #size-cells = <0>;
205                         compatible = "mscc,ocelot-miim";
206                         reg = <0x107009c 0x24>, <0x10700f0 0x8>;
207                         interrupts = <14>;
208                         status = "disabled";
209
210                         phy0: ethernet-phy@0 {
211                                 reg = <0>;
212                         };
213                         phy1: ethernet-phy@1 {
214                                 reg = <1>;
215                         };
216                         phy2: ethernet-phy@2 {
217                                 reg = <2>;
218                         };
219                         phy3: ethernet-phy@3 {
220                                 reg = <3>;
221                         };
222                 };
223
224                 mdio1: mdio@10700c0 {
225                         #address-cells = <1>;
226                         #size-cells = <0>;
227                         compatible = "mscc,ocelot-miim";
228                         reg = <0x10700c0 0x24>;
229                         interrupts = <15>;
230                         pinctrl-names = "default";
231                         pinctrl-0 = <&miim1>;
232                         status = "disabled";
233                 };
234         };
235 };