WIP FPC-III support
[linux/fpc-iii.git] / arch / mips / boot / dts / mscc / ocelot.dtsi
blob535a98284dcb56663d7ee85241a199a5f161eddc
1 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
2 /* Copyright (c) 2017 Microsemi Corporation */
4 / {
5         #address-cells = <1>;
6         #size-cells = <1>;
7         compatible = "mscc,ocelot";
9         cpus {
10                 #address-cells = <1>;
11                 #size-cells = <0>;
13                 cpu@0 {
14                         compatible = "mips,mips24KEc";
15                         device_type = "cpu";
16                         clocks = <&cpu_clk>;
17                         reg = <0>;
18                 };
19         };
21         aliases {
22                 serial0 = &uart0;
23         };
25         cpuintc: interrupt-controller {
26                 #address-cells = <0>;
27                 #interrupt-cells = <1>;
28                 interrupt-controller;
29                 compatible = "mti,cpu-interrupt-controller";
30         };
32         cpu_clk: cpu-clock {
33                 compatible = "fixed-clock";
34                 #clock-cells = <0>;
35                 clock-frequency = <500000000>;
36         };
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         };
46         ahb@70000000 {
47                 compatible = "simple-bus";
48                 #address-cells = <1>;
49                 #size-cells = <1>;
50                 ranges = <0 0x70000000 0x2000000>;
52                 interrupt-parent = <&intc>;
54                 cpu_ctrl: syscon@0 {
55                         compatible = "mscc,ocelot-cpu-syscon", "syscon";
56                         reg = <0x0 0x2c>;
57                 };
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                 };
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>;
78                         status = "disabled";
79                 };
81                 i2c: i2c@100400 {
82                         compatible = "mscc,ocelot-i2c", "snps,designware-i2c";
83                         pinctrl-0 = <&i2c_pins>;
84                         pinctrl-names = "default";
85                         reg = <0x100400 0x100>, <0x198 0x8>;
86                         #address-cells = <1>;
87                         #size-cells = <0>;
88                         interrupts = <8>;
89                         clocks = <&ahb_clk>;
91                         status = "disabled";
92                 };
94                 uart2: serial@100800 {
95                         pinctrl-0 = <&uart2_pins>;
96                         pinctrl-names = "default";
97                         compatible = "ns16550a";
98                         reg = <0x100800 0x20>;
99                         interrupts = <7>;
100                         clocks = <&ahb_clk>;
101                         reg-io-width = <4>;
102                         reg-shift = <2>;
104                         status = "disabled";
105                 };
107                 spi: spi@101000 {
108                         compatible = "mscc,ocelot-spi", "snps,dw-apb-ssi";
109                         #address-cells = <1>;
110                         #size-cells = <0>;
111                         reg = <0x101000 0x100>, <0x3c 0x18>;
112                         interrupts = <9>;
113                         clocks = <&ahb_clk>;
115                         status = "disabled";
116                 };
118                 switch@1010000 {
119                         compatible = "mscc,vsc7514-switch";
120                         reg = <0x1010000 0x10000>,
121                               <0x1030000 0x10000>,
122                               <0x1080000 0x100>,
123                               <0x10e0000 0x10000>,
124                               <0x11e0000 0x100>,
125                               <0x11f0000 0x100>,
126                               <0x1200000 0x100>,
127                               <0x1210000 0x100>,
128                               <0x1220000 0x100>,
129                               <0x1230000 0x100>,
130                               <0x1240000 0x100>,
131                               <0x1250000 0x100>,
132                               <0x1260000 0x100>,
133                               <0x1270000 0x100>,
134                               <0x1280000 0x100>,
135                               <0x1800000 0x80000>,
136                               <0x1880000 0x10000>,
137                               <0x1040000 0x10000>,
138                               <0x1050000 0x10000>,
139                               <0x1060000 0x10000>;
140                         reg-names = "sys", "rew", "qs", "ptp", "port0", "port1",
141                                     "port2", "port3", "port4", "port5", "port6",
142                                     "port7", "port8", "port9", "port10", "qsys",
143                                     "ana", "s0", "s1", "s2";
144                         interrupts = <18 21 22>;
145                         interrupt-names = "ptp_rdy", "xtr", "inj";
147                         ethernet-ports {
148                                 #address-cells = <1>;
149                                 #size-cells = <0>;
151                                 port0: port@0 {
152                                         reg = <0>;
153                                 };
154                                 port1: port@1 {
155                                         reg = <1>;
156                                 };
157                                 port2: port@2 {
158                                         reg = <2>;
159                                 };
160                                 port3: port@3 {
161                                         reg = <3>;
162                                 };
163                                 port4: port@4 {
164                                         reg = <4>;
165                                 };
166                                 port5: port@5 {
167                                         reg = <5>;
168                                 };
169                                 port6: port@6 {
170                                         reg = <6>;
171                                 };
172                                 port7: port@7 {
173                                         reg = <7>;
174                                 };
175                                 port8: port@8 {
176                                         reg = <8>;
177                                 };
178                                 port9: port@9 {
179                                         reg = <9>;
180                                 };
181                                 port10: port@10 {
182                                         reg = <10>;
183                                 };
184                         };
185                 };
187                 reset@1070008 {
188                         compatible = "mscc,ocelot-chip-reset";
189                         reg = <0x1070008 0x4>;
190                 };
192                 gpio: pinctrl@1070034 {
193                         compatible = "mscc,ocelot-pinctrl";
194                         reg = <0x1070034 0x68>;
195                         gpio-controller;
196                         #gpio-cells = <2>;
197                         gpio-ranges = <&gpio 0 0 22>;
198                         interrupt-controller;
199                         interrupts = <13>;
200                         #interrupt-cells = <2>;
202                         i2c_pins: i2c-pins {
203                                 pins = "GPIO_16", "GPIO_17";
204                                 function = "twi";
205                         };
207                         uart_pins: uart-pins {
208                                 pins = "GPIO_6", "GPIO_7";
209                                 function = "uart";
210                         };
212                         uart2_pins: uart2-pins {
213                                 pins = "GPIO_12", "GPIO_13";
214                                 function = "uart2";
215                         };
217                         miim1: miim1 {
218                                 pins = "GPIO_14", "GPIO_15";
219                                 function = "miim";
220                         };
222                 };
224                 mdio0: mdio@107009c {
225                         #address-cells = <1>;
226                         #size-cells = <0>;
227                         compatible = "mscc,ocelot-miim";
228                         reg = <0x107009c 0x24>, <0x10700f0 0x8>;
229                         interrupts = <14>;
230                         status = "disabled";
232                         phy0: ethernet-phy@0 {
233                                 reg = <0>;
234                         };
235                         phy1: ethernet-phy@1 {
236                                 reg = <1>;
237                         };
238                         phy2: ethernet-phy@2 {
239                                 reg = <2>;
240                         };
241                         phy3: ethernet-phy@3 {
242                                 reg = <3>;
243                         };
244                 };
246                 mdio1: mdio@10700c0 {
247                         #address-cells = <1>;
248                         #size-cells = <0>;
249                         compatible = "mscc,ocelot-miim";
250                         reg = <0x10700c0 0x24>;
251                         interrupts = <15>;
252                         pinctrl-names = "default";
253                         pinctrl-0 = <&miim1>;
254                         status = "disabled";
255                 };
257                 hsio: syscon@10d0000 {
258                         compatible = "mscc,ocelot-hsio", "syscon", "simple-mfd";
259                         reg = <0x10d0000 0x10000>;
261                         serdes: serdes {
262                                 compatible = "mscc,vsc7514-serdes";
263                                 #phy-cells = <2>;
264                         };
265                 };
266         };