// 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", "brcm,bcmbca";
	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>;
			trigger-sources = <&ohci_port1>, <&ehci_port1>;
			linux,default-trigger = "usbport";
		};

		led-usb3 {
			function = "usb3";
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
			trigger-sources = <&ohci_port2>, <&ehci_port2>, <&xhci_port2>;
			linux,default-trigger = "usbport";
		};

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

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

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

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

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