// SPDX-License-Identifier: GPL-2.0-or-later OR MIT

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>

#include "bcm4906.dtsi"

/ {
	compatible = "tplink,archer-c2300-v1", "brcm,bcm4906", "brcm,bcm4908";
	model = "TP-Link Archer C2300 V1";

	memory@0 {
		device_type = "memory";
		reg = <0x00 0x00 0x00 0x20000000>;
	};

	leds {
		compatible = "gpio-leds";

		led-power {
			function = LED_FUNCTION_POWER;
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
		};

		led-2ghz {
			function = "2ghz";
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
		};

		led-5ghz {
			function = "5ghz";
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
		};

		led-wan-amber {
			function = LED_FUNCTION_WAN;
			color = <LED_COLOR_ID_AMBER>;
			gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
		};

		led-wan-blue {
			function = LED_FUNCTION_WAN;
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
		};

		led-lan {
			function = LED_FUNCTION_LAN;
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
		};

		led-wps {
			function = LED_FUNCTION_WPS;
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
		};

		led-usb2 {
			function = "usb2";
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
		};

		led-usb3 {
			function = "usbd3";
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
		};

		led-brightness {
			function = LED_FUNCTION_BACKLIGHT;
			color = <LED_COLOR_ID_WHITE>;
			gpios = <&gpio0 19 GPIO_ACTIVE_LOW>;
		};
	};

	gpio-keys-polled {
		compatible = "gpio-keys-polled";
		poll-interval = <100>;

		brightness {
			label = "LEDs";
			linux,code = <KEY_BRIGHTNESS_ZERO>;
			gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
		};

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

		wifi {
			label = "WiFi";
			linux,code = <KEY_RFKILL>;
			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
		};

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

&usb_phy {
	brcm,ioc = <1>;
	status = "okay";
};

&ehci {
	status = "okay";
};

&ohci {
	status = "okay";
};

&xhci {
	status = "okay";
};

&ports {
	port@0 {
		label = "lan4";
	};

	port@1 {
		label = "lan3";
	};

	port@2 {
		label = "lan2";
	};

	port@3 {
		label = "lan1";
	};

	port@7 {
		reg = <7>;
		phy-mode = "internal";
		phy-handle = <&phy12>;
		label = "wan";
	};
};

&nandcs {
	nand-ecc-strength = <4>;
	nand-ecc-step-size = <512>;
	nand-on-flash-bbt;

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

	partitions {
		compatible = "brcm,bcm4908-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		partition@0 {
			label = "cferom";
			reg = <0x0 0x100000>;
		};

		partition@100000 {
			compatible = "brcm,bcm4908-firmware";
			reg = <0x100000 0x3900000>;
		};

		partition@5800000 {
			compatible = "brcm,bcm4908-firmware";
			reg = <0x3a00000 0x3900000>;
		};
	};
};
