/*
 * TQM8XX Device Tree Source
 *
 * Heiko Schocher <hs@denx.de>
 * 2010 DENX Software Engineering GmbH
 *
 * 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 = "TQM8xx";
	compatible = "tqc,tqm8xx";
	#address-cells = <1>;
	#size-cells = <1>;

	aliases {
		ethernet0 = &eth0;
		ethernet1 = &eth1;
		mdio1 = &phy1;
		serial0 = &smc1;
	};

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

		PowerPC,860@0 {
			device_type = "cpu";
			reg = <0x0>;
			d-cache-line-size = <16>;	// 16 bytes
			i-cache-line-size = <16>;	// 16 bytes
			d-cache-size = <0x1000>;		// L1, 4K
			i-cache-size = <0x1000>;		// L1, 4K
			timebase-frequency = <0>;
			bus-frequency = <0>;
			clock-frequency = <0>;
			interrupts = <15 2>;	// decrementer interrupt
			interrupt-parent = <&PIC>;
		};
	};

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

	localbus@fff00100 {
		compatible = "fsl,mpc860-localbus", "fsl,pq1-localbus";
		#address-cells = <2>;
		#size-cells = <1>;
		reg = <0xfff00100 0x40>;

		ranges = <
			0x0 0x0 0x40000000 0x800000
			0x3 0x0 0xc0000000 0x200
		>;

		flash@0,0 {
			compatible = "cfi-flash";
			reg = <0 0 0x800000>;
			#address-cells = <1>;
			#size-cells = <1>;
			bank-width = <4>;
			device-width = <2>;
		};

		/* Note: CAN support needs be enabled in U-Boot */
		can@3,0 {
			compatible = "intc,82527";
			reg = <3 0x0 0x80>;
			interrupts = <8 1>;
			interrupt-parent = <&PIC>;
			bosch,external-clock-frequency = <16000000>;
			bosch,disconnect-rx1-input;
			bosch,disconnect-tx1-output;
			bosch,iso-low-speed-mux;
			bosch,clock-out-frequency = <16000000>;
		};

		can@3,100 {
			compatible = "intc,82527";
			reg = <3 0x100 0x80>;
			interrupts = <8 1>;
			interrupt-parent = <&PIC>;
			bosch,external-clock-frequency = <16000000>;
			bosch,disconnect-rx1-input;
			bosch,disconnect-tx1-output;
			bosch,iso-low-speed-mux;
		};
	};

	soc@fff00000 {
		#address-cells = <1>;
		#size-cells = <1>;
		device_type = "soc";
		ranges = <0x0 0xfff00000 0x00004000>;

		phy1: mdio@e00 {
			compatible = "fsl,mpc866-fec-mdio", "fsl,pq1-fec-mdio";
			reg = <0xe00 0x188>;
			#address-cells = <1>;
			#size-cells = <0>;
			PHY: ethernet-phy@f {
				reg = <0xf>;
				device_type = "ethernet-phy";
			};
		};

		eth1: ethernet@e00 {
			device_type = "network";
			compatible = "fsl,mpc866-fec-enet",
			             "fsl,pq1-fec-enet";
			reg = <0xe00 0x188>;
			interrupts = <3 1>;
			interrupt-parent = <&PIC>;
			phy-handle = <&PHY>;
			linux,network-index = <1>;
		};

		PIC: pic@0 {
			interrupt-controller;
			#interrupt-cells = <2>;
			reg = <0x0 0x24>;
			compatible = "fsl,mpc860-pic", "fsl,pq1-pic";
		};

		cpm@9c0 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,mpc860-cpm", "fsl,cpm1";
			ranges;
			reg = <0x9c0 0x40>;
			brg-frequency = <0>;
			interrupts = <0 2>;	// cpm error interrupt
			interrupt-parent = <&CPM_PIC>;

			muram@2000 {
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0x0 0x2000 0x2000>;

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

			brg@9f0 {
				compatible = "fsl,mpc860-brg",
					     "fsl,cpm1-brg",
					     "fsl,cpm-brg";
				reg = <0x9f0 0x10>;
				clock-frequency = <0>;
			};

			CPM_PIC: pic@930 {
				interrupt-controller;
				#address-cells = <0>;
				#interrupt-cells = <1>;
				interrupts = <5 2 0 2>;
				interrupt-parent = <&PIC>;
				reg = <0x930 0x20>;
				compatible = "fsl,mpc860-cpm-pic",
				             "fsl,cpm1-pic";
			};


			smc1: serial@a80 {
				device_type = "serial";
				compatible = "fsl,mpc860-smc-uart",
				             "fsl,cpm1-smc-uart";
				reg = <0xa80 0x10 0x3e80 0x40>;
				interrupts = <4>;
				interrupt-parent = <&CPM_PIC>;
				fsl,cpm-brg = <1>;
				fsl,cpm-command = <0x90>;
			};

			eth0: ethernet@a00 {
				device_type = "network";
				compatible = "fsl,mpc860-scc-enet",
				             "fsl,cpm1-scc-enet";
				reg = <0xa00 0x18 0x3c00 0x100>;
				interrupts = <30>;
				interrupt-parent = <&CPM_PIC>;
				fsl,cpm-command = <0000>;
				linux,network-index = <0>;
				fixed-link = <0 0 10 0 0>;
			};
		};
	};
};
