1 // SPDX-License-Identifier: GPL-2.0
3 * Xilinx ML510 Reference Design support
5 * This DTS file was created for the ml510_bsb1_pcores_ppc440 reference design.
6 * The reference design contains a bug which prevent PCI DMA from working
7 * properly. A description of the bug is given in the plbv46_pci section. It
8 * needs to be fixed by the user until Xilinx updates their reference design.
10 * Copyright 2009, Roderick Colenbrander
17 compatible = "xlnx,ml510-ref-design", "xlnx,virtex440";
18 dcr-parent = <&ppc440_0>;
19 DDR2_SDRAM_DIMM0: memory@0 {
20 device_type = "memory";
21 reg = < 0x0 0x20000000 >;
24 ethernet0 = &Hard_Ethernet_MAC;
25 serial0 = &RS232_Uart_1;
28 bootargs = "console=ttyS0 root=/dev/ram";
29 stdout-path = "/plb@0/serial@83e00000";
38 clock-frequency = <300000000>;
39 compatible = "PowerPC,440", "ibm,ppc440";
40 d-cache-line-size = <0x20>;
41 d-cache-size = <0x8000>;
42 dcr-access-method = "native";
45 i-cache-line-size = <0x20>;
46 i-cache-size = <0x8000>;
47 model = "PowerPC,440";
49 timebase-frequency = <300000000>;
50 xlnx,apu-control = <0x2000>;
51 xlnx,apu-udi-0 = <0x0>;
52 xlnx,apu-udi-1 = <0x0>;
53 xlnx,apu-udi-10 = <0x0>;
54 xlnx,apu-udi-11 = <0x0>;
55 xlnx,apu-udi-12 = <0x0>;
56 xlnx,apu-udi-13 = <0x0>;
57 xlnx,apu-udi-14 = <0x0>;
58 xlnx,apu-udi-15 = <0x0>;
59 xlnx,apu-udi-2 = <0x0>;
60 xlnx,apu-udi-3 = <0x0>;
61 xlnx,apu-udi-4 = <0x0>;
62 xlnx,apu-udi-5 = <0x0>;
63 xlnx,apu-udi-6 = <0x0>;
64 xlnx,apu-udi-7 = <0x0>;
65 xlnx,apu-udi-8 = <0x0>;
66 xlnx,apu-udi-9 = <0x0>;
67 xlnx,dcr-autolock-enable = <0x1>;
68 xlnx,dcu-rd-ld-cache-plb-prio = <0x0>;
69 xlnx,dcu-rd-noncache-plb-prio = <0x0>;
70 xlnx,dcu-rd-touch-plb-prio = <0x0>;
71 xlnx,dcu-rd-urgent-plb-prio = <0x0>;
72 xlnx,dcu-wr-flush-plb-prio = <0x0>;
73 xlnx,dcu-wr-store-plb-prio = <0x0>;
74 xlnx,dcu-wr-urgent-plb-prio = <0x0>;
75 xlnx,dma0-control = <0x0>;
76 xlnx,dma0-plb-prio = <0x0>;
77 xlnx,dma0-rxchannelctrl = <0x1010000>;
78 xlnx,dma0-rxirqtimer = <0x3ff>;
79 xlnx,dma0-txchannelctrl = <0x1010000>;
80 xlnx,dma0-txirqtimer = <0x3ff>;
81 xlnx,dma1-control = <0x0>;
82 xlnx,dma1-plb-prio = <0x0>;
83 xlnx,dma1-rxchannelctrl = <0x1010000>;
84 xlnx,dma1-rxirqtimer = <0x3ff>;
85 xlnx,dma1-txchannelctrl = <0x1010000>;
86 xlnx,dma1-txirqtimer = <0x3ff>;
87 xlnx,dma2-control = <0x0>;
88 xlnx,dma2-plb-prio = <0x0>;
89 xlnx,dma2-rxchannelctrl = <0x1010000>;
90 xlnx,dma2-rxirqtimer = <0x3ff>;
91 xlnx,dma2-txchannelctrl = <0x1010000>;
92 xlnx,dma2-txirqtimer = <0x3ff>;
93 xlnx,dma3-control = <0x0>;
94 xlnx,dma3-plb-prio = <0x0>;
95 xlnx,dma3-rxchannelctrl = <0x1010000>;
96 xlnx,dma3-rxirqtimer = <0x3ff>;
97 xlnx,dma3-txchannelctrl = <0x1010000>;
98 xlnx,dma3-txirqtimer = <0x3ff>;
99 xlnx,endian-reset = <0x0>;
100 xlnx,generate-plb-timespecs = <0x1>;
101 xlnx,icu-rd-fetch-plb-prio = <0x0>;
102 xlnx,icu-rd-spec-plb-prio = <0x0>;
103 xlnx,icu-rd-touch-plb-prio = <0x0>;
104 xlnx,interconnect-imask = <0xffffffff>;
105 xlnx,mplb-allow-lock-xfer = <0x1>;
106 xlnx,mplb-arb-mode = <0x0>;
107 xlnx,mplb-awidth = <0x20>;
108 xlnx,mplb-counter = <0x500>;
109 xlnx,mplb-dwidth = <0x80>;
110 xlnx,mplb-max-burst = <0x8>;
111 xlnx,mplb-native-dwidth = <0x80>;
112 xlnx,mplb-p2p = <0x0>;
113 xlnx,mplb-prio-dcur = <0x2>;
114 xlnx,mplb-prio-dcuw = <0x3>;
115 xlnx,mplb-prio-icu = <0x4>;
116 xlnx,mplb-prio-splb0 = <0x1>;
117 xlnx,mplb-prio-splb1 = <0x0>;
118 xlnx,mplb-read-pipe-enable = <0x1>;
119 xlnx,mplb-sync-tattribute = <0x0>;
120 xlnx,mplb-wdog-enable = <0x1>;
121 xlnx,mplb-write-pipe-enable = <0x1>;
122 xlnx,mplb-write-post-enable = <0x1>;
123 xlnx,num-dma = <0x0>;
125 xlnx,ppc440mc-addr-base = <0x0>;
126 xlnx,ppc440mc-addr-high = <0x1fffffff>;
127 xlnx,ppc440mc-arb-mode = <0x0>;
128 xlnx,ppc440mc-bank-conflict-mask = <0x1800000>;
129 xlnx,ppc440mc-control = <0xf810008f>;
130 xlnx,ppc440mc-max-burst = <0x8>;
131 xlnx,ppc440mc-prio-dcur = <0x2>;
132 xlnx,ppc440mc-prio-dcuw = <0x3>;
133 xlnx,ppc440mc-prio-icu = <0x4>;
134 xlnx,ppc440mc-prio-splb0 = <0x1>;
135 xlnx,ppc440mc-prio-splb1 = <0x0>;
136 xlnx,ppc440mc-row-conflict-mask = <0x7ffe00>;
137 xlnx,ppcdm-asyncmode = <0x0>;
138 xlnx,ppcds-asyncmode = <0x0>;
139 xlnx,user-reset = <0x0>;
143 #address-cells = <1>;
145 compatible = "xlnx,plb-v46-1.03.a", "simple-bus";
147 FLASH: flash@fc000000 {
149 compatible = "xlnx,xps-mch-emc-2.00.a", "cfi-flash";
150 reg = < 0xfc000000 0x2000000 >;
151 xlnx,family = "virtex5";
152 xlnx,include-datawidth-matching-0 = <0x1>;
153 xlnx,include-datawidth-matching-1 = <0x0>;
154 xlnx,include-datawidth-matching-2 = <0x0>;
155 xlnx,include-datawidth-matching-3 = <0x0>;
156 xlnx,include-negedge-ioregs = <0x0>;
157 xlnx,include-plb-ipif = <0x1>;
158 xlnx,include-wrbuf = <0x1>;
159 xlnx,max-mem-width = <0x10>;
160 xlnx,mch-native-dwidth = <0x20>;
161 xlnx,mch-plb-clk-period-ps = <0x2710>;
162 xlnx,mch-splb-awidth = <0x20>;
163 xlnx,mch0-accessbuf-depth = <0x10>;
164 xlnx,mch0-protocol = <0x0>;
165 xlnx,mch0-rddatabuf-depth = <0x10>;
166 xlnx,mch1-accessbuf-depth = <0x10>;
167 xlnx,mch1-protocol = <0x0>;
168 xlnx,mch1-rddatabuf-depth = <0x10>;
169 xlnx,mch2-accessbuf-depth = <0x10>;
170 xlnx,mch2-protocol = <0x0>;
171 xlnx,mch2-rddatabuf-depth = <0x10>;
172 xlnx,mch3-accessbuf-depth = <0x10>;
173 xlnx,mch3-protocol = <0x0>;
174 xlnx,mch3-rddatabuf-depth = <0x10>;
175 xlnx,mem0-width = <0x10>;
176 xlnx,mem1-width = <0x20>;
177 xlnx,mem2-width = <0x20>;
178 xlnx,mem3-width = <0x20>;
179 xlnx,num-banks-mem = <0x1>;
180 xlnx,num-channels = <0x2>;
181 xlnx,priority-mode = <0x0>;
182 xlnx,synch-mem-0 = <0x0>;
183 xlnx,synch-mem-1 = <0x0>;
184 xlnx,synch-mem-2 = <0x0>;
185 xlnx,synch-mem-3 = <0x0>;
186 xlnx,synch-pipedelay-0 = <0x2>;
187 xlnx,synch-pipedelay-1 = <0x2>;
188 xlnx,synch-pipedelay-2 = <0x2>;
189 xlnx,synch-pipedelay-3 = <0x2>;
190 xlnx,tavdv-ps-mem-0 = <0x1adb0>;
191 xlnx,tavdv-ps-mem-1 = <0x3a98>;
192 xlnx,tavdv-ps-mem-2 = <0x3a98>;
193 xlnx,tavdv-ps-mem-3 = <0x3a98>;
194 xlnx,tcedv-ps-mem-0 = <0x1adb0>;
195 xlnx,tcedv-ps-mem-1 = <0x3a98>;
196 xlnx,tcedv-ps-mem-2 = <0x3a98>;
197 xlnx,tcedv-ps-mem-3 = <0x3a98>;
198 xlnx,thzce-ps-mem-0 = <0x88b8>;
199 xlnx,thzce-ps-mem-1 = <0x1b58>;
200 xlnx,thzce-ps-mem-2 = <0x1b58>;
201 xlnx,thzce-ps-mem-3 = <0x1b58>;
202 xlnx,thzoe-ps-mem-0 = <0x1b58>;
203 xlnx,thzoe-ps-mem-1 = <0x1b58>;
204 xlnx,thzoe-ps-mem-2 = <0x1b58>;
205 xlnx,thzoe-ps-mem-3 = <0x1b58>;
206 xlnx,tlzwe-ps-mem-0 = <0x88b8>;
207 xlnx,tlzwe-ps-mem-1 = <0x0>;
208 xlnx,tlzwe-ps-mem-2 = <0x0>;
209 xlnx,tlzwe-ps-mem-3 = <0x0>;
210 xlnx,twc-ps-mem-0 = <0x1adb0>;
211 xlnx,twc-ps-mem-1 = <0x3a98>;
212 xlnx,twc-ps-mem-2 = <0x3a98>;
213 xlnx,twc-ps-mem-3 = <0x3a98>;
214 xlnx,twp-ps-mem-0 = <0x11170>;
215 xlnx,twp-ps-mem-1 = <0x2ee0>;
216 xlnx,twp-ps-mem-2 = <0x2ee0>;
217 xlnx,twp-ps-mem-3 = <0x2ee0>;
218 xlnx,xcl0-linesize = <0x4>;
219 xlnx,xcl0-writexfer = <0x1>;
220 xlnx,xcl1-linesize = <0x4>;
221 xlnx,xcl1-writexfer = <0x1>;
222 xlnx,xcl2-linesize = <0x4>;
223 xlnx,xcl2-writexfer = <0x1>;
224 xlnx,xcl3-linesize = <0x4>;
225 xlnx,xcl3-writexfer = <0x1>;
227 Hard_Ethernet_MAC: xps-ll-temac@81c00000 {
228 #address-cells = <1>;
230 compatible = "xlnx,compound";
232 compatible = "xlnx,xps-ll-temac-1.01.b";
233 device_type = "network";
234 interrupt-parent = <&xps_intc_0>;
235 interrupts = < 8 2 >;
236 llink-connected = <&Hard_Ethernet_MAC_fifo>;
237 local-mac-address = [ 02 00 00 00 00 00 ];
238 reg = < 0x81c00000 0x40 >;
239 xlnx,bus2core-clk-ratio = <0x1>;
240 xlnx,phy-type = <0x3>;
241 xlnx,phyaddr = <0x1>;
243 xlnx,rxfifo = <0x8000>;
244 xlnx,temac-type = <0x0>;
246 xlnx,txfifo = <0x8000>;
249 Hard_Ethernet_MAC_fifo: xps-ll-fifo@81a00000 {
250 compatible = "xlnx,xps-ll-fifo-1.01.a";
251 interrupt-parent = <&xps_intc_0>;
252 interrupts = < 6 2 >;
253 reg = < 0x81a00000 0x10000 >;
254 xlnx,family = "virtex5";
256 IIC_EEPROM: i2c@81600000 {
257 compatible = "xlnx,xps-iic-2.00.a";
258 interrupt-parent = <&xps_intc_0>;
259 interrupts = < 9 2 >;
260 reg = < 0x81600000 0x10000 >;
261 xlnx,clk-freq = <0x5f5e100>;
262 xlnx,family = "virtex5";
263 xlnx,gpo-width = <0x1>;
264 xlnx,iic-freq = <0x186a0>;
265 xlnx,scl-inertial-delay = <0x5>;
266 xlnx,sda-inertial-delay = <0x5>;
267 xlnx,ten-bit-adr = <0x0>;
269 LCD_OPTIONAL: gpio@81420000 {
270 compatible = "xlnx,xps-gpio-1.00.a";
271 reg = < 0x81420000 0x10000 >;
272 xlnx,all-inputs = <0x0>;
273 xlnx,all-inputs-2 = <0x0>;
274 xlnx,dout-default = <0x0>;
275 xlnx,dout-default-2 = <0x0>;
276 xlnx,family = "virtex5";
277 xlnx,gpio-width = <0xb>;
278 xlnx,interrupt-present = <0x0>;
279 xlnx,is-bidir = <0x1>;
280 xlnx,is-bidir-2 = <0x1>;
281 xlnx,is-dual = <0x0>;
282 xlnx,tri-default = <0xffffffff>;
283 xlnx,tri-default-2 = <0xffffffff>;
285 LEDs_4Bit: gpio@81400000 {
286 compatible = "xlnx,xps-gpio-1.00.a";
287 reg = < 0x81400000 0x10000 >;
288 xlnx,all-inputs = <0x0>;
289 xlnx,all-inputs-2 = <0x0>;
290 xlnx,dout-default = <0x0>;
291 xlnx,dout-default-2 = <0x0>;
292 xlnx,family = "virtex5";
293 xlnx,gpio-width = <0x4>;
294 xlnx,interrupt-present = <0x0>;
295 xlnx,is-bidir = <0x1>;
296 xlnx,is-bidir-2 = <0x1>;
297 xlnx,is-dual = <0x0>;
298 xlnx,tri-default = <0xffffffff>;
299 xlnx,tri-default-2 = <0xffffffff>;
301 RS232_Uart_1: serial@83e00000 {
302 clock-frequency = <100000000>;
303 compatible = "xlnx,xps-uart16550-2.00.b", "ns16550";
304 current-speed = <9600>;
305 device_type = "serial";
306 interrupt-parent = <&xps_intc_0>;
307 interrupts = < 11 2 >;
308 reg = < 0x83e00000 0x10000 >;
309 reg-offset = <0x1003>;
311 xlnx,family = "virtex5";
312 xlnx,has-external-rclk = <0x0>;
313 xlnx,has-external-xin = <0x0>;
314 xlnx,is-a-16550 = <0x1>;
316 SPI_EEPROM: xps-spi@feff8000 {
317 compatible = "xlnx,xps-spi-2.00.b";
318 interrupt-parent = <&xps_intc_0>;
319 interrupts = < 10 2 >;
320 reg = < 0xfeff8000 0x80 >;
321 xlnx,family = "virtex5";
322 xlnx,fifo-exist = <0x1>;
323 xlnx,num-ss-bits = <0x1>;
324 xlnx,num-transfer-bits = <0x8>;
325 xlnx,sck-ratio = <0x80>;
327 SysACE_CompactFlash: sysace@83600000 {
328 compatible = "xlnx,xps-sysace-1.00.a";
329 interrupt-parent = <&xps_intc_0>;
330 interrupts = < 7 2 >;
331 reg = < 0x83600000 0x10000 >;
332 xlnx,family = "virtex5";
333 xlnx,mem-width = <0x10>;
335 plbv46_pci_0: plbv46-pci@85e00000 {
337 #address-cells = <3>;
338 compatible = "xlnx,plbv46-pci-1.03.a";
340 reg = < 0x85e00000 0x10000 >;
343 * The default ML510 BSB has C_IPIFBAR2PCIBAR_0 set to
344 * 0 which means that a read/write to the memory mapped
345 * i/o region (which starts at 0xa0000000) for pci
346 * bar 0 on the plb side translates to 0.
347 * It is important to set this value to 0xa0000000, so
348 * that inbound and outbound pci transactions work
349 * properly including DMA.
351 ranges = <0x02000000 0 0xa0000000 0xa0000000 0 0x20000000
352 0x01000000 0 0x00000000 0xf0000000 0 0x00010000>;
354 #interrupt-cells = <1>;
355 interrupt-parent = <&xps_intc_0>;
356 interrupt-map-mask = <0xff00 0x0 0x0 0x7>;
358 /* IRQ mapping for pci slots and ALI M1533
359 * periperhals. In total there are 5 interrupt
360 * lines connected to a xps_intc controller.
361 * Four of them are PCI IRQ A, B, C, D and
362 * which correspond to respectively xpx_intc
363 * 5, 4, 3 and 2. The fifth interrupt line is
364 * connected to the south bridge and this one
365 * uses irq 1 and is active high instead of
368 * The M1533 contains various peripherals
369 * including AC97 audio, a modem, USB, IDE and
370 * some power management stuff. The modem
371 * isn't connected on the ML510 and the power
372 * management core also isn't used.
375 /* IDSEL 0x16 / dev=6, bus=0 / PCI slot 3 */
376 0x3000 0 0 1 &xps_intc_0 3 2
377 0x3000 0 0 2 &xps_intc_0 2 2
378 0x3000 0 0 3 &xps_intc_0 5 2
379 0x3000 0 0 4 &xps_intc_0 4 2
381 /* IDSEL 0x13 / dev=3, bus=1 / PCI slot 4 */
383 0x11800 0 0 1 &xps_intc_0 5 0 2
384 0x11800 0 0 2 &xps_intc_0 4 0 2
385 0x11800 0 0 3 &xps_intc_0 3 0 2
386 0x11800 0 0 4 &xps_intc_0 2 0 2
389 /* According to the datasheet + schematic
390 * ABCD [FPGA] of slot 5 is mapped to DABC.
391 * Testing showed that at least A maps to B,
392 * the mapping of the other pins is a guess
393 * and for that reason the lines have been
396 /* IDSEL 0x15 / dev=5, bus=0 / PCI slot 5 */
397 0x2800 0 0 1 &xps_intc_0 4 2
399 0x2800 0 0 2 &xps_intc_0 3 2
400 0x2800 0 0 3 &xps_intc_0 2 2
401 0x2800 0 0 4 &xps_intc_0 5 2
404 /* IDSEL 0x12 / dev=2, bus=1 / PCI slot 6 */
406 0x11000 0 0 1 &xps_intc_0 4 0 2
407 0x11000 0 0 2 &xps_intc_0 3 0 2
408 0x11000 0 0 3 &xps_intc_0 2 0 2
409 0x11000 0 0 4 &xps_intc_0 5 0 2
412 /* IDSEL 0x11 / dev=1, bus=0 / AC97 audio */
413 0x0800 0 0 1 &i8259 7 2
415 /* IDSEL 0x1b / dev=11, bus=0 / IDE */
416 0x5800 0 0 1 &i8259 14 2
418 /* IDSEL 0x1f / dev 15, bus=0 / 2x USB 1.1 */
419 0x7800 0 0 1 &i8259 7 2
423 #address-cells = <2>;
424 i8259: interrupt-controller@20 {
428 interrupt-controller;
429 device_type = "interrupt-controller";
430 #address-cells = <0>;
431 #interrupt-cells = <2>;
432 compatible = "chrp,iic";
434 /* south bridge irq is active high */
436 interrupt-parent = <&xps_intc_0>;
440 xps_bram_if_cntlr_1: xps-bram-if-cntlr@ffff0000 {
441 compatible = "xlnx,xps-bram-if-cntlr-1.00.a";
442 reg = < 0xffff0000 0x10000 >;
443 xlnx,family = "virtex5";
445 xps_intc_0: interrupt-controller@81800000 {
446 #interrupt-cells = <0x2>;
447 compatible = "xlnx,xps-intc-1.00.a";
448 interrupt-controller ;
449 reg = < 0x81800000 0x10000 >;
450 xlnx,num-intr-inputs = <0xc>;
452 xps_tft_0: tft@86e00000 {
453 compatible = "xlnx,xps-tft-1.00.a";
454 reg = < 0x86e00000 0x10000 >;
455 xlnx,dcr-splb-slave-if = <0x1>;
456 xlnx,default-tft-base-addr = <0x0>;
457 xlnx,family = "virtex5";
458 xlnx,i2c-slave-addr = <0x76>;
459 xlnx,mplb-awidth = <0x20>;
460 xlnx,mplb-dwidth = <0x80>;
461 xlnx,mplb-native-dwidth = <0x40>;
462 xlnx,mplb-smallest-slave = <0x20>;
463 xlnx,tft-interface = <0x1>;