Merge branch 'master' of git://git.denx.de/u-boot-net
[oweals/u-boot.git] / arch / arm / dts / fsl-imx8dx.dtsi
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * Copyright 2018 NXP
4  */
5
6 #include <dt-bindings/interrupt-controller/arm-gic.h>
7 #include "fsl-imx8-ca35.dtsi"
8 #include <dt-bindings/soc/imx_rsrc.h>
9 #include <dt-bindings/soc/imx8_pd.h>
10 #include <dt-bindings/clock/imx8qxp-clock.h>
11 #include <dt-bindings/input/input.h>
12 #include <dt-bindings/pinctrl/pads-imx8qxp.h>
13 #include <dt-bindings/gpio/gpio.h>
14
15 / {
16         model = "Freescale i.MX8DX";
17         compatible = "fsl,imx8dx", "fsl,imx8qxp";
18         interrupt-parent = <&gic>;
19         #address-cells = <2>;
20         #size-cells = <2>;
21
22         aliases {
23                 ethernet0 = &fec1;
24                 ethernet1 = &fec2;
25                 serial0 = &lpuart0;
26                 mmc0 = &usdhc1;
27                 mmc1 = &usdhc2;
28                 mmc2 = &usdhc3;
29                 i2c0 = &i2c0;
30                 i2c1 = &i2c1;
31                 i2c2 = &i2c2;
32                 i2c3 = &i2c3;
33         };
34
35         memory@80000000 {
36                 device_type = "memory";
37                 reg = <0x00000000 0x80000000 0 0x40000000>;
38                       /* DRAM space - 1, size : 1 GB DRAM */
39         };
40
41         reserved-memory {
42                 #address-cells = <2>;
43                 #size-cells = <2>;
44                 ranges;
45
46                 /*
47                  * reserved-memory layout
48                  * 0x8800_0000 ~ 0x8FFF_FFFF is reserved for M4
49                  * Shouldn't be used at A core and Linux side.
50                  *
51                  */
52                 decoder_boot: decoder_boot@0x84000000 {
53                         no-map;
54                         reg = <0 0x84000000 0 0x2000000>;
55                 };
56                 encoder_boot: encoder_boot@0x86000000 {
57                         no-map;
58                         reg = <0 0x86000000 0 0x2000000>;
59                 };
60                 rpmsg_reserved: rpmsg@0x90000000 {
61                         no-map;
62                         reg = <0 0x90000000 0 0x400000>;
63                 };
64                 decoder_rpc: decoder_rpc@0x90400000 {
65                         no-map;
66                         reg = <0 0x90400000 0 0x1000000>;
67                 };
68                 encoder_rpc: encoder_rpc@0x91400000 {
69                         no-map;
70                         reg = <0 0x91400000 0 0x1000000>;
71                 };
72                 dsp_reserved: dsp@0x92400000 {
73                         no-map;
74                         reg = <0 0x92400000 0 0x2000000>;
75                 };
76                 decoder_str: str@0x94400000 {
77                         no-map;
78                         reg = <0 0x94400000 0 0x1800000>;
79                 };
80                 /* global autoconfigured region for contiguous allocations */
81                 linux,cma {
82                         compatible = "shared-dma-pool";
83                         reusable;
84                         size = <0 0x28000000>;
85                         alloc-ranges = <0 0x96000000 0 0x28000000>;
86                         linux,cma-default;
87                 };
88         };
89
90         gic: interrupt-controller@51a00000 {
91                 compatible = "arm,gic-v3";
92                 reg = <0x0 0x51a00000 0 0x10000>, /* GIC Dist */
93                       <0x0 0x51b00000 0 0xC0000>; /* GICR (RD_base + SGI_base) */
94                 #interrupt-cells = <3>;
95                 interrupt-controller;
96                 interrupts = <GIC_PPI 9
97                         (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_HIGH)>;
98                 interrupt-parent = <&gic>;
99         };
100
101         mu: mu@5d1c0000 {
102                 compatible = "fsl,imx8-mu";
103                 reg = <0x0 0x5d1c0000 0x0 0x10000>;
104                 interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>;
105                 interrupt-parent = <&gic>;
106                 status = "okay";
107
108                 clk: clk {
109                         compatible = "fsl,imx8qxp-clk";
110                         #clock-cells = <1>;
111                 };
112
113                 iomuxc: iomuxc {
114                         compatible = "fsl,imx8qxp-iomuxc";
115                 };
116         };
117
118         imx8qx-pm {
119                 compatible = "simple-bus";
120                 #address-cells = <1>;
121                 #size-cells = <0>;
122
123                 pd_lsio: PD_LSIO {
124                         compatible = "nxp,imx8-pd";
125                         reg = <SC_R_LAST>;
126                         #power-domain-cells = <0>;
127                         #address-cells = <1>;
128                         #size-cells = <0>;
129
130                         pd_lsio_gpio0: PD_LSIO_GPIO_0 {
131                                 reg = <SC_R_GPIO_0>;
132                                 #power-domain-cells = <0>;
133                                 power-domains = <&pd_lsio>;
134                         };
135                         pd_lsio_gpio1: PD_LSIO_GPIO_1 {
136                                 reg = <SC_R_GPIO_1>;
137                                 #power-domain-cells = <0>;
138                                 power-domains = <&pd_lsio>;
139                         };
140                         pd_lsio_gpio2: PD_LSIO_GPIO_2 {
141                                 reg = <SC_R_GPIO_2>;
142                                 #power-domain-cells = <0>;
143                                 power-domains = <&pd_lsio>;
144                         };
145                         pd_lsio_gpio3: PD_LSIO_GPIO_3 {
146                                 reg = <SC_R_GPIO_3>;
147                                 #power-domain-cells = <0>;
148                                 power-domains = <&pd_lsio>;
149                         };
150                         pd_lsio_gpio4: PD_LSIO_GPIO_4 {
151                                 reg = <SC_R_GPIO_4>;
152                                 #power-domain-cells = <0>;
153                                 power-domains = <&pd_lsio>;
154                         };
155                         pd_lsio_gpio5: PD_LSIO_GPIO_5{
156                                 reg = <SC_R_GPIO_5>;
157                                 #power-domain-cells = <0>;
158                                 power-domains = <&pd_lsio>;
159                         };
160                         pd_lsio_gpio6: PD_LSIO_GPIO_6 {
161                                 reg = <SC_R_GPIO_6>;
162                                 #power-domain-cells = <0>;
163                                 power-domains = <&pd_lsio>;
164                         };
165                         pd_lsio_gpio7: PD_LSIO_GPIO_7 {
166                                 reg = <SC_R_GPIO_7>;
167                                 #power-domain-cells = <0>;
168                                 power-domains = <&pd_lsio>;
169                         };
170                 };
171
172                 pd_conn: PD_CONN {
173                         compatible = "nxp,imx8-pd";
174                         reg = <SC_R_LAST>;
175                         #power-domain-cells = <0>;
176                         #address-cells = <1>;
177                         #size-cells = <0>;
178
179                         pd_conn_sdch0: PD_CONN_SDHC_0 {
180                                 reg = <SC_R_SDHC_0>;
181                                 #power-domain-cells = <0>;
182                                 power-domains = <&pd_conn>;
183                         };
184                         pd_conn_sdch1: PD_CONN_SDHC_1 {
185                                 reg = <SC_R_SDHC_1>;
186                                 #power-domain-cells = <0>;
187                                 power-domains = <&pd_conn>;
188                         };
189                         pd_conn_sdch2: PD_CONN_SDHC_2 {
190                                 reg = <SC_R_SDHC_2>;
191                                 #power-domain-cells = <0>;
192                                 power-domains = <&pd_conn>;
193                         };
194                         pd_conn_enet0: PD_CONN_ENET_0 {
195                                 reg = <SC_R_ENET_0>;
196                                 #power-domain-cells = <0>;
197                                 power-domains = <&pd_conn>;
198                         };
199                         pd_conn_enet1: PD_CONN_ENET_1 {
200                                 reg = <SC_R_ENET_1>;
201                                 #power-domain-cells = <0>;
202                                 power-domains = <&pd_conn>;
203                         };
204                 };
205
206                 pd_dma: PD_DMA {
207                         compatible = "nxp,imx8-pd";
208                         reg = <SC_R_LAST>;
209                         #power-domain-cells = <0>;
210                         #address-cells = <1>;
211                         #size-cells = <0>;
212
213                         pd_dma_lpi2c0: PD_DMA_I2C_0 {
214                                 reg = <SC_R_I2C_0>;
215                                 #power-domain-cells = <0>;
216                                 power-domains = <&pd_dma>;
217                         };
218                         pd_dma_lpi2c1: PD_DMA_I2C_1 {
219                                 reg = <SC_R_I2C_1>;
220                                 #power-domain-cells = <0>;
221                                 power-domains = <&pd_dma>;
222                         };
223                         pd_dma_lpi2c2:PD_DMA_I2C_2 {
224                                 reg = <SC_R_I2C_2>;
225                                 #power-domain-cells = <0>;
226                                 power-domains = <&pd_dma>;
227                         };
228                         pd_dma_lpi2c3: PD_DMA_I2C_3 {
229                                 reg = <SC_R_I2C_3>;
230                                 #power-domain-cells = <0>;
231                                 power-domains = <&pd_dma>;
232                         };
233                         pd_dma_lpuart0: PD_DMA_UART0 {
234                                 reg = <SC_R_UART_0>;
235                                 #power-domain-cells = <0>;
236                                 power-domains = <&pd_dma>;
237                                 wakeup-irq = <225>;
238                         };
239                 };
240         };
241
242         i2c0: i2c@5a800000 {
243                 compatible = "fsl,imx8qm-lpi2c", "fsl,imx7ulp-lpi2c";
244                 reg = <0x0 0x5a800000 0x0 0x4000>;
245                 interrupts = <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>;
246                 interrupt-parent = <&gic>;
247                 clocks = <&clk IMX8QXP_I2C0_CLK>;
248                 clock-names = "per";
249                 assigned-clocks = <&clk IMX8QXP_I2C0_CLK>;
250                 assigned-clock-rates = <24000000>;
251                 power-domains = <&pd_dma_lpi2c0>;
252                 #address-cells = <1>;
253                 #size-cells = <0>;
254                 status = "disabled";
255         };
256
257         i2c1: i2c@5a810000 {
258                 compatible = "fsl,imx8qm-lpi2c", "fsl,imx7ulp-lpi2c";
259                 reg = <0x0 0x5a810000 0x0 0x4000>;
260                 interrupts = <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
261                 interrupt-parent = <&gic>;
262                 clocks = <&clk IMX8QXP_I2C1_CLK>,
263                         <&clk IMX8QXP_I2C1_IPG_CLK>;
264                 clock-names = "per", "ipg";
265                 assigned-clocks = <&clk IMX8QXP_I2C1_CLK>;
266                 assigned-clock-rates = <24000000>;
267                 power-domains = <&pd_dma_lpi2c1>;
268                 #address-cells = <1>;
269                 #size-cells = <0>;
270                 status = "disabled";
271         };
272
273         i2c2: i2c@5a820000 {
274                 compatible = "fsl,imx8qm-lpi2c", "fsl,imx7ulp-lpi2c";
275                 reg = <0x0 0x5a820000 0x0 0x4000>;
276                 interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>;
277                 interrupt-parent = <&gic>;
278                 clocks = <&clk IMX8QXP_I2C2_CLK>;
279                 clock-names = "per";
280                 assigned-clocks = <&clk IMX8QXP_I2C2_CLK>;
281                 assigned-clock-rates = <24000000>;
282                 power-domains = <&pd_dma_lpi2c2>;
283                 #address-cells = <1>;
284                 #size-cells = <0>;
285                 status = "disabled";
286         };
287
288         i2c3: i2c@5a830000 {
289                 compatible = "fsl,imx8qm-lpi2c", "fsl,imx7ulp-lpi2c";
290                 reg = <0x0 0x5a830000 0x0 0x4000>;
291                 interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
292                 interrupt-parent = <&gic>;
293                 clocks = <&clk IMX8QXP_I2C3_CLK>,
294                         <&clk IMX8QXP_I2C3_IPG_CLK>;
295                 clock-names = "per", "ipg";
296                 assigned-clocks = <&clk IMX8QXP_I2C3_CLK>;
297                 assigned-clock-rates = <24000000>;
298                 power-domains = <&pd_dma_lpi2c3>;
299                 #address-cells = <1>;
300                 #size-cells = <0>;
301                 status = "disabled";
302         };
303
304         gpio0: gpio@5d080000 {
305                 compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";
306                 reg = <0x0 0x5d080000 0x0 0x10000>;
307                 interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
308                 gpio-controller;
309                 #gpio-cells = <2>;
310                 power-domains = <&pd_lsio_gpio0>;
311                 interrupt-controller;
312                 #interrupt-cells = <2>;
313         };
314
315         gpio1: gpio@5d090000 {
316                 compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";
317                 reg = <0x0 0x5d090000 0x0 0x10000>;
318                 interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
319                 gpio-controller;
320                 #gpio-cells = <2>;
321                 power-domains = <&pd_lsio_gpio1>;
322                 interrupt-controller;
323                 #interrupt-cells = <2>;
324         };
325
326         gpio2: gpio@5d0a0000 {
327                 compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";
328                 reg = <0x0 0x5d0a0000 0x0 0x10000>;
329                 interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
330                 gpio-controller;
331                 #gpio-cells = <2>;
332                 power-domains = <&pd_lsio_gpio2>;
333                 interrupt-controller;
334                 #interrupt-cells = <2>;
335         };
336
337         gpio3: gpio@5d0b0000 {
338                 compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";
339                 reg = <0x0 0x5d0b0000 0x0 0x10000>;
340                 interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
341                 gpio-controller;
342                 #gpio-cells = <2>;
343                 power-domains = <&pd_lsio_gpio3>;
344                 interrupt-controller;
345                 #interrupt-cells = <2>;
346         };
347
348         gpio4: gpio@5d0c0000 {
349                 compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";
350                 reg = <0x0 0x5d0c0000 0x0 0x10000>;
351                 interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
352                 gpio-controller;
353                 #gpio-cells = <2>;
354                 power-domains = <&pd_lsio_gpio4>;
355                 interrupt-controller;
356                 #interrupt-cells = <2>;
357         };
358
359         gpio5: gpio@5d0d0000 {
360                 compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";
361                 reg = <0x0 0x5d0d0000 0x0 0x10000>;
362                 interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
363                 gpio-controller;
364                 #gpio-cells = <2>;
365                 power-domains = <&pd_lsio_gpio5>;
366                 interrupt-controller;
367                 #interrupt-cells = <2>;
368         };
369
370         gpio6: gpio@5d0e0000 {
371                 compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";
372                 reg = <0x0 0x5d0e0000 0x0 0x10000>;
373                 interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>;
374                 gpio-controller;
375                 #gpio-cells = <2>;
376                 power-domains = <&pd_lsio_gpio6>;
377                 interrupt-controller;
378                 #interrupt-cells = <2>;
379         };
380
381         gpio7: gpio@5d0f0000 {
382                 compatible = "fsl,imx8qm-gpio", "fsl,imx35-gpio";
383                 reg = <0x0 0x5d0f0000 0x0 0x10000>;
384                 interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
385                 gpio-controller;
386                 #gpio-cells = <2>;
387                 power-domains = <&pd_lsio_gpio7>;
388                 interrupt-controller;
389                 #interrupt-cells = <2>;
390         };
391
392         lpuart0: serial@5a060000 {
393                 compatible = "fsl,imx8qm-lpuart";
394                 reg = <0x0 0x5a060000 0x0 0x1000>;
395                 interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>;
396                 clocks = <&clk IMX8QXP_UART0_CLK>,
397                          <&clk IMX8QXP_UART0_IPG_CLK>;
398                 clock-names = "per", "ipg";
399                 assigned-clocks = <&clk IMX8QXP_UART0_CLK>;
400                 assigned-clock-rates = <80000000>;
401                 power-domains = <&pd_dma_lpuart0>;
402                 status = "disabled";
403         };
404
405         usdhc1: usdhc@5b010000 {
406                 compatible = "fsl,imx8qm-usdhc", "fsl,imx6sl-usdhc";
407                 interrupt-parent = <&gic>;
408                 interrupts = <GIC_SPI 232 IRQ_TYPE_LEVEL_HIGH>;
409                 reg = <0x0 0x5b010000 0x0 0x10000>;
410                 clocks = <&clk IMX8QXP_SDHC0_IPG_CLK>,
411                         <&clk IMX8QXP_SDHC0_CLK>,
412                         <&clk IMX8QXP_CLK_DUMMY>;
413                 clock-names = "ipg", "per", "ahb";
414                 assigned-clocks = <&clk IMX8QXP_SDHC0_SEL>, <&clk IMX8QXP_SDHC0_DIV>;
415                 assigned-clock-parents = <&clk IMX8QXP_CONN_PLL0_CLK>;
416                 assigned-clock-rates = <0>, <400000000>;
417                 power-domains = <&pd_conn_sdch0>;
418                 fsl,tuning-start-tap = <20>;
419                 fsl,tuning-step= <2>;
420                 status = "disabled";
421         };
422
423         usdhc2: usdhc@5b020000 {
424                 compatible = "fsl,imx8qm-usdhc", "fsl,imx6sl-usdhc";
425                 interrupt-parent = <&gic>;
426                 interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>;
427                 reg = <0x0 0x5b020000 0x0 0x10000>;
428                 clocks = <&clk IMX8QXP_SDHC1_IPG_CLK>,
429                         <&clk IMX8QXP_SDHC1_CLK>,
430                         <&clk IMX8QXP_CLK_DUMMY>;
431                 clock-names = "ipg", "per", "ahb";
432                 assigned-clocks = <&clk IMX8QXP_SDHC1_SEL>, <&clk IMX8QXP_SDHC1_DIV>;
433                 assigned-clock-parents = <&clk IMX8QXP_CONN_PLL0_CLK>;
434                 assigned-clock-rates = <0>, <200000000>;
435                 power-domains = <&pd_conn_sdch1>;
436                 fsl,tuning-start-tap = <20>;
437                 fsl,tuning-step= <2>;
438                 status = "disabled";
439         };
440
441         usdhc3: usdhc@5b030000 {
442                 compatible = "fsl,imx8qm-usdhc", "fsl,imx6sl-usdhc";
443                 interrupt-parent = <&gic>;
444                 interrupts = <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>;
445                 reg = <0x0 0x5b030000 0x0 0x10000>;
446                 clocks = <&clk IMX8QXP_SDHC2_IPG_CLK>,
447                         <&clk IMX8QXP_SDHC2_CLK>,
448                         <&clk IMX8QXP_CLK_DUMMY>;
449                 clock-names = "ipg", "per", "ahb";
450                 assigned-clocks = <&clk IMX8QXP_SDHC2_SEL>, <&clk IMX8QXP_SDHC2_DIV>;
451                 assigned-clock-parents = <&clk IMX8QXP_CONN_PLL0_CLK>;
452                 assigned-clock-rates = <0>, <200000000>;
453                 power-domains = <&pd_conn_sdch2>;
454                 status = "disabled";
455         };
456
457         fec1: ethernet@5b040000 {
458                 compatible = "fsl,imx7d-fec", "fsl,imx8qm-fec";
459                 reg = <0x0 0x5b040000 0x0 0x10000>;
460                 interrupts = <GIC_SPI 258 IRQ_TYPE_LEVEL_HIGH>,
461                                 <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
462                                 <GIC_SPI 257 IRQ_TYPE_LEVEL_HIGH>,
463                                 <GIC_SPI 259 IRQ_TYPE_LEVEL_HIGH>;
464                 clocks = <&clk IMX8QXP_ENET0_IPG_CLK>, <&clk IMX8QXP_ENET0_AHB_CLK>,
465                         <&clk IMX8QXP_ENET0_RGMII_TX_CLK>, <&clk IMX8QXP_ENET0_PTP_CLK>;
466                 clock-names = "ipg", "ahb", "enet_clk_ref", "ptp";
467                 assigned-clocks = <&clk IMX8QXP_ENET0_REF_DIV>, <&clk IMX8QXP_ENET0_PTP_CLK>;
468                 assigned-clock-rates = <125000000>, <125000000>;
469                 fsl,num-tx-queues=<3>;
470                 fsl,num-rx-queues=<3>;
471                 power-domains = <&pd_conn_enet0>;
472                 status = "disabled";
473         };
474
475         fec2: ethernet@5b050000 {
476                 compatible = "fsl,imx7d-fec", "fsl,imx8qm-fec";
477                 reg = <0x0 0x5b050000 0x0 0x10000>;
478                 interrupts = <GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH>,
479                                 <GIC_SPI 260 IRQ_TYPE_LEVEL_HIGH>,
480                                 <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>,
481                                 <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH>;
482                 clocks = <&clk IMX8QXP_ENET1_IPG_CLK>, <&clk IMX8QXP_ENET1_AHB_CLK>,
483                         <&clk IMX8QXP_ENET1_RGMII_TX_CLK>, <&clk IMX8QXP_ENET1_PTP_CLK>;
484                 clock-names = "ipg", "ahb", "enet_clk_ref", "ptp";
485                 assigned-clocks = <&clk IMX8QXP_ENET1_REF_DIV>, <&clk IMX8QXP_ENET1_PTP_CLK>;
486                 assigned-clock-rates = <125000000>, <125000000>;
487                 fsl,num-tx-queues=<3>;
488                 fsl,num-rx-queues=<3>;
489                 power-domains = <&pd_conn_enet1>;
490                 status = "disabled";
491         };
492 };
493
494 &A35_0 {
495         clocks = <&clk IMX8QXP_A35_DIV>;
496 };
497
498 /delete-node/ &A35_2;
499 /delete-node/ &A35_3;