// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Copyright (C) 2022 MediaTek Inc.
 * Author: Sam.Shih <sam.shih@mediatek.com>
 */

/dts-v1/;
#include "mt7988a-rfb-spim-nand.dtsi"
#include <dt-bindings/pinctrl/mt65xx.h>
#include <dt-bindings/leds/common.h>

/ {
	model = "MediaTek MT7988A DSA 10G SPIM-NAND RFB";
	compatible = "mediatek,mt7988a-dsa-10g-spim-snand",
		     "mediatek,mt7988a-rfb-snand",
		     "mediatek,mt7988";

	chosen {
		bootargs = "console=ttyS0,115200n1 loglevel=8  \
			    earlycon=uart8250,mmio32,0x11000000 \
			    pci=pcie_bus_perf";
	};

	memory {
		reg = <0 0x40000000 0 0x40000000>;
	};
};

&eth {
	pinctrl-0 = <&mdio0_pins>;
	pinctrl-names = "default";
	status = "okay";
};

&gmac0 {
	status = "okay";
};

&gmac1 {
	status = "okay";
	phy-mode = "internal";
	phy-connection-type = "internal";
	phy = <&int_2p5g_phy>;
};

&gmac2 {
	status = "okay";
	phy-mode = "usxgmii";
	phy-connection-type = "usxgmii";
	phy = <&phy8>;
};

&mdio_bus {
	/* external Aquantia AQR113C */
	phy0: ethernet-phy@0 {
		reg = <0>;
		compatible = "ethernet-phy-ieee802.3-c45";
		reset-gpios = <&pio 72 1>;
		reset-assert-us = <100000>;
		reset-deassert-us = <221000>;
	};

	/* external Aquantia AQR113C */
	phy8: ethernet-phy@8 {
		reg = <8>;
		compatible = "ethernet-phy-ieee802.3-c45";
		reset-gpios = <&pio 71 1>;
		reset-assert-us = <100000>;
		reset-deassert-us = <221000>;
	};

	/* external Maxlinear GPY211C */
	phy5: ethernet-phy@5 {
		reg = <5>;
		compatible = "ethernet-phy-ieee802.3-c45";
		phy-mode = "2500base-x";
	};

	/* external Maxlinear GPY211C */
	phy13: ethernet-phy@13 {
		reg = <13>;
		compatible = "ethernet-phy-ieee802.3-c45";
		phy-mode = "2500base-x";
	};
};

&int_2p5g_phy {
	pinctrl-names = "i2p5gbe-led";
	pinctrl-0 = <&i2p5gbe_led0_pins>;
};

&switch {
	status = "okay";
};

&gsw_phy0 {
	pinctrl-names = "gbe-led";
	pinctrl-0 = <&gbe0_led0_pins>;
};

&gsw_phy0_led0 {
	status = "okay";
	color = <LED_COLOR_ID_GREEN>;
};

&gsw_phy1 {
	pinctrl-names = "gbe-led";
	pinctrl-0 = <&gbe1_led0_pins>;
};

&gsw_phy1_led0 {
	status = "okay";
	color = <LED_COLOR_ID_GREEN>;
};

&gsw_phy2 {
	pinctrl-names = "gbe-led";
	pinctrl-0 = <&gbe2_led0_pins>;
};

&gsw_phy2_led0 {
	status = "okay";
	color = <LED_COLOR_ID_GREEN>;
};

&gsw_phy3 {
	pinctrl-names = "gbe-led";
	pinctrl-0 = <&gbe3_led0_pins>;
};

&gsw_phy3_led0 {
	status = "okay";
	color = <LED_COLOR_ID_GREEN>;
};
