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

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

#include "qcom-ipq8064-ad7200-c2600.dtsi"

/ {
	model = "TP-Link Talon AD7200";
	compatible = "tplink,ad7200", "qcom,ipq8064";

	aliases {
		led-boot = &led_status;
		led-failsafe = &led_status;
		led-running = &led_status;
		led-upgrade = &led_status;
	};

	keys {
		compatible = "gpio-keys";
		pinctrl-0 = <&button_pins>;
		pinctrl-names = "default";

		wifi {
			label = "wifi";
			gpios = <&qcom_pinmux 54 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_RFKILL>;
			debounce-interval = <60>;
			wakeup-source;
		};

		reset {
			label = "reset";
			gpios = <&qcom_pinmux 7 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_RESTART>;
			debounce-interval = <60>;
			wakeup-source;
		};

		wps {
			label = "wps";
			gpios = <&qcom_pinmux 67 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_WPS_BUTTON>;
			debounce-interval = <60>;
			wakeup-source;
		};

		led_enable {
			label = "led-enable";
			gpios = <&qcom_pinmux 53 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_LIGHTS_TOGGLE>;
			debounce-interval = <60>;
			wakeup-source;
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-0 = <&led_pins>;
		pinctrl-names = "default";

		lan {
			function = LED_FUNCTION_LAN;
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&qcom_pinmux 2 GPIO_ACTIVE_HIGH>;
		};

		usb1 {
			label = "blue:usb1";
			gpios = <&qcom_pinmux 8 GPIO_ACTIVE_HIGH>;
		};

		wlan5g {
			label = "blue:wlan5g";
			gpios = <&qcom_pinmux 15 GPIO_ACTIVE_HIGH>;
		};

		usb3 {
			label = "blue:usb3";
			gpios = <&qcom_pinmux 16 GPIO_ACTIVE_HIGH>;
		};

		wlan2g {
			label = "blue:wlan2g";
			gpios = <&qcom_pinmux 17 GPIO_ACTIVE_HIGH>;
		};

		wan_orange {
			function = LED_FUNCTION_WAN;
			color = <LED_COLOR_ID_ORANGE>;
			gpios = <&qcom_pinmux 26 GPIO_ACTIVE_LOW>;
		};

		wan_blue {
			function = LED_FUNCTION_WAN;
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&qcom_pinmux 33 GPIO_ACTIVE_LOW>;
		};

		wps {
			function = LED_FUNCTION_WPS;
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&qcom_pinmux 55 GPIO_ACTIVE_HIGH>;
		};

		wlan60g {
			label = "blue:wlan60g";
			gpios = <&qcom_pinmux 56 GPIO_ACTIVE_HIGH>;
		};

		led_status: status {
			function = LED_FUNCTION_STATUS;
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&qcom_pinmux 66 GPIO_ACTIVE_HIGH>;
		};
	};
};

&qcom_pinmux {
	button_pins: button_pins {
		mux {
			pins = "gpio53", "gpio54", "gpio67";
			function = "gpio";
			drive-strength = <2>;
			bias-pull-up;
		};
	};

	led_pins: led_pins {
		mux {
			pins = "gpio2", "gpio8", "gpio15", "gpio16", "gpio17", "gpio26",
					"gpio33", "gpio55", "gpio56", "gpio66";
			function = "gpio";
			drive-strength = <2>;
			bias-pull-up;
		};
	};
};

&mdio0 {
	switch@10 {
		ports {
			port@1 {
				label = "wan";
			};

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

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

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

			port@5 {
				label = "lan4";
			};
		};
	};
};

&pcie2 {
	status = "okay";
	max-link-speed = <1>;
};
