/*
 * Keymile kmcoge4 Device Tree Source, based on the P2041RDB DTS
 *
 * (C) Copyright 2014
 * Valentin Longchamp, Keymile AG, valentin.longchamp@keymile.com
 *
 * 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/ "p2041si-pre.dtsi"

/ {
	model = "keymile,kmcoge4";
	compatible = "keymile,kmcoge4", "keymile,kmp204x";
	#address-cells = <2>;
	#size-cells = <2>;
	interrupt-parent = <&mpic>;

	memory {
		device_type = "memory";
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		bman_fbpr: bman-fbpr {
			size = <0 0x1000000>;
			alignment = <0 0x1000000>;
		};
		qman_fqd: qman-fqd {
			size = <0 0x400000>;
			alignment = <0 0x400000>;
		};
		qman_pfdr: qman-pfdr {
			size = <0 0x2000000>;
			alignment = <0 0x2000000>;
		};
	};

	dcsr: dcsr@f00000000 {
		ranges = <0x00000000 0xf 0x00000000 0x01008000>;
	};

	bportals: bman-portals@ff4000000 {
		ranges = <0x0 0xf 0xf4000000 0x200000>;
	};

	qportals: qman-portals@ff4200000 {
		ranges = <0x0 0xf 0xf4200000 0x200000>;
	};

	soc: soc@ffe000000 {
		ranges = <0x00000000 0xf 0xfe000000 0x1000000>;
		reg = <0xf 0xfe000000 0 0x00001000>;
		spi@110000 {
			flash@0 {
				#address-cells = <1>;
				#size-cells = <1>;
				compatible = "spansion,s25fl256s1", "jedec,spi-nor";
				reg = <0>;
				spi-max-frequency = <20000000>; /* input clock */
			};

			network_clock@1 {
				compatible = "zarlink,zl30343";
				reg = <1>;
				spi-max-frequency = <8000000>;
			};

			flash@2 {
				#address-cells = <1>;
				#size-cells = <1>;
				compatible = "micron,m25p32", "jedec,spi-nor";
				reg = <2>;
				spi-max-frequency = <15000000>;
			};
		};

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

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

		usb0: usb@210000 {
			status = "disabled";
		};

		usb1: usb@211000 {
			status = "disabled";
		};

		sata@220000 {
			status = "disabled";
		};

		sata@221000 {
			status = "disabled";
		};
	};

	rio: rapidio@ffe0c0000 {
		status = "disabled";
	};

	lbc: localbus@ffe124000 {
		reg = <0xf 0xfe124000 0 0x1000>;
		ranges = <0 0 0xf 0xffa00000 0x00040000		/* LB 0 */
			  1 0 0xf 0xfb000000 0x00010000		/* LB 1 */
			  2 0 0xf 0xd0000000 0x10000000		/* LB 2 */
			  3 0 0xf 0xe0000000 0x10000000>;	/* LB 3 */

		nand@0,0 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,elbc-fcm-nand";
			reg = <0 0 0x40000>;
		};

		board-control@1,0 {
			compatible = "keymile,qriox";
			reg = <1 0 0x80>;
		};

		chassis-mgmt@3,0 {
			compatible = "keymile,bfticu";
			interrupt-controller;
			#interrupt-cells = <2>;
			reg = <3 0 0x100>;
			interrupt-parent = <&mpic>;
			interrupts = <6 1 0 0>;
		};
	};

	pci0: pcie@ffe200000 {
		reg = <0xf 0xfe200000 0 0x1000>;
		ranges = <0x02000000 0 0xe0000000 0xc 0x00000000 0x0 0x20000000
			  0x01000000 0 0x00000000 0xf 0xf8000000 0x0 0x00010000>;
		pcie@0 {
			ranges = <0x02000000 0 0xe0000000
				  0x02000000 0 0xe0000000
				  0 0x20000000

				  0x01000000 0 0x00000000
				  0x01000000 0 0x00000000
				  0 0x00010000>;
		};
	};

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

	pci2: pcie@ffe202000 {
		reg = <0xf 0xfe202000 0 0x1000>;
		ranges = <0x02000000 0 0xe0000000 0xc 0x20000000 0 0x20000000
			  0x01000000 0 0x00000000 0xf 0xf8010000 0 0x00010000>;
		pcie@0 {
			ranges = <0x02000000 0 0xe0000000
				  0x02000000 0 0xe0000000
				  0 0x20000000

				  0x01000000 0 0x00000000
				  0x01000000 0 0x00000000
				  0 0x00010000>;
		};
	};
};

/include/ "p2041si-post.dtsi"
