// 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-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>;
		};
	};
};
