/*
 * 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/ "p1020si.dtsi"

/ {
	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";
		};

		enet0: ethernet@b0000 {
			fixed-link = <1 1 1000 0 0>;
			phy-connection-type = "rgmii-id";

		};

		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";
	};
};
