// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
 * Device Tree Bindings for Cisco Meraki MX65 series (Alamo).
 *
 * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
 */

#include "bcm958625-meraki-mx6x-common.dtsi"

/ {
	keys {
		compatible = "gpio-keys-polled";
		autorepeat;
		poll-interval = <20>;

		reset {
			label = "reset";
			linux,code = <KEY_RESTART>;
			gpios = <&gpioa 8 GPIO_ACTIVE_LOW>;
		};
	};

	leds {
		compatible = "gpio-leds";

		led-0 {
			/* green:wan1-left */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <0>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 25 GPIO_ACTIVE_LOW>;
		};

		led-1 {
			/* green:wan1-right */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <1>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 24 GPIO_ACTIVE_LOW>;
		};

		led-2 {
			/* green:wan2-left */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <2>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 27 GPIO_ACTIVE_LOW>;
		};

		led-3 {
			/* green:wan2-right */
			function = LED_FUNCTION_ACTIVITY;
			function-enumerator = <3>;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpioa 26 GPIO_ACTIVE_LOW>;
		};

		led-4 {
			/* amber:power */
			function = LED_FUNCTION_POWER;
			color = <LED_COLOR_ID_AMBER>;
			gpios = <&gpioa 3 GPIO_ACTIVE_HIGH>;
			default-state = "on";
		};

		led-5 {
			/* white:status */
			function = LED_FUNCTION_STATUS;
			color = <LED_COLOR_ID_WHITE>;
			gpios = <&gpioa 31 GPIO_ACTIVE_HIGH>;
		};
	};
};

&axi {
	mdio-mux@3f1c0 {
		compatible = "mdio-mux-mmioreg", "mdio-mux";
		reg = <0x3f1c0 0x4>;
		mux-mask = <0x2000>;
		mdio-parent-bus = <&mdio_ext>;
		#address-cells = <1>;
		#size-cells = <0>;

		mdio@0 {
			reg = <0x0>;
			#address-cells = <1>;
			#size-cells = <0>;

			phy_port6: phy@0 {
				reg = <0>;
			};

			phy_port7: phy@1 {
				reg = <1>;
			};

			phy_port8: phy@2 {
				reg = <2>;
			};

			phy_port9: phy@3 {
				reg = <3>;
			};

			phy_port10: phy@4 {
				reg = <4>;
			};

			switch@10 {
				compatible = "qca,qca8337";
				reg = <0x10>;
				dsa,member = <1 0>;

				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						ethernet = <&sgmii1>;
						phy-mode = "sgmii";
						fixed-link {
							speed = <1000>;
							full-duplex;
						};
					};

					port@1 {
						reg = <1>;
						label = "lan8";
						phy-handle = <&phy_port6>;
					};

					port@2 {
						reg = <2>;
						label = "lan9";
						phy-handle = <&phy_port7>;
					};

					port@3 {
						reg = <3>;
						label = "lan10";
						phy-handle = <&phy_port8>;
					};

					port@4 {
						reg = <4>;
						label = "lan11";
						phy-handle = <&phy_port9>;
					};

					port@5 {
						reg = <5>;
						label = "lan12";
						phy-handle = <&phy_port10>;
					};
				};
			};
		};

		mdio-mii@2000 {
			reg = <0x2000>;
			#address-cells = <1>;
			#size-cells = <0>;

			phy_port1: phy@0 {
				reg = <0>;
			};

			phy_port2: phy@1 {
				reg = <1>;
			};

			phy_port3: phy@2 {
				reg = <2>;
			};

			phy_port4: phy@3 {
				reg = <3>;
			};

			phy_port5: phy@4 {
				reg = <4>;
			};

			switch@10 {
				compatible = "qca,qca8337";
				reg = <0x10>;
				dsa,member = <2 0>;

				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						ethernet = <&sgmii0>;
						phy-mode = "sgmii";
						fixed-link {
							speed = <1000>;
							full-duplex;
						};
					};

					port@1 {
						reg = <1>;
						label = "lan3";
						phy-handle = <&phy_port1>;
					};

					port@2 {
						reg = <2>;
						label = "lan4";
						phy-handle = <&phy_port2>;
					};

					port@3 {
						reg = <3>;
						label = "lan5";
						phy-handle = <&phy_port3>;
					};

					port@4 {
						reg = <4>;
						label = "lan6";
						phy-handle = <&phy_port4>;
					};

					port@5 {
						reg = <5>;
						label = "lan7";
						phy-handle = <&phy_port5>;
					};
				};
			};
		};
	};
};

&srab {
	compatible = "brcm,bcm58625-srab", "brcm,nsp-srab";
	status = "okay";
	dsa,member = <0 0>;

	ports {
		port@0 {
			label = "wan1";
			reg = <0>;
		};

		port@1 {
			label = "wan2";
			reg = <1>;
		};

		sgmii0: port@4 {
			label = "sw0";
			reg = <4>;
			fixed-link {
				speed = <1000>;
				full-duplex;
			};
		};

		sgmii1: port@5 {
			label = "sw1";
			reg = <5>;
			fixed-link {
				speed = <1000>;
				full-duplex;
			};
		};

		port@8 {
			ethernet = <&amac2>;
			reg = <8>;
			fixed-link {
				speed = <1000>;
				full-duplex;
			};
		};
	};
};
