/*
 * P2020 RDB  Core0 Device Tree Source in CAMP mode.
 *
 * In CAMP mode, each core needs to have its own dts. Only mpic and L2 cache
 * can be shared, all the other devices must be assigned to one core only.
 * This dts file allows core0 to have memory, l2, i2c, spi, gpio, dma1, usb,
 * eth1, eth2, sdhc, crypto, global-util, pci0.
 *
 * Copyright 2009-2011 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.
 */

/include/ "p2020rdb.dts"

/ {
	model = "fsl,P2020RDB";
	compatible = "fsl,P2020RDB", "fsl,MPC85XXRDB-CAMP";

	cpus {
		PowerPC,P2020@1 {
			status = "disabled";
		};
	};

	localbus@ffe05000 {
		status = "disabled";
	};

	soc@ffe00000 {
		serial1: serial@4600 {
			status = "disabled";
		};

		dma@c300 {
			status = "disabled";
		};

		enet0: ethernet@24000 {
			status = "disabled";
		};

		mpic: pic@40000 {
			protected-sources = <
			42 76 77 78 79 /* serial1 , dma2 */
			29 30 34 26 /* enet0, pci1 */
			0xe0 0xe1 0xe2 0xe3 /* msi */
			0xe4 0xe5 0xe6 0xe7
			>;
		};

		msi@41600 {
			status = "disabled";
		};
	};

	pci0: pcie@ffe08000 {
		status = "disabled";
	};

	pci2: pcie@ffe0a000 {
		status = "disabled";
	};
};
