/*
 * Broadcom BCM470X / BCM5301X arm platform code.
 * DTS for Netgear R6250 V1
 *
 * Copyright 2013 Hauke Mehrtens <hauke@hauke-m.de>
 *
 * Licensed under the GNU/GPL. See COPYING for details.
 */

/dts-v1/;

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

/ {
	compatible = "netgear,r6250v1", "brcm,bcm4708";
	model = "Netgear R6250 V1 (BCM4708)";

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

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

	axi@18000000 {
		usb3@23000 {
			reg = <0x00023000 0x1000>;

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

			vcc-gpio = <&chipcommon 0 GPIO_ACTIVE_HIGH>;
		};
	};

	leds {
		compatible = "gpio-leds";

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

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

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

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

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

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

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

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

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

&uart0 {
	status = "okay";
};
