/*
 * Broadcom BCM470X / BCM5301X ARM platform code.
 * DTS for Asus RT-AC56U
 *
 * 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 = "asus,rt-ac56u", "brcm,bcm4708";
	model = "Asus RT-AC56U (BCM4708)";

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

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

	leds {
		compatible = "gpio-leds";

		usb3 {
			label = "bcm53xx:blue:usb3";
			gpios = <&chipcommon 0 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "default-off";
		};

		wan {
			label = "bcm53xx:blue:wan";
			gpios = <&chipcommon 1 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "default-off";
		};

		lan {
			label = "bcm53xx:blue:lan";
			gpios = <&chipcommon 2 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "default-off";
		};

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

		all {
			label = "bcm53xx:blue:all";
			gpios = <&chipcommon 4 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "default-on";
		};

		2ghz {
			label = "bcm53xx:blue:2ghz";
			gpios = <&chipcommon 6 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "default-off";
		};


		usb2 {
			label = "bcm53xx:blue:usb2";
			gpios = <&chipcommon 14 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "default-off";
		};
	};

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

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

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

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