/dts-v1/;

#include <dt-bindings/gpio/gpio.h>

/ {
	#address-cells = <1>;
	#size-cells = <1>;
	compatible = "lantiq,xway", "lantiq,ase";

	aliases {
		serial0 = &asc1;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

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

		cpu@0 {
			compatible = "mips,mips4Kc";
			reg = <0>;
		};
	};

	reboot {
		compatible = "syscon-reboot";

		regmap = <&rcu0>;
		offset = <0x10>;
		mask = <0x40000000>;
	};

	biu@1f800000 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "lantiq,biu", "simple-bus";
		reg = <0x1f800000 0x800000>;
		ranges = <0x0 0x1f800000 0x7fffff>;

		icu0: icu@80200 {
			#interrupt-cells = <1>;
			interrupt-controller;
			compatible = "lantiq,icu";
			reg = <0x80200 0xc8>;
		};

		watchdog@803f0 {
			compatible = "lantiq,wdt";
			reg = <0x803f0 0x10>;
		};
	};

	sram@1f000000 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "lantiq,sram", "simple-bus";
		reg = <0x1f000000 0x800000>;
		ranges = <0x0 0x1f000000 0x7fffff>;

		eiu0: eiu@101000 {
			#interrupt-cells = <1>;
			interrupt-controller;
			compatible = "lantiq,eiu-xway";
			reg = <0x101000 0x1000>;
			interrupt-parent = <&icu0>;
			lantiq,eiu-irqs = <29 30 31>;
		};

		pmu0: pmu@102000 {
			compatible = "lantiq,pmu-xway";
			reg = <0x102000 0x1000>;
		};

		cgu0: cgu@103000 {
			compatible = "lantiq,cgu-xway";
			reg = <0x103000 0x1000>;
			#clock-cells = <1>;
		};

		rcu0: rcu@203000 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "lantiq,ase-rcu", "simple-mfd", "syscon";
			reg = <0x203000 0x1000>;
			ranges = <0x0 0x203000 0x100>;
			big-endian;

			reset: reset-controller@10 {
				compatible = "lantiq,danube-reset";
				reg = <0x10 4>, <0x14 4>;

				#reset-cells = <2>;
			};

			usb_phy: usb2-phy@18 {
				compatible = "lantiq,ase-usb2-phy";
				reg = <0x18 4>;
				status = "disabled";

				resets = <&reset 4 4>;
				reset-names = "ctrl";
				#phy-cells = <0>;
			};
		};
	};

	fpi@10000000 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "lantiq,fpi", "simple-bus";
		ranges = <0x0 0x10000000 0xeefffff>;
		reg = <0x10000000 0xef00000>;

		localbus: localbus@0 {
			#address-cells = <2>;
			#size-cells = <1>;
			ranges = <0 0 0x0 0x3ffffff /* addrsel0 */
				1 0 0x4000000 0x4000010>; /* addsel1 */
			compatible = "lantiq,localbus", "simple-bus";
		};

		spi: spi@e100800 {
			compatible = "lantiq,ase-spi";
			reg = <0xe100800 0x100>;
			interrupt-parent = <&icu0>;
			interrupts = <24 25 26>;
			interrupt-names = "spi_rx", "spi_tx", "spi_err",
					"spi_frm";
			#address-cells = <1>;
			#size-cells = <0>;
			pinctrl-names = "default";
			pinctrl-0 = <&spi_pins>, <&spi_cs4_pins>;
			status = "disabled";
		};

		gptu@e100a00 {
			compatible = "lantiq,gptu-xway";
			reg = <0xe100a00 0x100>;
			interrupt-parent = <&icu0>;
			interrupts = <33 34 35 36 37 38>;
		};

		gpio: pinmux@e100b10 {
			compatible = "lantiq,ase-pinctrl";
			#gpio-cells = <2>;
			gpio-controller;
			reg = <0xe100b10 0xa0>;

			asc_pins: asc-pins {
				mux {
					lantiq,groups = "asc";
					lantiq,function = "asc";
				};
			};

			mdio_pins: mdio {
				mux {
					lantiq,groups = "mdio";
					lantiq,function = "mdio";
				};
			};

			spi_pins: spi {
				mux-0 {
					lantiq,groups = "spi_di";
					lantiq,function = "spi";
				};
				mux-1 {
					lantiq,groups = "spi_do", "spi_clk";
					lantiq,function = "spi";
					lantiq,output = <1>;
				};
			};

			spi_cs4_pins: spi-cs4 {
				mux {
					lantiq,groups = "spi_cs4";
					lantiq,function = "spi";
					lantiq,output = <1>;
				};
			};
		};

		asc1: serial@e100c00 {
			compatible = "lantiq,asc";
			reg = <0xe100c00 0x400>;
			interrupt-parent = <&icu0>;
			interrupts = <72 74 75>;
			pinctrl-0 = <&asc_pins>;
			pinctrl-names = "default";
		};

		mei@e116000 {
			compatible = "lantiq,mei-xway";
			reg = <0xe116000 0x400>;
			interrupt-parent = <&icu0>;
			interrupts = <81 83 92>;
		};

		usb: usb@e101000 {
			compatible = "lantiq,ase-usb";
			reg = <0xe101000 0x1000
				0xe120000 0x3f000>;
			interrupt-parent = <&icu0>;
			interrupts = <39>;
			dr_mode = "host";
			phys = <&usb_phy>;
			phy-names = "usb2-phy";
			status = "disabled";
		};

		dma0: dma@e104100 {
			compatible = "lantiq,dma-xway";
			reg = <0xe104100 0x800>;
		};

		ebu0: ebu@e105300 {
			compatible = "lantiq,ebu-xway";
			reg = <0xe105300 0x100>;
		};

		ppe@e234000 {
			compatible = "lantiq,ppe-ase";
			reg = <0xe234000 0x40000>;
			interrupt-parent = <&icu0>;
			interrupts = <85>;
		};

		gsw: etop@e180000 {
			compatible = "lantiq,etop-xway";
			reg = <0xe180000 0x40000>;
			interrupt-parent = <&icu0>;
			interrupts = <105 109>;
			pinctrl-0 = <&mdio_pins>;
			pinctrl-names = "default";
			lantiq,tx-burst-length = <4>;
			lantiq,rx-burst-length = <4>;
		};
	};

	adsl {
		compatible = "lantiq,adsl-ase";
	};
};
