/*
 * 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 earlycon";
	};

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

	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>;
		};

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

		wireless {
			label = "bcm53xx:blue:wireless";
			gpios = <&chipcommon 11 GPIO_ACTIVE_LOW>;
		};
	};

	gpio-keys {
		compatible = "gpio-keys";

		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>;
		};
	};
};

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

&spi_nor {
	status = "okay";
};

&usb3_phy {
	status = "okay";
};
