mpc8641_hpcn.dts 14.6 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
/*
 * MPC8641 HPCN Device Tree Source
 *
 * Copyright 2006 Freescale Semiconductor Inc.
 *
 * This program is free software; you can redistribute  it and/or modify it
 * under  the terms of  the GNU General  Public License as published by the
 * Free Software Foundation;  either version 2 of the  License, or (at your
 * option) any later version.
 */

12
/dts-v1/;
13 14 15

/ {
	model = "MPC8641HPCN";
16
	compatible = "fsl,mpc8641hpcn";
17 18 19
	#address-cells = <1>;
	#size-cells = <1>;

20 21 22 23 24 25 26 27 28 29 30
	aliases {
		ethernet0 = &enet0;
		ethernet1 = &enet1;
		ethernet2 = &enet2;
		ethernet3 = &enet3;
		serial0 = &serial0;
		serial1 = &serial1;
		pci0 = &pci0;
		pci1 = &pci1;
	};

31 32 33 34 35 36 37
	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		PowerPC,8641@0 {
			device_type = "cpu";
			reg = <0>;
38 39 40 41 42
			d-cache-line-size = <32>;
			i-cache-line-size = <32>;
			d-cache-size = <32768>;		// L1
			i-cache-size = <32768>;		// L1
			timebase-frequency = <0>;	// From uboot
43 44 45 46 47 48
			bus-frequency = <0>;		// From uboot
			clock-frequency = <0>;		// From uboot
		};
		PowerPC,8641@1 {
			device_type = "cpu";
			reg = <1>;
49 50 51 52 53
			d-cache-line-size = <32>;
			i-cache-line-size = <32>;
			d-cache-size = <32768>;
			i-cache-size = <32768>;
			timebase-frequency = <0>;	// From uboot
54 55 56 57 58 59 60
			bus-frequency = <0>;		// From uboot
			clock-frequency = <0>;		// From uboot
		};
	};

	memory {
		device_type = "memory";
61
		reg = <0x00000000 0x40000000>;	// 1G at 0x0
62 63
	};

64
	localbus@ffe05000 {
65 66 67
		#address-cells = <2>;
		#size-cells = <1>;
		compatible = "fsl,mpc8641-localbus", "simple-bus";
68
		reg = <0xffe05000 0x1000>;
69
		interrupts = <19 2>;
70 71
		interrupt-parent = <&mpic>;

72 73 74
		ranges = <0 0 0xef800000 0x00800000
			  2 0 0xffdf8000 0x00008000
			  3 0 0xffdf0000 0x00008000>;
75 76 77

		flash@0,0 {
			compatible = "cfi-flash";
78
			reg = <0 0 0x00800000>;
79 80 81 82 83 84
			bank-width = <2>;
			device-width = <2>;
			#address-cells = <1>;
			#size-cells = <1>;
			partition@0 {
				label = "kernel";
85
				reg = <0x00000000 0x00300000>;
86 87 88
			};
			partition@300000 {
				label = "firmware b";
89
				reg = <0x00300000 0x00100000>;
90 91 92 93
				read-only;
			};
			partition@400000 {
				label = "fs";
94
				reg = <0x00400000 0x00300000>;
95 96 97
			};
			partition@700000 {
				label = "firmware a";
98
				reg = <0x00700000 0x00100000>;
99 100 101 102 103
				read-only;
			};
		};
	};

104
	soc8641@ffe00000 {
105 106 107
		#address-cells = <1>;
		#size-cells = <1>;
		device_type = "soc";
108
		compatible = "simple-bus";
109
		ranges = <0x00000000 0xffe00000 0x00100000>;
110 111
		bus-frequency = <0>;

112 113 114 115 116 117 118 119 120 121 122 123 124
		mcm-law@0 {
			compatible = "fsl,mcm-law";
			reg = <0x0 0x1000>;
			fsl,num-laws = <10>;
		};

		mcm@1000 {
			compatible = "fsl,mpc8641-mcm", "fsl,mcm";
			reg = <0x1000 0x1000>;
			interrupts = <17 2>;
			interrupt-parent = <&mpic>;
		};

125
		i2c@3000 {
126 127 128
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <0>;
129
			compatible = "fsl-i2c";
130 131
			reg = <0x3000 0x100>;
			interrupts = <43 2>;
132
			interrupt-parent = <&mpic>;
133 134 135 136
			dfsrr;
		};

		i2c@3100 {
137 138 139
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <1>;
140
			compatible = "fsl-i2c";
141 142
			reg = <0x3100 0x100>;
			interrupts = <43 2>;
143
			interrupt-parent = <&mpic>;
144 145 146
			dfsrr;
		};

147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
		dma@21300 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,mpc8641-dma", "fsl,eloplus-dma";
			reg = <0x21300 0x4>;
			ranges = <0x0 0x21100 0x200>;
			cell-index = <0>;
			dma-channel@0 {
				compatible = "fsl,mpc8641-dma-channel",
						"fsl,eloplus-dma-channel";
				reg = <0x0 0x80>;
				cell-index = <0>;
				interrupt-parent = <&mpic>;
				interrupts = <20 2>;
			};
			dma-channel@80 {
				compatible = "fsl,mpc8641-dma-channel",
						"fsl,eloplus-dma-channel";
				reg = <0x80 0x80>;
				cell-index = <1>;
				interrupt-parent = <&mpic>;
				interrupts = <21 2>;
			};
			dma-channel@100 {
				compatible = "fsl,mpc8641-dma-channel",
						"fsl,eloplus-dma-channel";
				reg = <0x100 0x80>;
				cell-index = <2>;
				interrupt-parent = <&mpic>;
				interrupts = <22 2>;
			};
			dma-channel@180 {
				compatible = "fsl,mpc8641-dma-channel",
						"fsl,eloplus-dma-channel";
				reg = <0x180 0x80>;
				cell-index = <3>;
				interrupt-parent = <&mpic>;
				interrupts = <23 2>;
			};
		};

188
		enet0: ethernet@24000 {
189 190
			#address-cells = <1>;
			#size-cells = <1>;
191
			cell-index = <0>;
192 193 194
			device_type = "network";
			model = "TSEC";
			compatible = "gianfar";
195
			reg = <0x24000 0x1000>;
196
			ranges = <0x0 0x24000 0x1000>;
197
			local-mac-address = [ 00 00 00 00 00 00 ];
198
			interrupts = <29 2 30  2 34 2>;
199
			interrupt-parent = <&mpic>;
200
			tbi-handle = <&tbi0>;
201
			phy-handle = <&phy0>;
202
			phy-connection-type = "rgmii-id";
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234

			mdio@520 {
				#address-cells = <1>;
				#size-cells = <0>;
				compatible = "fsl,gianfar-mdio";
				reg = <0x520 0x20>;

				phy0: ethernet-phy@0 {
					interrupt-parent = <&mpic>;
					interrupts = <10 1>;
					reg = <0>;
				};
				phy1: ethernet-phy@1 {
					interrupt-parent = <&mpic>;
					interrupts = <10 1>;
					reg = <1>;
				};
				phy2: ethernet-phy@2 {
					interrupt-parent = <&mpic>;
					interrupts = <10 1>;
					reg = <2>;
				};
				phy3: ethernet-phy@3 {
					interrupt-parent = <&mpic>;
					interrupts = <10 1>;
					reg = <3>;
				};
				tbi0: tbi-phy@11 {
					reg = <0x11>;
					device_type = "tbi-phy";
				};
			};
235 236
		};

237
		enet1: ethernet@25000 {
238 239
			#address-cells = <1>;
			#size-cells = <1>;
240
			cell-index = <1>;
241 242 243
			device_type = "network";
			model = "TSEC";
			compatible = "gianfar";
244
			reg = <0x25000 0x1000>;
245
			ranges = <0x0 0x25000 0x1000>;
246
			local-mac-address = [ 00 00 00 00 00 00 ];
247
			interrupts = <35 2 36 2 40 2>;
248
			interrupt-parent = <&mpic>;
249
			tbi-handle = <&tbi1>;
250
			phy-handle = <&phy1>;
251
			phy-connection-type = "rgmii-id";
252 253 254 255 256 257 258 259 260 261 262 263

			mdio@520 {
				#address-cells = <1>;
				#size-cells = <0>;
				compatible = "fsl,gianfar-tbi";
				reg = <0x520 0x20>;

				tbi1: tbi-phy@11 {
					reg = <0x11>;
					device_type = "tbi-phy";
				};
			};
264 265
		};
		
266
		enet2: ethernet@26000 {
267 268
			#address-cells = <1>;
			#size-cells = <1>;
269
			cell-index = <2>;
270 271 272
			device_type = "network";
			model = "TSEC";
			compatible = "gianfar";
273
			reg = <0x26000 0x1000>;
274
			ranges = <0x0 0x26000 0x1000>;
275
			local-mac-address = [ 00 00 00 00 00 00 ];
276
			interrupts = <31 2 32 2 33 2>;
277
			interrupt-parent = <&mpic>;
278
			tbi-handle = <&tbi2>;
279
			phy-handle = <&phy2>;
280
			phy-connection-type = "rgmii-id";
281 282 283 284 285 286 287 288 289 290 291 292

			mdio@520 {
				#address-cells = <1>;
				#size-cells = <0>;
				compatible = "fsl,gianfar-tbi";
				reg = <0x520 0x20>;

				tbi2: tbi-phy@11 {
					reg = <0x11>;
					device_type = "tbi-phy";
				};
			};
293 294
		};

295
		enet3: ethernet@27000 {
296 297
			#address-cells = <1>;
			#size-cells = <1>;
298
			cell-index = <3>;
299 300 301
			device_type = "network";
			model = "TSEC";
			compatible = "gianfar";
302
			reg = <0x27000 0x1000>;
303
			ranges = <0x0 0x27000 0x1000>;
304
			local-mac-address = [ 00 00 00 00 00 00 ];
305
			interrupts = <37 2 38 2 39 2>;
306
			interrupt-parent = <&mpic>;
307
			tbi-handle = <&tbi3>;
308
			phy-handle = <&phy3>;
309
			phy-connection-type = "rgmii-id";
310 311 312 313 314 315 316 317 318 319 320 321

			mdio@520 {
				#address-cells = <1>;
				#size-cells = <0>;
				compatible = "fsl,gianfar-tbi";
				reg = <0x520 0x20>;

				tbi3: tbi-phy@11 {
					reg = <0x11>;
					device_type = "tbi-phy";
				};
			};
322
		};
323 324

		serial0: serial@4500 {
325
			cell-index = <0>;
326
			device_type = "serial";
327
			compatible = "fsl,ns16550", "ns16550";
328
			reg = <0x4500 0x100>;
329
			clock-frequency = <0>;
330
			interrupts = <42 2>;
331
			interrupt-parent = <&mpic>;
332 333
		};

334
		serial1: serial@4600 {
335
			cell-index = <1>;
336
			device_type = "serial";
337
			compatible = "fsl,ns16550", "ns16550";
338
			reg = <0x4600 0x100>;
339
			clock-frequency = <0>;
340
			interrupts = <28 2>;
341
			interrupt-parent = <&mpic>;
342 343
		};

344 345 346 347
		mpic: pic@40000 {
			interrupt-controller;
			#address-cells = <0>;
			#interrupt-cells = <2>;
348
			reg = <0x40000 0x40000>;
349 350 351
			compatible = "chrp,open-pic";
			device_type = "open-pic";
		};
352

353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387
		rmu: rmu@d3000 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,srio-rmu";
			reg = <0xd3000 0x500>;
			ranges = <0x0 0xd3000 0x500>;

			message-unit@0 {
				compatible = "fsl,srio-msg-unit";
				reg = <0x0 0x100>;
				interrupts = <
					53 2 /* msg1_tx_irq */
					54 2>;/* msg1_rx_irq */
			};
			message-unit@100 {
				compatible = "fsl,srio-msg-unit";
				reg = <0x100 0x100>;
				interrupts = <
					55 2  /* msg2_tx_irq */
					56 2>;/* msg2_rx_irq */
			};
			doorbell-unit@400 {
				compatible = "fsl,srio-dbell-unit";
				reg = <0x400 0x80>;
				interrupts = <
					49 2  /* bell_outb_irq */
					50 2>;/* bell_inb_irq */
			};
			port-write-unit@4e0 {
				compatible = "fsl,srio-port-write-unit";
				reg = <0x4e0 0x20>;
				interrupts = <48 2>;
			};
		};

388 389
		global-utilities@e0000 {
			compatible = "fsl,mpc8641-guts";
390
			reg = <0xe0000 0x1000>;
391 392
			fsl,has-rstcr;
		};
393
	};
394

395
	pci0: pcie@ffe08000 {
396 397 398 399 400
		compatible = "fsl,mpc8641-pcie";
		device_type = "pci";
		#interrupt-cells = <1>;
		#size-cells = <2>;
		#address-cells = <3>;
401
		reg = <0xffe08000 0x1000>;
402 403
		bus-range = <0x0 0xff>;
		ranges = <0x02000000 0x0 0x80000000 0x80000000 0x0 0x20000000
404
			  0x01000000 0x0 0x00000000 0xffc00000 0x0 0x00010000>;
405
		clock-frequency = <33333333>;
406
		interrupt-parent = <&mpic>;
407 408
		interrupts = <24 2>;
		interrupt-map-mask = <0xff00 0 0 7>;
409
		interrupt-map = <
410
			/* IDSEL 0x11 func 0 - PCI slot 1 */
411 412 413 414
			0x8800 0 0 1 &mpic 2 1
			0x8800 0 0 2 &mpic 3 1
			0x8800 0 0 3 &mpic 4 1
			0x8800 0 0 4 &mpic 1 1
415 416

			/* IDSEL 0x11 func 1 - PCI slot 1 */
417 418 419 420
			0x8900 0 0 1 &mpic 2 1
			0x8900 0 0 2 &mpic 3 1
			0x8900 0 0 3 &mpic 4 1
			0x8900 0 0 4 &mpic 1 1
421 422

			/* IDSEL 0x11 func 2 - PCI slot 1 */
423 424 425 426
			0x8a00 0 0 1 &mpic 2 1
			0x8a00 0 0 2 &mpic 3 1
			0x8a00 0 0 3 &mpic 4 1
			0x8a00 0 0 4 &mpic 1 1
427 428

			/* IDSEL 0x11 func 3 - PCI slot 1 */
429 430 431 432
			0x8b00 0 0 1 &mpic 2 1
			0x8b00 0 0 2 &mpic 3 1
			0x8b00 0 0 3 &mpic 4 1
			0x8b00 0 0 4 &mpic 1 1
433 434

			/* IDSEL 0x11 func 4 - PCI slot 1 */
435 436 437 438
			0x8c00 0 0 1 &mpic 2 1
			0x8c00 0 0 2 &mpic 3 1
			0x8c00 0 0 3 &mpic 4 1
			0x8c00 0 0 4 &mpic 1 1
439 440

			/* IDSEL 0x11 func 5 - PCI slot 1 */
441 442 443 444
			0x8d00 0 0 1 &mpic 2 1
			0x8d00 0 0 2 &mpic 3 1
			0x8d00 0 0 3 &mpic 4 1
			0x8d00 0 0 4 &mpic 1 1
445 446

			/* IDSEL 0x11 func 6 - PCI slot 1 */
447 448 449 450
			0x8e00 0 0 1 &mpic 2 1
			0x8e00 0 0 2 &mpic 3 1
			0x8e00 0 0 3 &mpic 4 1
			0x8e00 0 0 4 &mpic 1 1
451 452

			/* IDSEL 0x11 func 7 - PCI slot 1 */
453 454 455 456
			0x8f00 0 0 1 &mpic 2 1
			0x8f00 0 0 2 &mpic 3 1
			0x8f00 0 0 3 &mpic 4 1
			0x8f00 0 0 4 &mpic 1 1
457 458

			/* IDSEL 0x12 func 0 - PCI slot 2 */
459 460 461 462
			0x9000 0 0 1 &mpic 3 1
			0x9000 0 0 2 &mpic 4 1
			0x9000 0 0 3 &mpic 1 1
			0x9000 0 0 4 &mpic 2 1
463 464

			/* IDSEL 0x12 func 1 - PCI slot 2 */
465 466 467 468
			0x9100 0 0 1 &mpic 3 1
			0x9100 0 0 2 &mpic 4 1
			0x9100 0 0 3 &mpic 1 1
			0x9100 0 0 4 &mpic 2 1
469 470

			/* IDSEL 0x12 func 2 - PCI slot 2 */
471 472 473 474
			0x9200 0 0 1 &mpic 3 1
			0x9200 0 0 2 &mpic 4 1
			0x9200 0 0 3 &mpic 1 1
			0x9200 0 0 4 &mpic 2 1
475 476

			/* IDSEL 0x12 func 3 - PCI slot 2 */
477 478 479 480
			0x9300 0 0 1 &mpic 3 1
			0x9300 0 0 2 &mpic 4 1
			0x9300 0 0 3 &mpic 1 1
			0x9300 0 0 4 &mpic 2 1
481 482

			/* IDSEL 0x12 func 4 - PCI slot 2 */
483 484 485 486
			0x9400 0 0 1 &mpic 3 1
			0x9400 0 0 2 &mpic 4 1
			0x9400 0 0 3 &mpic 1 1
			0x9400 0 0 4 &mpic 2 1
487 488

			/* IDSEL 0x12 func 5 - PCI slot 2 */
489 490 491 492
			0x9500 0 0 1 &mpic 3 1
			0x9500 0 0 2 &mpic 4 1
			0x9500 0 0 3 &mpic 1 1
			0x9500 0 0 4 &mpic 2 1
493 494

			/* IDSEL 0x12 func 6 - PCI slot 2 */
495 496 497 498
			0x9600 0 0 1 &mpic 3 1
			0x9600 0 0 2 &mpic 4 1
			0x9600 0 0 3 &mpic 1 1
			0x9600 0 0 4 &mpic 2 1
499 500

			/* IDSEL 0x12 func 7 - PCI slot 2 */
501 502 503 504
			0x9700 0 0 1 &mpic 3 1
			0x9700 0 0 2 &mpic 4 1
			0x9700 0 0 3 &mpic 1 1
			0x9700 0 0 4 &mpic 2 1
505

506
			// IDSEL 0x1c  USB
507 508 509
			0xe000 0 0 1 &i8259 12 2
			0xe100 0 0 2 &i8259 9 2
			0xe200 0 0 3 &i8259 10 2
510
			0xe300 0 0 4 &i8259 11 2
511

512
			// IDSEL 0x1d  Audio
513
			0xe800 0 0 1 &i8259 6 2
514

515
			// IDSEL 0x1e Legacy
516 517
			0xf000 0 0 1 &i8259 7 2
			0xf100 0 0 1 &i8259 7 2
518 519

			// IDSEL 0x1f IDE/SATA
520 521
			0xf800 0 0 1 &i8259 14 2
			0xf900 0 0 1 &i8259 5 2
522 523 524 525 526 527 528
			>;

		pcie@0 {
			reg = <0 0 0 0 0>;
			#size-cells = <2>;
			#address-cells = <3>;
			device_type = "pci";
529 530 531
			ranges = <0x02000000 0x0 0x80000000
				  0x02000000 0x0 0x80000000
				  0x0 0x20000000
532

533 534
				  0x01000000 0x0 0x00000000
				  0x01000000 0x0 0x00000000
535
				  0x0 0x00010000>;
536 537 538 539
			uli1575@0 {
				reg = <0 0 0 0 0>;
				#size-cells = <2>;
				#address-cells = <3>;
540 541 542 543 544
				ranges = <0x02000000 0x0 0x80000000
					  0x02000000 0x0 0x80000000
					  0x0 0x20000000
					  0x01000000 0x0 0x00000000
					  0x01000000 0x0 0x00000000
545
					  0x0 0x00010000>;
546 547 548 549 550
				isa@1e {
					device_type = "isa";
					#interrupt-cells = <2>;
					#size-cells = <1>;
					#address-cells = <2>;
551 552 553
					reg = <0xf000 0 0 0 0>;
					ranges = <1 0 0x01000000 0 0
						  0x00001000>;
554
					interrupt-parent = <&i8259>;
555

556
					i8259: interrupt-controller@20 {
557 558 559
						reg = <1 0x20 2
						       1 0xa0 2
						       1 0x4d0 2>;
560 561 562
						interrupt-controller;
						device_type = "interrupt-controller";
						#address-cells = <0>;
563
						#interrupt-cells = <2>;
564 565 566 567
						compatible = "chrp,iic";
						interrupts = <9 2>;
						interrupt-parent = <&mpic>;
					};
568

569 570 571
					i8042@60 {
						#size-cells = <0>;
						#address-cells = <1>;
572 573
						reg = <1 0x60 1 1 0x64 1>;
						interrupts = <1 3 12 3>;
574 575
						interrupt-parent =
							<&i8259>;
576

577 578 579
						keyboard@0 {
							reg = <0>;
							compatible = "pnpPNP,303";
580 581
						};

582 583 584
						mouse@1 {
							reg = <1>;
							compatible = "pnpPNP,f03";
585
						};
586
					};
587

588 589 590
					rtc@70 {
						compatible =
							"pnpPNP,b00";
591
						reg = <1 0x70 2>;
592 593 594
					};

					gpio@400 {
595
						reg = <1 0x400 0x80>;
596 597
					};
				};
598 599
			};
		};
600

601 602
	};

603
	pci1: pcie@ffe09000 {
604 605 606 607 608
		compatible = "fsl,mpc8641-pcie";
		device_type = "pci";
		#interrupt-cells = <1>;
		#size-cells = <2>;
		#address-cells = <3>;
609
		reg = <0xffe09000 0x1000>;
610 611
		bus-range = <0 0xff>;
		ranges = <0x02000000 0x0 0xa0000000 0xa0000000 0x0 0x20000000
612
			  0x01000000 0x0 0x00000000 0xffc10000 0x0 0x00010000>;
613
		clock-frequency = <33333333>;
614
		interrupt-parent = <&mpic>;
615 616
		interrupts = <25 2>;
		interrupt-map-mask = <0xf800 0 0 7>;
617 618
		interrupt-map = <
			/* IDSEL 0x0 */
619 620 621 622
			0x0000 0 0 1 &mpic 4 1
			0x0000 0 0 2 &mpic 5 1
			0x0000 0 0 3 &mpic 6 1
			0x0000 0 0 4 &mpic 7 1
623 624 625
			>;
		pcie@0 {
			reg = <0 0 0 0 0>;
626 627
			#size-cells = <2>;
			#address-cells = <3>;
628
			device_type = "pci";
629 630 631
			ranges = <0x02000000 0x0 0xa0000000
				  0x02000000 0x0 0xa0000000
				  0x0 0x20000000
632

633 634
				  0x01000000 0x0 0x00000000
				  0x01000000 0x0 0x00000000
635
				  0x0 0x00010000>;
636 637
		};
	};
638
/*
639 640 641 642 643 644 645 646 647 648
 * Only one of Rapid IO or PCI can be present due to HW limitations and
 * due to the fact that the 2 now share address space in the new memory
 * map.  The most likely case is that we have PCI, so comment out the
 * rapidio node.  Leave it here for reference.

	rapidio@ffec0000 {
		reg = <0xffec0000 0x11000>;
		compatible = "fsl,srio";
		interrupt-parent = <&mpic>;
		interrupts = <48 2>;
649 650
		#address-cells = <2>;
		#size-cells = <2>;
651 652 653 654 655 656 657 658 659
		fsl,srio-rmu-handle = <&rmu>;
		ranges;

		port1 {
			#address-cells = <2>;
			#size-cells = <2>;
			cell-index = <1>;
			ranges = <0 0 0x80000000 0 0x20000000>;
		};
660
	};
661 662
*/

663
};