/*
 * Copyright 2016 Luxul Inc.
 *
 * Licensed under the ISC license.
 */

/dts-v1/;

#include "bcm47094.dtsi"
#include "bcm5301x-nand-cs0-bch4.dtsi"

/ {
	compatible = "luxul,xwr-3100v1", "brcm,bcm47094", "brcm,bcm4708";
	model = "Luxul XWR-3100 V1";

	chosen {
		bootargs = "console=ttyS0,115200 earlycon";
	};

	memory {
		reg = <0x00000000 0x08000000
		       0x88000000 0x08000000>;
	};

	leds {
		compatible = "gpio-leds";

		power	{
			label = "bcm53xx:green:power";
			gpios = <&chipcommon 0 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "default-on";
		};

		lan3	{
			label = "bcm53xx:green:lan3";
			gpios = <&chipcommon 1 GPIO_ACTIVE_LOW>;
		};

		lan4	{
			label = "bcm53xx:green:lan4";
			gpios = <&chipcommon 2 GPIO_ACTIVE_LOW>;
		};

		wan	{
			label = "bcm53xx:green:wan";
			gpios = <&chipcommon 3 GPIO_ACTIVE_LOW>;
		};

		lan1	{
			label = "bcm53xx:green:lan1";
			gpios = <&chipcommon 4 GPIO_ACTIVE_LOW>;
		};

		lan2	{
			label = "bcm53xx:green:lan2";
			gpios = <&chipcommon 6 GPIO_ACTIVE_LOW>;
		};

		usb3	{
			label = "bcm53xx:green:usb3";
			gpios = <&chipcommon 8 GPIO_ACTIVE_LOW>;
			trigger-sources = <&ohci_port1>, <&ehci_port1>,
					  <&xhci_port1>;
			linux,default-trigger = "usbport";
		};

		status	{
			label = "bcm53xx:green:status";
			gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "timer";
		};

		2ghz {
			label = "bcm53xx:green:2ghz";
			gpios = <&chipcommon 13 GPIO_ACTIVE_LOW>;
		};

		5ghz {
			label = "bcm53xx:green:5ghz";
			gpios = <&chipcommon 14 GPIO_ACTIVE_LOW>;
		};
	};

	gpio-keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		restart {
			label = "Reset";
			linux,code = <KEY_RESTART>;
			gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
		};
	};
};

&usb3 {
	vcc-gpio = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
};

&spi_nor {
	status = "okay";
};
