/*
 * P1020 RDB Core1 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 allows core1 to have l2, eth0, crypto.
 *
 * Please note to add "-b 1" for core1's dts compiling.
 *
 * Copyright 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/ "p1020rdb.dts"

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

	aliases {
		ethernet0 = &enet0;
		serial0 = &serial1;
		};

	cpus {
		PowerPC,P1020@0 {
			status = "disabled";
		};
	};

	memory {
		device_type = "memory";
	};

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

	soc@ffe00000 {
		ecm-law@0 {
			status = "disabled";
		};

		ecm@1000 {
			status = "disabled";
		};

		memory-controller@2000 {
			status = "disabled";
		};

		i2c@3000 {
			status = "disabled";
		};

		i2c@3100 {
			status = "disabled";
		};

		serial0: serial@4500 {
			status = "disabled";
		};

		spi@7000 {
			status = "disabled";
		};

		gpio: gpio-controller@f000 {
			status = "disabled";
		};

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

		mdio@24000 {
			status = "disabled";
		};

		mdio@25000 {
			status = "disabled";
		};

		enet1: ethernet@b1000 {
			status = "disabled";
		};

		enet2: ethernet@b2000 {
			status = "disabled";
		};

		usb@22000 {
			status = "disabled";
		};

		sdhci@2e000 {
			status = "disabled";
		};

		mpic: pic@40000 {
			protected-sources = <
			16 		/* ecm, mem, L2, pci0, pci1 */
			43 42 59	/* i2c, serial0, spi */
			47 63 62 	/* gpio, tdm */
			20 21 22 23	/* dma */
			03 02 		/* mdio */
			35 36 40	/* enet1-queue-group0 */
			51 52 67	/* enet1-queue-group1 */
			31 32 33	/* enet2-queue-group0 */
			25 26 27	/* enet2-queue-group1 */
			28 72 58 	/* usb, sdhci, crypto */
			0xb0 0xb1 0xb2	/* message */
			0xb3 0xb4 0xb5
			0xb6 0xb7
			0xe0 0xe1 0xe2	/* msi */
			0xe3 0xe4 0xe5
			0xe6 0xe7		/* sdhci, crypto , pci */
			>;
		};

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

		global-utilities@e0000 {	//global utilities block
			status = "disabled";
		};
	};

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

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