/*
 * 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>;
			};
		};

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