/*
 * Device Tree for the Embedded Planet EP8248E board running PlanetCore.
 *
 * Copyright 2007 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.
 */

/dts-v1/;
/ {
	model = "EP8248E";
	compatible = "fsl,ep8248e";
	#address-cells = <1>;
	#size-cells = <1>;

	aliases {
		planetcore-SMC1 = &smc1;
		planetcore-SCC1 = &scc1;
		ethernet0 = &eth0;
		ethernet1 = &eth1;
		serial0 = &smc1;
		serial1 = &scc1;
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		PowerPC,8248@0 {
			device_type = "cpu";
			reg = <0>;
			d-cache-line-size = <32>;
			i-cache-line-size = <32>;
			d-cache-size = <16384>;
			i-cache-size = <16384>;
			timebase-frequency = <0>;
			clock-frequency = <0>;
		};
	};

	localbus@f0010100 {
		compatible = "fsl,mpc8248-localbus",
		             "fsl,pq2-localbus",
		             "simple-bus";
		#address-cells = <2>;
		#size-cells = <1>;
		reg = <0xf0010100 0x40>;

		ranges = <0 0 0xfc000000 0x04000000
		          1 0 0xfa000000 0x00008000>;

		flash@0,3800000 {
			compatible = "cfi-flash";
			reg = <0 0x3800000 0x800000>;
			bank-width = <4>;
			device-width = <2>;
		};

		bcsr@1,0 {
			#address-cells = <2>;
			#size-cells = <1>;
			reg = <1 0 0x10>;
			compatible = "fsl,ep8248e-bcsr";
			ranges;

			mdio {
				device_type = "mdio";
				compatible = "fsl,ep8248e-mdio-bitbang";
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <1 8 1>;

				PHY0: ethernet-phy@0 {
					interrupt-parent = <&PIC>;
					reg = <0>;
					device_type = "ethernet-phy";
				};

				PHY1: ethernet-phy@1 {
					interrupt-parent = <&PIC>;
					reg = <1>;
					device_type = "ethernet-phy";
				};
			};
		};
	};

	memory {
		device_type = "memory";
		reg = <0 0>;
	};

	soc@f0000000 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "fsl,mpc8248-immr", "fsl,pq2-soc", "simple-bus";
		ranges = <0x00000000 0xf0000000 0x00053000>;

		// Temporary until code stops depending on it.
		device_type = "soc";

		// Temporary -- will go away once kernel uses ranges for get_immrbase().
		reg = <0xf0000000 0x00053000>;

		cpm@119c0 {
			#address-cells = <1>;
			#size-cells = <1>;
			#interrupt-cells = <2>;
			compatible = "fsl,mpc8248-cpm", "fsl,cpm2",
			             "simple-bus";
			reg = <0x119c0 0x30>;
			ranges;

			muram {
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0 0 0x10000>;

				data@0 {
					compatible = "fsl,cpm-muram-data";
					reg = <0 0x2000 0x9800 0x800>;
				};
			};

			brg@119f0 {
				compatible = "fsl,mpc8248-brg",
				             "fsl,cpm2-brg",
				             "fsl,cpm-brg";
				reg = <0x119f0 0x10 0x115f0 0x10>;
			};

			/* Monitor port/SMC1 */
			smc1: serial@11a80 {
				device_type = "serial";
				compatible = "fsl,mpc8248-smc-uart",
				             "fsl,cpm2-smc-uart";
				reg = <0x11a80 0x20 0x87fc 2>;
				interrupts = <4 8>;
				interrupt-parent = <&PIC>;
				fsl,cpm-brg = <7>;
				fsl,cpm-command = <0x1d000000>;
				linux,planetcore-label = "SMC1";
			};

			/* "Serial" port/SCC1 */
			scc1: serial@11a00 {
				device_type = "serial";
				compatible = "fsl,mpc8248-scc-uart",
				             "fsl,cpm2-scc-uart";
				reg = <0x11a00 0x20 0x8000 0x100>;
				interrupts = <40 8>;
				interrupt-parent = <&PIC>;
				fsl,cpm-brg = <1>;
				fsl,cpm-command = <0x00800000>;
				linux,planetcore-label = "SCC1";
			};

			eth0: ethernet@11300 {
				device_type = "network";
				compatible = "fsl,mpc8248-fcc-enet",
				             "fsl,cpm2-fcc-enet";
				reg = <0x11300 0x20 0x8400 0x100 0x11390 1>;
				local-mac-address = [ 00 00 00 00 00 00 ];
				interrupts = <32 8>;
				interrupt-parent = <&PIC>;
				phy-handle = <&PHY0>;
				linux,network-index = <0>;
				fsl,cpm-command = <0x12000300>;
			};

			eth1: ethernet@11320 {
				device_type = "network";
				compatible = "fsl,mpc8248-fcc-enet",
				             "fsl,cpm2-fcc-enet";
				reg = <0x11320 0x20 0x8500 0x100 0x113b0 1>;
				local-mac-address = [ 00 00 00 00 00 00 ];
				interrupts = <33 8>;
				interrupt-parent = <&PIC>;
				phy-handle = <&PHY1>;
				linux,network-index = <1>;
				fsl,cpm-command = <0x16200300>;
			};

			usb@11b60 {
				#address-cells = <1>;
				#size-cells = <0>;
				compatible = "fsl,mpc8248-usb",
				             "fsl,cpm2-usb";
				reg = <0x11b60 0x18 0x8b00 0x100>;
				interrupt-parent = <&PIC>;
				interrupts = <11 8>;
				fsl,cpm-command = <0x2e600000>;
			};
		};

		PIC: interrupt-controller@10c00 {
			#interrupt-cells = <2>;
			interrupt-controller;
			reg = <0x10c00 0x80>;
			compatible = "fsl,mpc8248-pic", "fsl,pq2-pic";
		};
	};
};
