blob: 5a34aae43838ee64b2337a2c4b0b1546eaa17094 [file] [log] [blame]
Andre Przywara974fc952022-08-19 16:21:29 +01001// SPDX-License-Identifier: (GPL-2.0 OR MIT)
Achin Gupta4f6ad662013-10-25 09:08:21 +01002/*
Andre Przywara974fc952022-08-19 16:21:29 +01003 * ARM Ltd. Fast Models
Achin Gupta4f6ad662013-10-25 09:08:21 +01004 *
Andre Przywara974fc952022-08-19 16:21:29 +01005 * Copyright (c) 2012-2022 ARM Ltd.
6 *
7 * Versatile Express (VE) system model
8 * Motherboard component
9 *
10 * VEMotherBoard.lisa
Achin Gupta4f6ad662013-10-25 09:08:21 +010011 */
Andre Przywara974fc952022-08-19 16:21:29 +010012/ {
13 v2m_clk24mhz: clk24mhz {
14 compatible = "fixed-clock";
15 #clock-cells = <0>;
16 clock-frequency = <24000000>;
17 clock-output-names = "v2m:clk24mhz";
18 };
Achin Gupta4f6ad662013-10-25 09:08:21 +010019
Andre Przywara974fc952022-08-19 16:21:29 +010020 v2m_refclk1mhz: refclk1mhz {
21 compatible = "fixed-clock";
22 #clock-cells = <0>;
23 clock-frequency = <1000000>;
24 clock-output-names = "v2m:refclk1mhz";
25 };
Achin Gupta4f6ad662013-10-25 09:08:21 +010026
Andre Przywara974fc952022-08-19 16:21:29 +010027 v2m_refclk32khz: refclk32khz {
28 compatible = "fixed-clock";
29 #clock-cells = <0>;
30 clock-frequency = <32768>;
31 clock-output-names = "v2m:refclk32khz";
32 };
Achin Gupta4f6ad662013-10-25 09:08:21 +010033
Andre Przywara974fc952022-08-19 16:21:29 +010034 v2m_fixed_3v3: v2m-3v3 {
35 compatible = "regulator-fixed";
36 regulator-name = "3V3";
37 regulator-min-microvolt = <3300000>;
38 regulator-max-microvolt = <3300000>;
39 regulator-always-on;
40 };
Achin Gupta4f6ad662013-10-25 09:08:21 +010041
Andre Przywara974fc952022-08-19 16:21:29 +010042 mcc {
43 compatible = "arm,vexpress,config-bus";
44 arm,vexpress,config-bridge = <&v2m_sysreg>;
Achin Gupta4f6ad662013-10-25 09:08:21 +010045
Andre Przywara974fc952022-08-19 16:21:29 +010046 v2m_oscclk1: oscclk1 {
47 /* CLCD clock */
48 compatible = "arm,vexpress-osc";
49 arm,vexpress-sysreg,func = <1 1>;
50 freq-range = <23750000 63500000>;
Achin Gupta4f6ad662013-10-25 09:08:21 +010051 #clock-cells = <0>;
Andre Przywara974fc952022-08-19 16:21:29 +010052 clock-output-names = "v2m:oscclk1";
Achin Gupta4f6ad662013-10-25 09:08:21 +010053 };
54
Andre Przywara974fc952022-08-19 16:21:29 +010055 reset {
56 compatible = "arm,vexpress-reset";
57 arm,vexpress-sysreg,func = <5 0>;
Achin Gupta4f6ad662013-10-25 09:08:21 +010058 };
59
Andre Przywara974fc952022-08-19 16:21:29 +010060 muxfpga {
61 compatible = "arm,vexpress-muxfpga";
62 arm,vexpress-sysreg,func = <7 0>;
Achin Gupta4f6ad662013-10-25 09:08:21 +010063 };
64
Andre Przywara974fc952022-08-19 16:21:29 +010065 shutdown {
66 compatible = "arm,vexpress-shutdown";
67 arm,vexpress-sysreg,func = <8 0>;
68 };
Achin Gupta4f6ad662013-10-25 09:08:21 +010069
Andre Przywara974fc952022-08-19 16:21:29 +010070 reboot {
71 compatible = "arm,vexpress-reboot";
72 arm,vexpress-sysreg,func = <9 0>;
73 };
Achin Gupta4f6ad662013-10-25 09:08:21 +010074
Andre Przywara974fc952022-08-19 16:21:29 +010075 dvimode {
76 compatible = "arm,vexpress-dvimode";
77 arm,vexpress-sysreg,func = <11 0>;
78 };
79 };
Achin Gupta4f6ad662013-10-25 09:08:21 +010080
Andre Przywara974fc952022-08-19 16:21:29 +010081 bus@8000000 {
82 compatible = "simple-bus";
83 #address-cells = <2>;
84 #size-cells = <1>;
85 ranges = <0 0x8000000 0 0x8000000 0x18000000>;
Achin Gupta4f6ad662013-10-25 09:08:21 +010086
Andre Przywara974fc952022-08-19 16:21:29 +010087 motherboard-bus@8000000 {
88 compatible = "arm,vexpress,v2m-p1", "simple-bus";
89 #address-cells = <2>; /* SMB chipselect number and offset */
90 #size-cells = <1>;
91 ranges = <0 0 0 0x08000000 0x04000000>,
92 <1 0 0 0x14000000 0x04000000>,
93 <2 0 0 0x18000000 0x04000000>,
94 <3 0 0 0x1c000000 0x04000000>,
95 <4 0 0 0x0c000000 0x04000000>,
96 <5 0 0 0x10000000 0x04000000>;
Achin Gupta4f6ad662013-10-25 09:08:21 +010097
Andre Przywara974fc952022-08-19 16:21:29 +010098 flash@0 {
99 compatible = "arm,vexpress-flash", "cfi-flash";
100 reg = <0 0x00000000 0x04000000>,
101 <4 0x00000000 0x04000000>;
102 bank-width = <4>;
Achin Gupta4f6ad662013-10-25 09:08:21 +0100103 };
104
Andre Przywara974fc952022-08-19 16:21:29 +0100105 ethernet@202000000 {
106 compatible = "smsc,lan91c111";
107 reg = <2 0x02000000 0x10000>;
108 interrupts = <15>;
Achin Gupta4f6ad662013-10-25 09:08:21 +0100109 };
110
Andre Przywara974fc952022-08-19 16:21:29 +0100111 iofpga-bus@300000000 {
112 compatible = "simple-bus";
113 #address-cells = <1>;
114 #size-cells = <1>;
115 ranges = <0 3 0 0x210000>;
Achin Gupta4f6ad662013-10-25 09:08:21 +0100116
Andre Przywara974fc952022-08-19 16:21:29 +0100117 v2m_sysreg: sysreg@10000 {
118 compatible = "arm,vexpress-sysreg";
119 reg = <0x010000 0x1000>;
120 gpio-controller;
121 #gpio-cells = <2>;
122 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100123
Andre Przywara974fc952022-08-19 16:21:29 +0100124 v2m_sysctl: sysctl@20000 {
125 compatible = "arm,sp810", "arm,primecell";
126 reg = <0x020000 0x1000>;
127 clocks = <&v2m_refclk32khz>, <&v2m_refclk1mhz>, <&v2m_clk24mhz>;
128 clock-names = "refclk", "timclk", "apb_pclk";
129 #clock-cells = <1>;
130 clock-output-names = "timerclken0", "timerclken1", "timerclken2", "timerclken3";
131 assigned-clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&v2m_sysctl 3>, <&v2m_sysctl 3>;
132 assigned-clock-parents = <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>;
133 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100134
Andre Przywara974fc952022-08-19 16:21:29 +0100135 aaci@40000 {
136 compatible = "arm,pl041", "arm,primecell";
137 reg = <0x040000 0x1000>;
138 interrupts = <11>;
139 clocks = <&v2m_clk24mhz>;
140 clock-names = "apb_pclk";
141 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100142
Andre Przywara974fc952022-08-19 16:21:29 +0100143 mmc@50000 {
144 compatible = "arm,pl180", "arm,primecell";
145 reg = <0x050000 0x1000>;
146 interrupts = <9>, <10>;
147 cd-gpios = <&v2m_sysreg 0 0>;
148 wp-gpios = <&v2m_sysreg 1 0>;
149 max-frequency = <12000000>;
150 vmmc-supply = <&v2m_fixed_3v3>;
151 clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
152 clock-names = "mclk", "apb_pclk";
153 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100154
Andre Przywara974fc952022-08-19 16:21:29 +0100155 kmi@60000 {
156 compatible = "arm,pl050", "arm,primecell";
157 reg = <0x060000 0x1000>;
158 interrupts = <12>;
159 clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
160 clock-names = "KMIREFCLK", "apb_pclk";
161 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100162
Andre Przywara974fc952022-08-19 16:21:29 +0100163 kmi@70000 {
164 compatible = "arm,pl050", "arm,primecell";
165 reg = <0x070000 0x1000>;
166 interrupts = <13>;
167 clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
168 clock-names = "KMIREFCLK", "apb_pclk";
169 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100170
Andre Przywara974fc952022-08-19 16:21:29 +0100171 v2m_serial0: serial@90000 {
172 compatible = "arm,pl011", "arm,primecell";
173 reg = <0x090000 0x1000>;
174 interrupts = <5>;
175 clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
176 clock-names = "uartclk", "apb_pclk";
177 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100178
Andre Przywara974fc952022-08-19 16:21:29 +0100179 v2m_serial1: serial@a0000 {
180 compatible = "arm,pl011", "arm,primecell";
181 reg = <0x0a0000 0x1000>;
182 interrupts = <6>;
183 clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
184 clock-names = "uartclk", "apb_pclk";
185 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100186
Andre Przywara974fc952022-08-19 16:21:29 +0100187 v2m_serial2: serial@b0000 {
188 compatible = "arm,pl011", "arm,primecell";
189 reg = <0x0b0000 0x1000>;
190 interrupts = <7>;
191 clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
192 clock-names = "uartclk", "apb_pclk";
193 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100194
Andre Przywara974fc952022-08-19 16:21:29 +0100195 v2m_serial3: serial@c0000 {
196 compatible = "arm,pl011", "arm,primecell";
197 reg = <0x0c0000 0x1000>;
198 interrupts = <8>;
199 clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
200 clock-names = "uartclk", "apb_pclk";
201 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100202
Andre Przywara974fc952022-08-19 16:21:29 +0100203 watchdog@f0000 {
204 compatible = "arm,sp805", "arm,primecell";
205 reg = <0x0f0000 0x1000>;
206 interrupts = <0>;
207 clocks = <&v2m_refclk32khz>, <&v2m_clk24mhz>;
208 clock-names = "wdog_clk", "apb_pclk";
209 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100210
Andre Przywara974fc952022-08-19 16:21:29 +0100211 v2m_timer01: timer@110000 {
212 compatible = "arm,sp804", "arm,primecell";
213 reg = <0x110000 0x1000>;
214 interrupts = <2>;
215 clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&v2m_clk24mhz>;
216 clock-names = "timclken1", "timclken2", "apb_pclk";
217 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100218
Andre Przywara974fc952022-08-19 16:21:29 +0100219 v2m_timer23: timer@120000 {
220 compatible = "arm,sp804", "arm,primecell";
221 reg = <0x120000 0x1000>;
222 interrupts = <3>;
223 clocks = <&v2m_sysctl 2>, <&v2m_sysctl 3>, <&v2m_clk24mhz>;
224 clock-names = "timclken1", "timclken2", "apb_pclk";
225 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100226
Andre Przywara974fc952022-08-19 16:21:29 +0100227 virtio@130000 {
228 compatible = "virtio,mmio";
229 reg = <0x130000 0x200>;
230 interrupts = <42>;
231 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100232
Debbie Martin5bb424b2023-10-24 13:51:55 +0100233 virtio@140000 {
234 compatible = "virtio,mmio";
235 reg = <0x140000 0x200>;
236 interrupts = <43>;
237 };
238
239 virtio@150000 {
240 compatible = "virtio,mmio";
241 reg = <0x150000 0x200>;
242 interrupts = <44>;
243 };
244
245 virtio@200000 {
246 compatible = "virtio,mmio";
247 reg = <0x200000 0x200>;
248 interrupts = <46>;
249 status = "disabled";
250 };
251
Andre Przywara974fc952022-08-19 16:21:29 +0100252 rtc@170000 {
253 compatible = "arm,pl031", "arm,primecell";
254 reg = <0x170000 0x1000>;
255 interrupts = <4>;
256 clocks = <&v2m_clk24mhz>;
257 clock-names = "apb_pclk";
258 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100259
Andre Przywara974fc952022-08-19 16:21:29 +0100260 clcd@1f0000 {
261 compatible = "arm,pl111", "arm,primecell";
262 reg = <0x1f0000 0x1000>;
263 interrupt-names = "combined";
264 interrupts = <14>;
265 clocks = <&v2m_oscclk1>, <&v2m_clk24mhz>;
266 clock-names = "clcdclk", "apb_pclk";
267 memory-region = <&vram>;
Achin Gupta4f6ad662013-10-25 09:08:21 +0100268
Andre Przywara974fc952022-08-19 16:21:29 +0100269 port {
270 clcd_pads: endpoint {
271 remote-endpoint = <&panel_in>;
272 arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
273 };
274 };
275 };
Achin Gupta4f6ad662013-10-25 09:08:21 +0100276 };
277 };
278 };
Andre Przywara974fc952022-08-19 16:21:29 +0100279};