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

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

/ {
	chosen {
		bootargs = "console=ttyS0,115200";
		bootargs-override = "console=ttyS0,115200";
	};

	aliases {
		spi0 = &spi0;
		led-boot = &led_mode;
		led-failsafe = &led_failover;
		led-running = &led_mode;
		led-upgrade = &led_attention;
		/delete-property/ ethernet0;
		/delete-property/ ethernet1;
		/delete-property/ ethernet2;
	};

	memory {
		device_type = "memory";
	};

	leds {
		compatible = "gpio-leds";

		led_attention: attention_orange {
			gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
			label = "orange:attention";
		};

		status_red {
			gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
			function = LED_FUNCTION_STATUS;
			color = <LED_COLOR_ID_RED>;
		};

		led_mode: mode_green {
			gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
			label = "green:mode";
		};

		led_failover: failover_green {
			gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
			label = "green:failover";
		};

		led_wap_orange: wap_orange {
			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
			function = LED_FUNCTION_WLAN_2GHZ;
			color = <LED_COLOR_ID_ORANGE>;
			label = "orange:wap";
		};

		led_wap_green: wap_green {
			gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
			function = LED_FUNCTION_WLAN_5GHZ;
			color = <LED_COLOR_ID_GREEN>;
			label = "green:wap";
			linux,default-trigger = "phy0tpt";
		};
	};

	buttons {
		compatible = "gpio-keys";

		reset {
			label = "Reset button";
			gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_RESTART>;
		};
	};


	soc: soc@ffe00000 {
		ranges = <0x0 0x0 0xffe00000 0x100000>;

		i2c@3000 {
			rtc@30 {
				compatible = "sii,s35390a";
				reg = <0x30>;
			};
		};

		spi0: spi@7000 {
			flash@0 {
				compatible = "jedec,spi-nor";
				reg = <0>;
				spi-max-frequency = <25000000>;

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

					uboot: partition@0 {
						reg = <0x0 0x90000>;
						label = "u-boot";
						read-only;
					};

					partition@90000 {
						reg = <0x90000 0x10000>;
						label = "u-boot-env";
					};

					partition@a0000 {
						reg = <0xa0000 0x20000>;
						label = "cfgxxx";
						read-only;
					};

					partition@c0000 {
						reg = <0xc0000 0x40000>;
						label = "device_id";
						read-only;

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

							macaddr_device_id_1830: mac-address@1830 {
								compatible = "mac-base";
								reg = <0x1830 0x11>;
								#nvmem-cell-cells = <1>;
							};

							macaddr_device_id_1844: mac-address@1844 {
								compatible = "mac-base";
								reg = <0x1844 0x11>;
								#nvmem-cell-cells = <1>;
							};

							macaddr_device_id_1858: mac-address@1858 {
								compatible = "mac-base";
								reg = <0x1858 0x11>;
								#nvmem-cell-cells = <1>;
							};
							macaddr_device_id_186c: mac-address@186c {
								compatible = "mac-base";
								reg = <0x186c 0x11>;
								#nvmem-cell-cells = <1>;
							};
						};
					};
				};
			};
		};

		gpio0: gpio-controller@fc00 {
		};

		usb@22000 {
			phy_type = "utmi";
			dr_mode = "host";
		};

		mdio@24000 {
			phy1: ethernet-phy@1 {
				reg = <0x1>;
			};

			phy2: ethernet-phy@2 {
				reg = <0x2>;
			};

			phy3: ethernet-phy@3 {
				reg = <0x3>;
			};
		};

		mdio@25000 {
			tbi_phy1: tbi-phy@11 {
				reg = <0x11>;
				device_type = "tbi-phy";
			};
		};

		mdio@26000 {
			tbi_phy2: tbi-phy@11 {
				reg = <0x11>;
				device_type = "tbi-phy";
			};
		};

		enet0: ethernet@b0000 {
			phy-handle = <&phy1>;
			phy-connection-type = "rgmii-id";

			nvmem-cells = <&macaddr_device_id_1830 0>;
			nvmem-cell-names = "mac-address";
		};

		enet1: ethernet@b1000 {
			tbi-handle = <&tbi_phy1>;
			phy-handle = <&phy2>;
			phy-connection-type = "sgmii";

			nvmem-cells = <&macaddr_device_id_1844 0>;
			nvmem-cell-names = "mac-address";
		};

		enet2: ethernet@b2000 {
			tbi-handle = <&tbi_phy2>;
			phy-handle = <&phy3>;
			phy-connection-type = "sgmii";

			nvmem-cells = <&macaddr_device_id_1858 0>;
			nvmem-cell-names = "mac-address";
		};

		sdhc@2e000 {
			status = "disabled";
		};

		serial1: serial@4600 {
			status = "disabled";
		};

		can0: can@1c000 {
			status = "disabled";
		};

		can1: can@1d000 {
			status = "disabled";
		};
	};

	pci0: pcie@ffe09000 {
		status = "disabled";
	};

	pci1: pcie@ffe0a000 {
		reg = <0 0xffe0a000 0 0x1000>;
		ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000
			  0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>;
		pcie@0 {
			ranges = <0x2000000 0x0 0x80000000
				  0x2000000 0x0 0x80000000
				  0x0 0x20000000

				  0x1000000 0x0 0x0
				  0x1000000 0x0 0x0
				  0x0 0x100000>;

			ath9k: wifi@0,0 {
				compatible = "pci168c,0033";
				reg = <0x0000 0 0 0 0>;
				#gpio-cells = <2>;
				gpio-controller;
				nvmem-cells = <&macaddr_device_id_186c 0>;
				nvmem-cell-names = "mac-address";
			};
		};
	};
};
