/*
 * MPC8641 Silicon/SoC Device Tree Source (post include)
 *
 * Copyright 2016 Elettra-Sincrotrone Trieste S.C.p.A.
 *
 * 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.
 *
 */

&lbc {
	#address-cells = <2>;
	#size-cells = <1>;
	compatible = "fsl,mpc8641-localbus", "simple-bus";
	interrupts = <19 2 0 0>;
};

&soc {
	#address-cells = <1>;
	#size-cells = <1>;
	device_type = "soc";
	compatible = "fsl,mpc8641-soc", "simple-bus";
	bus-frequency = <0>;

	mcm-law@0 {
		compatible = "fsl,mcm-law";
		reg = <0x0 0x1000>;
		fsl,num-laws = <10>;
	};

	mcm@1000 {
		compatible = "fsl,mpc8641-mcm", "fsl,mcm";
		reg = <0x1000 0x1000>;
		interrupts = <17 2 0 0>;
	};

/include/ "pq3-i2c-0.dtsi"
/include/ "pq3-i2c-1.dtsi"
/include/ "pq3-duart-0.dtsi"
	serial@4600 {
		interrupts = <28 2 0 0>;
	};
/include/ "pq3-dma-0.dtsi"
	dma@21300 {
		compatible = "fsl,mpc8641-dma", "fsl,eloplus-dma";
	};
	dma-channel@0 {
		compatible = "fsl,mpc8641-dma-channel", "fsl,eloplus-dma-channel";
	};
	dma-channel@80 {
		compatible = "fsl,mpc8641-dma-channel", "fsl,eloplus-dma-channel";
	};
	dma-channel@100 {
		compatible = "fsl,mpc8641-dma-channel", "fsl,eloplus-dma-channel";
	};
	dma-channel@180 {
		compatible = "fsl,mpc8641-dma-channel", "fsl,eloplus-dma-channel";
	};

/include/ "pq3-etsec1-0.dtsi"
	ethernet@24000 {
		model = "TSEC";
	};
/include/ "pq3-etsec1-1.dtsi"
	ethernet@25000 {
		model = "TSEC";
	};
/include/ "pq3-etsec1-2.dtsi"
	ethernet@26000 {
		model = "TSEC";
	};
/include/ "pq3-etsec1-3.dtsi"
	ethernet@27000 {
		model = "TSEC";
	};

/include/ "qoriq-mpic.dtsi"
	msi@41600 {
		compatible = "fsl,mpc8641-msi", "fsl,mpic-msi";
	};
	msi@41800 {
		compatible = "fsl,mpc8641-msi", "fsl,mpic-msi";
	};
	msi@41a00 {
		compatible = "fsl,mpc8641-msi", "fsl,mpic-msi";
	};

	global-utilities@e0000 {
		compatible = "fsl,mpc8641-guts";
		reg = <0xe0000 0x1000>;
		fsl,has-rstcr;
	};
};

&pci0 {
	compatible = "fsl,mpc8641-pcie";
	device_type = "pci";
	#size-cells = <2>;
	#address-cells = <3>;
	bus-range = <0x0 0xff>;
	clock-frequency = <100000000>;
	interrupts = <24 2 0 0>;

	pcie@0 {
		reg = <0 0 0 0 0>;
		#interrupt-cells = <1>;
		#size-cells = <2>;
		#address-cells = <3>;
		device_type = "pci";
		interrupts = <24 2 0 0>;
		interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
		interrupt-map = <
			0x0000 0x0 0x0 0x1 &mpic 0x0 0x1 0x0 0x0
			0x0000 0x0 0x0 0x2 &mpic 0x1 0x1 0x0 0x0
			0x0000 0x0 0x0 0x3 &mpic 0x2 0x1 0x0 0x0
			0x0000 0x0 0x0 0x4 &mpic 0x3 0x1 0x0 0x0
			>;
	};
};

&pci1 {
	compatible = "fsl,mpc8641-pcie";
	device_type = "pci";
	#size-cells = <2>;
	#address-cells = <3>;
	bus-range = <0x0 0xff>;
	clock-frequency = <100000000>;
	interrupts = <25 2 0 0>;

	pcie@0 {
		reg = <0 0 0 0 0>;
		#interrupt-cells = <1>;
		#size-cells = <2>;
		#address-cells = <3>;
		device_type = "pci";
		interrupts = <25 2 0 0>;
		interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
		interrupt-map = <
			0x0000 0x0 0x0 0x1 &mpic 0x4 0x1 0x0 0x0
			0x0000 0x0 0x0 0x2 &mpic 0x5 0x1 0x0 0x0
			0x0000 0x0 0x0 0x3 &mpic 0x6 0x1 0x0 0x0
			0x0000 0x0 0x0 0x4 &mpic 0x7 0x1 0x0 0x0
			>;
	};
};
