// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
 * Copyright (C) 2017 Rafał Miłecki <rafal@milecki.pl>
 */

/dts-v1/;

#include "bcm47094.dtsi"
#include "bcm5301x-nand-cs0-bch8.dtsi"

/ {
	compatible = "linksys,panamera", "brcm,bcm47094", "brcm,bcm4708";
	model = "Linksys EA9500";

	chosen {
		bootargs = "console=ttyS0,115200";
	};

	memory@0 {
		device_type = "memory";
		reg = <0x00000000 0x08000000>,
		      <0x88000000 0x08000000>;
	};

	nvram@1c080000 {
		compatible = "brcm,nvram";
		reg = <0x1c080000 0x100000>;
	};

	gpio-keys {
		compatible = "gpio-keys";

		wps {
			label = "WPS";
			linux,code = <KEY_WPS_BUTTON>;
			gpios = <&chipcommon 3 GPIO_ACTIVE_LOW>;
		};

		rfkill {
				label = "WiFi";
				linux,code = <KEY_RFKILL>;
				gpios = <&chipcommon 16 GPIO_ACTIVE_LOW>;
		};

		reset {
				label = "Reset";
				linux,code = <KEY_RESTART>;
				gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
		};
	};

	leds {
		compatible = "gpio-leds";

		wps {
			label = "bcm53xx:white:wps";
			gpios = <&chipcommon 22 GPIO_ACTIVE_LOW>;
		};

		usb2 {
			label = "bcm53xx:green:usb2";
			gpios = <&chipcommon 1 GPIO_ACTIVE_LOW>;
			trigger-sources = <&ohci_port2>, <&ehci_port2>;
			linux,default-trigger = "usbport";
		};

		usb3 {
			label = "bcm53xx:green:usb3";
			gpios = <&chipcommon 2 GPIO_ACTIVE_LOW>;
			trigger-sources = <&ohci_port1>, <&ehci_port1>,
					  <&xhci_port1>;
			linux,default-trigger = "usbport";
		};

		power {
			label = "bcm53xx:white:power";
			gpios = <&chipcommon 4 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "default-on";
		};

		wifi-disabled {
			label = "bcm53xx:amber:wifi-disabled";
			gpios = <&chipcommon 0 GPIO_ACTIVE_LOW>;
		};

		wifi-enabled {
			label = "bcm53xx:white:wifi-enabled";
			gpios = <&chipcommon 5 GPIO_ACTIVE_HIGH>;
		};

		bluebar1 {
			label = "bcm53xx:white:bluebar1";
			gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>;
		};

		bluebar2 {
			label = "bcm53xx:white:bluebar2";
			gpios = <&chipcommon 12 GPIO_ACTIVE_HIGH>;
		};

		bluebar3 {
			label = "bcm53xx:white:bluebar3";
			gpios = <&chipcommon 15 GPIO_ACTIVE_LOW>;
		};

		bluebar4 {
			label = "bcm53xx:white:bluebar4";
			gpios = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
		};

		bluebar5 {
			label = "bcm53xx:white:bluebar5";
			gpios = <&chipcommon 19 GPIO_ACTIVE_HIGH>;
		};

		bluebar6 {
			label = "bcm53xx:white:bluebar6";
			gpios = <&chipcommon 20 GPIO_ACTIVE_HIGH>;
		};

		bluebar7 {
			label = "bcm53xx:white:bluebar7";
			gpios = <&chipcommon 21 GPIO_ACTIVE_HIGH>;
		};

		bluebar8 {
			label = "bcm53xx:white:bluebar8";
			gpios = <&chipcommon 8 GPIO_ACTIVE_HIGH>;
		};
	};

	mdio-bus-mux@18003000 {

		/* BIT(9) = 1 => external mdio */
		mdio@200 {
			reg = <0x200>;
			#address-cells = <1>;
			#size-cells = <0>;

			switch@0  {
				compatible = "brcm,bcm53125";
				#address-cells = <1>;
				#size-cells = <0>;
				reset-gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
				reset-names = "robo_reset";
				reg = <0>;
				dsa,member = <1 0>;
				pinctrl-names = "default";
				pinctrl-0 = <&pinmux_mdio>;

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

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

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

					port@2 {
						reg = <2>;
						label = "lan2";
					};

					port@3 {
						reg = <3>;
						label = "lan6";
					};

					port@4 {
						reg = <4>;
						label = "lan3";
					};

					sw1_p8: port@8 {
						reg = <8>;
						ethernet = <&sw0_p0>;
						label = "cpu";

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

&usb2 {
	vcc-gpio = <&chipcommon 13 GPIO_ACTIVE_HIGH>;
};

&usb3 {
	vcc-gpio = <&chipcommon 14 GPIO_ACTIVE_HIGH>;
};

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

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

		port@2 {
			reg = <2>;
			label = "lan4";
		};

		port@3 {
			reg = <3>;
			label = "lan8";
		};

		port@4 {
			reg = <4>;
			label = "wan";
		};

		port@5 {
			reg = <5>;
			ethernet = <&gmac0>;
			label = "cpu";
			status = "disabled";

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

		port@7 {
			reg = <7>;
			ethernet = <&gmac1>;
			label = "cpu";
			status = "disabled";

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

		port@8 {
			reg = <8>;
			ethernet = <&gmac2>;
			label = "cpu";

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

		sw0_p0: port@0 {
			reg = <0>;
			label = "extsw";

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

&usb3_phy {
	status = "okay";
};

&nandcs {
	partitions {
		compatible = "linksys,ns-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		partition@0 {
			label = "boot";
			reg = <0x0000000 0x0080000>;
			read-only;
		};

		partition@80000 {
			label = "nvram";
			reg = <0x080000 0x0100000>;
		};

		partition@180000{
			label = "devinfo";
			reg = <0x0180000 0x080000>;
		};

		partition@200000 {
			reg = <0x0200000 0x01d00000>;
			compatible = "linksys,ns-firmware", "brcm,trx";
		};

		partition@1f00000 {
			reg = <0x01f00000 0x01d00000>;
			compatible = "linksys,ns-firmware", "brcm,trx";
		};

		partition@5200000 {
			label = "system";
			reg = <0x05200000 0x02e00000>;
		};
	};
};
