/dts-v1/;

#include <dt-bindings/clock/boston-clock.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/interrupt-controller/mips-gic.h>

/ {
	#address-cells = <1>;
	#size-cells = <1>;
	compatible = "img,boston";

	chosen {
		stdout-path = &uart0;
	};

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

		cpu@0 {
			device_type = "cpu";
			compatible = "img,mips";
			reg = <0>;
			clocks = <&clk_boston BOSTON_CLK_CPU>;
		};
	};

	memory@0 {
		device_type = "memory";
		reg = <0x00000000 0x10000000>;
	};

	gic: interrupt-controller {
		compatible = "mti,gic";

		interrupt-controller;
		#interrupt-cells = <3>;

		timer {
			compatible = "mti,gic-timer";
			interrupts = <GIC_LOCAL 1 IRQ_TYPE_NONE>;
			clocks = <&clk_boston BOSTON_CLK_CPU>;
		};
	};

	pci0: pci@10000000 {
		status = "disabled";
		compatible = "xlnx,axi-pcie-host-1.00.a";
		device_type = "pci";
		reg = <0x10000000 0x2000000>;

		#address-cells = <3>;
		#size-cells = <2>;
		#interrupt-cells = <1>;

		interrupt-parent = <&gic>;
		interrupts = <GIC_SHARED 2 IRQ_TYPE_LEVEL_HIGH>;

		ranges = <0x02000000 0 0x40000000
			  0x40000000 0 0x40000000>;

		interrupt-map-mask = <0 0 0 7>;
		interrupt-map = <0 0 0 1 &pci0_intc 0>,
				<0 0 0 2 &pci0_intc 1>,
				<0 0 0 3 &pci0_intc 2>,
				<0 0 0 4 &pci0_intc 3>;

		pci0_intc: interrupt-controller {
			interrupt-controller;
			#address-cells = <0>;
			#interrupt-cells = <1>;
		};
	};

	pci1: pci@12000000 {
		status = "disabled";
		compatible = "xlnx,axi-pcie-host-1.00.a";
		device_type = "pci";
		reg = <0x12000000 0x2000000>;

		#address-cells = <3>;
		#size-cells = <2>;
		#interrupt-cells = <1>;

		interrupt-parent = <&gic>;
		interrupts = <GIC_SHARED 1 IRQ_TYPE_LEVEL_HIGH>;

		ranges = <0x02000000 0 0x20000000
			  0x20000000 0 0x20000000>;

		interrupt-map-mask = <0 0 0 7>;
		interrupt-map = <0 0 0 1 &pci1_intc 0>,
				<0 0 0 2 &pci1_intc 1>,
				<0 0 0 3 &pci1_intc 2>,
				<0 0 0 4 &pci1_intc 3>;

		pci1_intc: interrupt-controller {
			interrupt-controller;
			#address-cells = <0>;
			#interrupt-cells = <1>;
		};
	};

	pci2: pci@14000000 {
		compatible = "xlnx,axi-pcie-host-1.00.a";
		device_type = "pci";
		reg = <0x14000000 0x2000000>;

		#address-cells = <3>;
		#size-cells = <2>;
		#interrupt-cells = <1>;

		interrupt-parent = <&gic>;
		interrupts = <GIC_SHARED 0 IRQ_TYPE_LEVEL_HIGH>;

		ranges = <0x02000000 0 0x16000000
			  0x16000000 0 0x100000>;

		interrupt-map-mask = <0 0 0 7>;
		interrupt-map = <0 0 0 1 &pci2_intc 0>,
				<0 0 0 2 &pci2_intc 1>,
				<0 0 0 3 &pci2_intc 2>,
				<0 0 0 4 &pci2_intc 3>;

		pci2_intc: interrupt-controller {
			interrupt-controller;
			#address-cells = <0>;
			#interrupt-cells = <1>;
		};

		pci2_root@0,0,0 {
			compatible = "pci10ee,7021";
			reg = <0x00000000 0 0 0 0>;

			#address-cells = <3>;
			#size-cells = <2>;
			#interrupt-cells = <1>;

			eg20t_bridge@1,0,0 {
				compatible = "pci8086,8800";
				reg = <0x00010000 0 0 0 0>;

				#address-cells = <3>;
				#size-cells = <2>;
				#interrupt-cells = <1>;

				eg20t_mac@2,0,1 {
					compatible = "pci8086,8802";
					reg = <0x00020100 0 0 0 0>;
					phy-reset-gpios = <&eg20t_gpio 6 GPIO_ACTIVE_LOW>;
				};

				eg20t_gpio: eg20t_gpio@2,0,2 {
					compatible = "pci8086,8803";
					reg = <0x00020200 0 0 0 0>;

					gpio-controller;
					#gpio-cells = <2>;
				};

				eg20t_i2c@2,12,2 {
					compatible = "pci8086,8817";
					reg = <0x00026200 0 0 0 0>;

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

					rtc@0x68 {
						compatible = "st,m41t81s";
						reg = <0x68>;
					};
				};
			};
		};
	};

	plat_regs: system-controller@17ffd000 {
		compatible = "img,boston-platform-regs", "syscon";
		reg = <0x17ffd000 0x1000>;
		u-boot,dm-pre-reloc;
	};

	clk_boston: clock {
		compatible = "img,boston-clock";
		#clock-cells = <1>;
		regmap = <&plat_regs>;
		u-boot,dm-pre-reloc;
	};

	reboot: syscon-reboot {
		compatible = "syscon-reboot";
		regmap = <&plat_regs>;
		offset = <0x10>;
		mask = <0x10>;
	};

	uart0: uart@17ffe000 {
		compatible = "ns16550a";
		reg = <0x17ffe000 0x1000>;
		reg-shift = <2>;
		reg-io-width = <4>;

		interrupt-parent = <&gic>;
		interrupts = <GIC_SHARED 3 IRQ_TYPE_LEVEL_HIGH>;

		clocks = <&clk_boston BOSTON_CLK_SYS>;

		u-boot,dm-pre-reloc;
	};

	lcd: lcd@17fff000 {
		compatible = "img,boston-lcd";
		reg = <0x17fff000 0x8>;
	};

	flash@18000000 {
		compatible = "cfi-flash";
		reg = <0x18000000 0x8000000>;
		bank-width = <2>;
	};
};