/*
 * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com>
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

/dts-v1/;

#include "brcm,bcm3380.dtsi"

/ {
	model = "Netgear CG3100D";
	compatible = "netgear,cg3100d", "brcm,bcm3380";

	aliases {
		serial0 = &uart0;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	gpio-leds {
		compatible = "gpio-leds";

		wifi_green {
			label = "CG3100D:green:wifi";
			gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
		};

		wps_green {
			label = "CG3100D:green:wps";
			gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>;
		};

		power_red {
			label = "CG3100D:red:power";
			gpios = <&gpio0 19 GPIO_ACTIVE_LOW>;
		};
	};
};

&leds {
	status = "okay";

	led@0 {
		reg = <0>;
		active-low;
		label = "CG3100D:green:power";
	};

	led@1 {
		reg = <1>;
		active-low;
		label = "CG3100D:green:downlink";
	};

	led@2 {
		reg = <2>;
		active-low;
		label = "CG3100D:orange:downlink";
	};

	led@3 {
		reg = <3>;
		active-low;
		label = "CG3100D:green:uplink";
	};

	led@4 {
		reg = <4>;
		active-low;
		label = "CG3100D:orange:uplink";
	};

	led@6 {
		reg = <6>;
		active-low;
		label = "CG3100D:green:inet";
	};

	led@7 {
		reg = <7>;
		active-low;
		label = "CG3100D:green:stby";
	};
};

&gpio0 {
	status = "okay";
};

&spi {
	status = "okay";

	spi-flash@0 {
		compatible = "spi-flash";
		reg = <0>;
		#address-cells = <1>;
		#size-cells = <1>;
		spi-max-frequency = <25000000>;
	};
};

&uart0 {
	u-boot,dm-pre-reloc;
	status = "okay";
};
