/*
 * Broadcom BCM470X / BCM5301X arm platform code.
 * DTS for SmartRG SR400ac
 *
 * Copyright (C) 2015 Rafał Miłecki <zajec5@gmail.com>
 *
 * Licensed under the GNU/GPL. See COPYING for details.
 */

/dts-v1/;

#include "bcm4708.dtsi"
#include "bcm5301x-nand-cs0-bch8.dtsi"

/ {
	compatible = "smartrg,sr400ac", "brcm,bcm4708";
	model = "SmartRG SR400ac";

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

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

	leds {
		compatible = "gpio-leds";

		power-white {
			label = "bcm53xx:white:power";
			gpios = <&chipcommon 1 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "default-on";
		};

		power-amber {
			label = "bcm53xx:amber:power";
			gpios = <&chipcommon 2 GPIO_ACTIVE_HIGH>;
		};

		usb2 {
			label = "bcm53xx:white:usb2";
			gpios = <&chipcommon 3 GPIO_ACTIVE_HIGH>;
			trigger-sources = <&ohci_port2>, <&ehci_port2>;
			linux,default-trigger = "usbport";
		};

		usb3-white {
			label = "bcm53xx:white:usb3";
			gpios = <&chipcommon 4 GPIO_ACTIVE_HIGH>;
			trigger-sources = <&xhci_port1>;
			linux,default-trigger = "usbport";
		};

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

		wps {
			label = "bcm53xx:white:wps";
			gpios = <&chipcommon 6 GPIO_ACTIVE_HIGH>;
		};

		status-red {
			label = "bcm53xx:red:status";
			gpios = <&chipcommon 8 GPIO_ACTIVE_HIGH>;
		};

		status-green {
			label = "bcm53xx:green:status";
			gpios = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
		};

		status-blue {
			label = "bcm53xx:blue:status";
			gpios = <&chipcommon 10 GPIO_ACTIVE_HIGH>;
		};

		wan-white {
			label = "bcm53xx:white:wan";
			gpios = <&chipcommon 12 GPIO_ACTIVE_HIGH>;
		};

		wan-red {
			label = "bcm53xx:red:wan";
			gpios = <&chipcommon 13 GPIO_ACTIVE_HIGH>;
		};
	};

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

		rfkill {
			label = "WiFi";
			linux,code = <KEY_RFKILL>;
			gpios = <&chipcommon 0 GPIO_ACTIVE_LOW>;
		};

		wps {
			label = "WPS";
			linux,code = <KEY_WPS_BUTTON>;
			gpios = <&chipcommon 7 GPIO_ACTIVE_LOW>;
		};

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

&spi_nor {
	status = "okay";
};

&srab {
	status = "okay";

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

		port@0 {
			reg = <0>;
			label = "lan4";
		};

		port@1 {
			reg = <1>;
			label = "lan3";
		};

		port@2 {
			reg = <2>;
			label = "lan2";
		};

		port@3 {
			reg = <3>;
			label = "lan1";
		};

		port@4 {
			reg = <4>;
			label = "wan";
		};

		port@5 {
			reg = <5>;
			label = "cpu";
			ethernet = <&gmac0>;
		};
	};
};
