/*
 * Device Tree Source for Netgear WNDAP620 and WNDAP660
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2.  This program is licensed "as is" without
 * any warranty of any kind, whether express or implied.
 */

#include "apm82181.dtsi"

/ {
	aliases {
		serial0 = &UART0;
		led-boot = &status;
		led-failsafe = &failsafe;
		led-running = &status;
		led-upgrade = &status;
	};

	chosen {
		stdout-path = "/plb/opb/serial@ef600300";
	};
};

&CRYPTO {
	status = "okay";
};

&PKA {
	status = "okay";
};

&TRNG {
	status = "okay";
};

&EBC0 {
	ndfc@1,0 {
		status = "okay";
		/* 32 MiB SLC NAND Flash */
		nand {
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "u-boot";
				reg = <0x00000000 0x00100000>;
				read-only;
			};

			partition@100000 {
				label = "u-boot-env";
				reg = <0x00100000 0x00010000>;
				read-only;
			};

			partition@110000,0 {
				label = "firmware";
				reg = <0x00110000 0x01ac0000>;
			};

			partition@110000,1 {
				/*
				 * The u-boot bootloader will look at this
				 * offset (0x110000) for an uImage binary.
				 */
				label = "kernel";
				reg = <0x00110000 0x003f0000>;
			};

			partition@500000 {
				label = "ubi";
				reg = <0x00500000 0x016d0000>;
			};

			partition@1bd0000 {
				/*
				 * original vendor device-tree - do not use or
				 * overwrite. The original u-boot also supports
				 * the gzipped legacy monolithic/Multi-File Image
				 * format, which is a better choice.
				 */
				label = "device-tree";
				reg = <0x01bd0000 0x0010000>;
				read-only;
			};

			partition@1be0000 {
				label = "var";
				reg = <0x01be0000 0x0400000>;
				read-only;
			};

			partition@1fe0000 {
				label = "manudata";
				reg   = <0x01fe0000 0x20000 >;
				read-only;
			};
		};
	};
};

&UART0 {
	status = "okay";
};

&GPIO0 {
	status = "okay";
};

&EMAC0 {
	status = "okay";

	fixed-link {
		speed = <1000>;
		full-duplex;
		pause;
		asym-pause;
	};

	mdio0: mdio {
		#address-cells = <1>;
		#size-cells = <0>;
	};
};

&POB0 {
	gpio_keys_polled {
		compatible = "gpio-keys-polled";
		#address-cells = <1>;
		#size-cells = <0>;
		#interrupt-cells = <2>;
		poll-interval = <60>;   /* 3 * 20 = 60ms */
		autorepeat;

		reset {
			label = "Reset Button";
			gpios = <&GPIO0 16 GPIO_ACTIVE_HIGH>;
			linux,code = <KEY_RESTART>;
			interrupt-parent = <&UIC1>;
			interrupts = <0x15 IRQ_TYPE_EDGE_FALLING>;
		};
	};

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

		status: power {
			label = "wndap6x0:green:power";
			gpios = <&GPIO0 18 GPIO_ACTIVE_HIGH>;
		};

		failsafe: test {
			label = "wndap6x0:amber:test";
			gpios = <&GPIO0 17 GPIO_ACTIVE_HIGH>;
			panic-indicator;
		};

		activity {
			label = "wndap6x0:green:activity";
			gpios = <&GPIO0 21 GPIO_ACTIVE_HIGH>;
		};

		wlan2g {
			label = "wndap6x0:green:wlan2g";
			gpios = <&GPIO0 19 GPIO_ACTIVE_HIGH>;
		};

		wlan5g {
			label = "wndap6x0:green:wlan5g";
			gpios = <&GPIO0 20 GPIO_ACTIVE_HIGH>;
		};
	};

	gpio-export {
		compatible = "gpio-export";

		internal-antenna {
			gpio-export,name = "wndap6x0:internal-antenna";
			gpio-export,output = <1>;
			gpios = <&GPIO0 11 GPIO_ACTIVE_HIGH>;
		};

		external-antenna {
			gpio-export,name = "wndap6x0:external-antenna";
			gpio-export,output = <0>;
			gpios = <&GPIO0 14 GPIO_ACTIVE_HIGH>;
		};

		mains-powered {
			/*
			 * Input pin describing what powers the AP
			 * 0/Low = PoE
			 * 1/High = 12v mains powered
			 */
			gpio-export,name = "wndap620:mains-powered";
			gpios = <&GPIO0 3 GPIO_ACTIVE_HIGH>;
		};
	};

	rtl8367b {
		compatible = "realtek,rtl8367b";
		cpu_port = <5>;
		realtek,extif0 = <1 2 1 1 1 1 1 1 2>;
		mii-bus = <&mdio0>;
	};
};

&PCIE0 {
	status = "okay";
};

&MSI {
	status = "okay";
};

&IIC0 {
	status = "okay";

	at24@52 {
		compatible = "atmel,24c04";
		reg = <0x52>;
		pagesize = <16>;
		read-only;
	};
};