1// SPDX-License-Identifier: GPL-2.0
2#include "versatile-ab.dts"
3
4/ {
5	model = "ARM Versatile PB";
6	compatible = "arm,versatile-pb";
7
8	amba {
9		/* The Versatile PB is using more SIC IRQ lines than the AB */
10		sic: interrupt-controller@10003000 {
11			clear-mask = <0xffffffff>;
12			/*
13			 * Valid interrupt lines mask according to
14			 * figure 3-30 page 3-74 of ARM DUI 0224B
15			 */
16			valid-mask = <0x7fe003ff>;
17		};
18
19		gpio2: gpio@101e6000 {
20			compatible = "arm,pl061", "arm,primecell";
21			reg = <0x101e6000 0x1000>;
22			interrupts = <8>;
23			gpio-controller;
24			#gpio-cells = <2>;
25			interrupt-controller;
26			#interrupt-cells = <2>;
27			clocks = <&pclk>;
28			clock-names = "apb_pclk";
29		};
30
31		gpio3: gpio@101e7000 {
32			compatible = "arm,pl061", "arm,primecell";
33			reg = <0x101e7000 0x1000>;
34			interrupts = <9>;
35			gpio-controller;
36			#gpio-cells = <2>;
37			interrupt-controller;
38			#interrupt-cells = <2>;
39			clocks = <&pclk>;
40			clock-names = "apb_pclk";
41		};
42
43		pci@10001000 {
44			compatible = "arm,versatile-pci";
45			device_type = "pci";
46			reg = <0x10001000 0x1000
47			       0x41000000 0x10000
48			       0x42000000 0x100000>;
49			bus-range = <0 0xff>;
50			#address-cells = <3>;
51			#size-cells = <2>;
52			#interrupt-cells = <1>;
53
54			ranges = <0x01000000 0 0x00000000 0x43000000 0 0x00010000   /* downstream I/O */
55				  0x02000000 0 0x50000000 0x50000000 0 0x10000000   /* non-prefetchable memory */
56				  0x42000000 0 0x60000000 0x60000000 0 0x10000000>; /* prefetchable memory */
57
58			interrupt-map-mask = <0x1800 0 0 7>;
59			interrupt-map = <0x1800 0 0 1 &sic 28
60					 0x1800 0 0 2 &sic 29
61					 0x1800 0 0 3 &sic 30
62					 0x1800 0 0 4 &sic 27
63
64					 0x1000 0 0 1 &sic 27
65					 0x1000 0 0 2 &sic 28
66					 0x1000 0 0 3 &sic 29
67					 0x1000 0 0 4 &sic 30
68
69					 0x0800 0 0 1 &sic 30
70					 0x0800 0 0 2 &sic 27
71					 0x0800 0 0 3 &sic 28
72					 0x0800 0 0 4 &sic 29
73
74					 0x0000 0 0 1 &sic 29
75					 0x0000 0 0 2 &sic 30
76					 0x0000 0 0 3 &sic 27
77					 0x0000 0 0 4 &sic 28>;
78		};
79
80		fpga {
81			mmc@5000 {
82				/*
83				 * Overrides the interrupt assignment from
84				 * the Versatile AB board file.
85				 */
86				interrupts-extended = <&sic 22 &sic 23>;
87			};
88			serial@9000 {
89				compatible = "arm,pl011", "arm,primecell";
90				reg = <0x9000 0x1000>;
91				interrupt-parent = <&sic>;
92				interrupts = <6>;
93				clocks = <&xtal24mhz>, <&pclk>;
94				clock-names = "uartclk", "apb_pclk";
95			};
96			sci@a000 {
97				compatible = "arm,primecell";
98				reg = <0xa000 0x1000>;
99				interrupt-parent = <&sic>;
100				interrupts = <5>;
101				clocks = <&xtal24mhz>;
102				clock-names = "apb_pclk";
103			};
104			mmc@b000 {
105				compatible = "arm,pl180", "arm,primecell";
106				reg = <0xb000 0x1000>;
107				interrupt-parent = <&sic>;
108				interrupts = <1>, <2>;
109				clocks = <&xtal24mhz>, <&pclk>;
110				clock-names = "mclk", "apb_pclk";
111			};
112		};
113	};
114};
115