// SPDX-License-Identifier: GPL-2.0
#include "qcom-ipq8064.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>

/ {
	model = "MikroTik RB3011UiAS-RM";
	compatible = "mikrotik,rb3011", "qcom,ipq8064";

	aliases {
		serial0 = &gsbi7_serial;
		ethernet0 = &gmac0;
		ethernet1 = &gmac3;
		mdio-gpio0 = &mdio0;
		mdio-gpio1 = &mdio1;
	};

	chosen {
		bootargs = "loglevel=8 console=ttyMSM0,115200";
		stdout-path = "serial0:115200n8";
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-0 = <&buttons_pins>;
		pinctrl-names = "default";

		button {
			label = "reset";
			linux,code = <KEY_RESTART>;
			gpios = <&qcom_pinmux 66 GPIO_ACTIVE_LOW>;
			linux,input-type = <1>;
			debounce-interval = <60>;
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-0 = <&leds_pins>;
		pinctrl-names = "default";

		led-0 {
			label = "rb3011:green:user";
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&qcom_pinmux 33 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
	};

	memory@42000000 {
		reg = <0x42000000 0x3e000000>;
		device_type = "memory";
	};

	mdio0: mdio-0 {
		status = "okay";
		compatible = "virtual,mdio-gpio";
		gpios = <&qcom_pinmux 1 GPIO_ACTIVE_HIGH>,
			<&qcom_pinmux 0 GPIO_ACTIVE_HIGH>;
		#address-cells = <1>;
		#size-cells = <0>;

		pinctrl-0 = <&mdio0_pins>;
		pinctrl-names = "default";

		switch0: switch@10 {
			compatible = "qca,qca8337";

			dsa,member = <0 0>;

			pinctrl-0 = <&sw0_reset_pin>;
			pinctrl-names = "default";

			reset-gpios = <&qcom_pinmux 16 GPIO_ACTIVE_LOW>;
			reg = <0x10>;

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

				switch0cpu: port@0 {
					reg = <0>;
					label = "cpu";
					ethernet = <&gmac0>;
					phy-mode = "rgmii-id";
					fixed-link {
						speed = <1000>;
						full-duplex;
					};
				};

				port@1 {
					reg = <1>;
					label = "sw1";

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

						led@0 {
							reg = <0>;
							color = <LED_COLOR_ID_GREEN>;
							function = LED_FUNCTION_LAN;
							default-state = "keep";
						};
					};
				};

				port@2 {
					reg = <2>;
					label = "sw2";

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

						led@0 {
							reg = <0>;
							color = <LED_COLOR_ID_GREEN>;
							function = LED_FUNCTION_LAN;
							default-state = "keep";
						};
					};
				};

				port@3 {
					reg = <3>;
					label = "sw3";

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

						led@0 {
							reg = <0>;
							color = <LED_COLOR_ID_GREEN>;
							function = LED_FUNCTION_LAN;
							default-state = "keep";
						};
					};
				};

				port@4 {
					reg = <4>;
					label = "sw4";

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

						led@0 {
							reg = <0>;
							color = <LED_COLOR_ID_GREEN>;
							function = LED_FUNCTION_LAN;
							default-state = "keep";
						};
					};
				};

				port@5 {
					reg = <5>;
					label = "sw5";

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

						led@0 {
							reg = <0>;
							color = <LED_COLOR_ID_GREEN>;
							function = LED_FUNCTION_LAN;
							default-state = "keep";
						};
					};
				};
			};
		};
	};

	mdio1: mdio-1 {
		status = "okay";
		compatible = "virtual,mdio-gpio";
		gpios = <&qcom_pinmux 11 GPIO_ACTIVE_HIGH>,
			<&qcom_pinmux 10 GPIO_ACTIVE_HIGH>;
		#address-cells = <1>;
		#size-cells = <0>;

		pinctrl-0 = <&mdio1_pins>;
		pinctrl-names = "default";

		switch1: switch@14 {
			compatible = "qca,qca8337";

			dsa,member = <1 0>;

			pinctrl-0 = <&sw1_reset_pin>;
			pinctrl-names = "default";

			reset-gpios = <&qcom_pinmux 17 GPIO_ACTIVE_LOW>;
			reg = <0x10>;

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

				switch1cpu: port@0 {
					reg = <0>;
					label = "cpu";
					ethernet = <&gmac3>;
					phy-mode = "sgmii";
					fixed-link {
						speed = <1000>;
						full-duplex;
					};
				};

				port@1 {
					reg = <1>;
					label = "sw6";

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

						led@0 {
							reg = <0>;
							color = <LED_COLOR_ID_GREEN>;
							function = LED_FUNCTION_LAN;
							default-state = "keep";
						};
					};
				};

				port@2 {
					reg = <2>;
					label = "sw7";

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

						led@0 {
							reg = <0>;
							color = <LED_COLOR_ID_GREEN>;
							function = LED_FUNCTION_LAN;
							default-state = "keep";
						};
					};
				};

				port@3 {
					reg = <3>;
					label = "sw8";

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

						led@0 {
							reg = <0>;
							color = <LED_COLOR_ID_GREEN>;
							function = LED_FUNCTION_LAN;
							default-state = "keep";
						};
					};
				};

				port@4 {
					reg = <4>;
					label = "sw9";

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

						led@0 {
							reg = <0>;
							color = <LED_COLOR_ID_GREEN>;
							function = LED_FUNCTION_LAN;
							default-state = "keep";
						};
					};
				};

				port@5 {
					reg = <5>;
					label = "sw10";

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

						led@0 {
							reg = <0>;
							color = <LED_COLOR_ID_GREEN>;
							function = LED_FUNCTION_LAN;
							default-state = "keep";
						};
					};
				};
			};
		};
	};

	soc {
		gsbi5: gsbi@1a200000 {
			qcom,mode = <GSBI_PROT_SPI>;
			status = "okay";

			spi4: spi@1a280000 {
				status = "okay";

				pinctrl-0 = <&spi_pins>;
				pinctrl-names = "default";

				cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>;

				norflash: flash@0 {
					compatible = "jedec,spi-nor";
					#address-cells = <1>;
					#size-cells = <1>;
					spi-max-frequency = <50000000>;
					reg = <0>;

					partition@0 {
						label = "RouterBoot";
						reg = <0x0 0x40000>;
					};
				};
			};
		};
	};
};

&adm_dma {
	status = "okay";
};

&gmac0 {
	status = "okay";

	phy-mode = "rgmii";
	qcom,id = <0>;
	phy-handle = <&switch0cpu>;

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

&gmac3 {
	status = "okay";

	phy-mode = "sgmii";
	qcom,id = <3>;
	phy-handle = <&switch1cpu>;

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

&gsbi7 {
	status = "okay";
	qcom,mode = <GSBI_PROT_I2C_UART>;
};

&gsbi7_serial {
	status = "okay";
};

&hs_phy_1 {
	status = "okay";
};

&nand {
	status = "okay";

	nand@0 {
		reg = <0>;

		nand-ecc-strength = <4>;
		nand-bus-width = <8>;
		nand-ecc-step-size = <512>;

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

			boot@0 {
				label = "RouterBoard NAND 1 Boot";
				reg = <0x0000000 0x0800000>;
			};

			main@800000 {
				label = "RouterBoard NAND 1 Main";
				reg = <0x0800000 0x7800000>;
			};
		};
	};
};

&qcom_pinmux {
	buttons_pins: buttons_pins {
		mux {
			pins = "gpio66";
			drive-strength = <16>;
			bias-disable;
		};
	};

	leds_pins: leds_pins {
		mux {
			pins = "gpio33";
			drive-strength = <16>;
			bias-disable;
		};
	};

	mdio1_pins: mdio1_pins {
		mux {
			pins = "gpio10", "gpio11";
			function = "gpio";
			drive-strength = <8>;
			bias-disable;
		};
	};

	sw0_reset_pin: sw0_reset_pin {
		mux {
			pins = "gpio16";
			drive-strength = <16>;
			function = "gpio";
			bias-disable;
			input-disable;
		};
	};

	sw1_reset_pin: sw1_reset_pin {
		mux {
			pins = "gpio17";
			drive-strength = <16>;
			function = "gpio";
			bias-disable;
			input-disable;
		};
	};

	usb1_pwr_en_pins: usb1_pwr_en_pins {
		mux {
			pins = "gpio4";
			function = "gpio";
			drive-strength = <16>;
			bias-disable;
			output-high;
		};
	};
};

&ss_phy_1 {
	status = "okay";
};

&usb3_1 {
	pinctrl-0 = <&usb1_pwr_en_pins>;
	pinctrl-names = "default";

	status = "okay";
};
