// SPDX-License-Identifier: GPL-2.0-only
/*
 * Device Tree Source for Netgear WNDAP620 and WNDAP660
 */

#include <dt-bindings/leds/common.h>
#include "apm82181.dtsi"

/ {
	aliases {
		serial0 = &UART0;
	};

	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 {
			nand-is-boot-medium;

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

			partition@700000 {
				label = "ubi";
				reg = <0x00700000 0x014d0000>;
			};

			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 0x00400000>;
				read-only;
			};

			partition@1fe0000 {
				label = "manudata";
				reg = <0x01fe0000 0x00020000>;
				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 {
	keys {
		compatible = "gpio-keys";

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

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

		led-0 {
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_POWER;
			gpios = <&GPIO0 18 GPIO_ACTIVE_HIGH>;
		};

		led-1 {
			color = <LED_COLOR_ID_AMBER>;
			function = LED_FUNCTION_FAULT;
			gpios = <&GPIO0 17 GPIO_ACTIVE_HIGH>;
			panic-indicator;
		};

		led-2 {
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_LAN;
			function-enumerator = <0>;
			gpios = <&GPIO0 21 GPIO_ACTIVE_HIGH>;
		};

		led-3 {
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_WLAN;
			function-enumerator = <0>;
			gpios = <&GPIO0 19 GPIO_ACTIVE_HIGH>;
		};

		led-4 {
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_WLAN;
			function-enumerator = <1>;
			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";
};

&IIC0 {
	status = "okay";

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