// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/dts-v1/;

/* Bootloader installs ATF here */
/memreserve/ 0x80000000 0x200000;

#include <dt-bindings/leds/common.h>
#include <dt-bindings/gpio/gpio.h>
#include "an7581.dtsi"

/ {
	model = "Airoha AN7581 Evaluation Board";
	compatible = "airoha,an7581-evb", "airoha,an7581", "airoha,en7581";

	aliases {
		serial0 = &uart1;
	};

	chosen {
		bootargs = "console=ttyS0,115200 earlycon";
		stdout-path = "serial0:115200n8";
		linux,usable-memory-range = <0x0 0x80200000 0x0 0x1fe00000>;
	};

	memory@80000000 {
		device_type = "memory";
		reg = <0x0 0x80000000 0x2 0x00000000>;
	};
};

&en7581_pinctrl {
	gpio-ranges = <&en7581_pinctrl 0 13 47>;

	mdio_pins: mdio-pins {
		mux {
			function = "mdio";
			groups = "mdio";
		};

		conf {
			pins = "gpio2";
			output-high;
		};
	};

	pcie0_rst_pins: pcie0-rst-pins {
		conf {
			pins = "pcie_reset0";
			drive-open-drain = <1>;
		};
	};

	pcie1_rst_pins: pcie1-rst-pins {
		conf {
			pins = "pcie_reset1";
			drive-open-drain = <1>;
		};
	};

	gswp1_led0_pins: gswp1-led0-pins {
		mux {
			function = "phy1_led0";
			pins = "gpio33";
		};
	};

	gswp2_led0_pins: gswp2-led0-pins {
		mux {
			function = "phy2_led0";
			pins = "gpio34";
		};
	};

	gswp3_led0_pins: gswp3-led0-pins {
		mux {
			function = "phy3_led0";
			pins = "gpio35";
		};
	};

	gswp4_led0_pins: gswp4-led0-pins {
		mux {
			function = "phy4_led0";
			pins = "gpio42";
		};
	};

	pwm_gpio18_idx10_pins: pwm-gpio18-idx10-pins {
		function = "pwm";
		pins = "gpio18";
		output-enable;
	};

	mmc_pins: mmc-pins {
		mux {
			function = "emmc";
			groups = "emmc";
		};
	};
};

&mmc0 {
	pinctrl-names = "default";
	pinctrl-0 = <&mmc_pins>;
	status = "okay";

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

	card@0 {
		compatible = "mmc-card";
		reg = <0>;

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

			bootloader@0 {
				label = "bootloader";
				reg = <0x00000000 0x00080000>;
			};

			tclinux@80000 {
				label = "tclinux";
				reg = <0x00080000 0x02800000>;
			};

			tclinux_slave@2880000 {
				label = "tclinux_slave";
				reg = <0x02880000 0x02800000>;
			};

			rootfs_data@5080000 {
				label = "rootfs_data";
				reg = <0x5080000 0x00800000>;
			};
		};
	};
};

&i2c0 {
	status = "okay";
};

&pcie0 {
	pinctrl-names = "default";
	pinctrl-0 = <&pcie0_rst_pins>;
	status = "okay";
};

&pcie1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pcie1_rst_pins>;
	status = "okay";
};

&eth {
	status = "okay";
};

&gdm1 {
	status = "okay";
};

&switch {
	pinctrl-names = "default";
	pinctrl-0 = <&mdio_pins>;
	status = "okay";
};

&gsw_phy1 {
	pinctrl-names = "led";
	pinctrl-0 = <&gswp1_led0_pins>;
	status = "okay";
};

&gsw_phy1_led0 {
	status = "okay";
};

&gsw_phy2 {
	pinctrl-names = "led";
	pinctrl-0 = <&gswp2_led0_pins>;
	status = "okay";
};

&gsw_phy2_led0 {
	status = "okay";
};

&gsw_phy3 {
	pinctrl-names = "led";
	pinctrl-0 = <&gswp3_led0_pins>;
	status = "okay";
};

&gsw_phy3_led0 {
	status = "okay";
};

&gsw_phy4 {
	pinctrl-names = "led";
	pinctrl-0 = <&gswp4_led0_pins>;
	status = "okay";
};

&gsw_phy4_led0 {
	status = "okay";
};