// 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 "bcm4908.dtsi"

/ {
	compatible = "asus,gt-ac5300", "brcm,bcm4908", "brcm,bcmbca";
	model = "Asus GT-AC5300";

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

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

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

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

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

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

&enet {
	nvmem-cells = <&base_mac_addr>;
	nvmem-cell-names = "mac-address";
};

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

&ehci {
	status = "okay";
};

&ohci {
	status = "okay";
};

&xhci {
	status = "okay";
};

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

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

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

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

	/* External BCM53134S switch */
	port@7 {
		label = "sw";
		reg = <7>;
		phy-mode = "rgmii";

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

&mdio {
	/* lan8 */
	ethernet-phy@0 {
		reg = <0>;
	};

	/* lan7 */
	ethernet-phy@1 {
		reg = <1>;
	};

	/* lan4 */
	ethernet-phy@2 {
		reg = <2>;
	};

	/* lan3 */
	ethernet-phy@3 {
		reg = <3>;
	};
};

&leds {
	led@11 {
		reg = <0x11>;
		function = LED_FUNCTION_POWER;
		color = <LED_COLOR_ID_WHITE>;
		default-state = "on";
		active-low;
		pinctrl-names = "default";
		pinctrl-0 = <&pins_led_17_a>;
	};

	led@12 {
		reg = <0x12>;
		function = LED_FUNCTION_WAN;
		color = <LED_COLOR_ID_RED>;
		active-low;
		pinctrl-names = "default";
		pinctrl-0 = <&pins_led_18_a>;
	};

	led@14 {
		reg = <0x14>;
		function = LED_FUNCTION_WPS;
		color = <LED_COLOR_ID_WHITE>;
		active-low;
		pinctrl-names = "default";
		pinctrl-0 = <&pins_led_20_a>;
	};

	led@15 {
		reg = <0x15>;
		function = LED_FUNCTION_WAN;
		color = <LED_COLOR_ID_WHITE>;
		active-low;
		pinctrl-names = "default";
		pinctrl-0 = <&pins_led_21_a>;
	};

	led@19 {
		reg = <0x19>;
		function = LED_FUNCTION_LAN;
		color = <LED_COLOR_ID_WHITE>;
		pinctrl-names = "default";
		pinctrl-0 = <&pins_led_25_a>;
	};
};

&nand_controller {
	brcm,wp-not-connected;
	status = "okay";
};

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

			nvmem-layout {
				compatible = "fixed-layout";
				#address-cells = <1>;
				#size-cells = <1>;

				base_mac_addr: mac@106a0 {
					reg = <0x106a0 0x6>;
				};
			};
		};

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

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