--- /dev/null
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT\r
+#include "qcom-ipq8064-v2.0-smb208.dtsi"\r
+\r
+#include <dt-bindings/input/input.h>\r
+#include <dt-bindings/soc/qcom,tcsr.h>\r
+\r
+/ {\r
+ model = "Linksys E8350 V1 WiFi Router";\r
+ compatible = "linksys,e8350-v1", "qcom,ipq8064";\r
+ \r
+ memory@0 {\r
+ reg = <0x42000000 0x1e000000>;\r
+ device_type = "memory";\r
+ };\r
+ \r
+ aliases {\r
+ serial0 = &gsbi4_serial;\r
+ \r
+ led-boot = &led_power;\r
+ led-failsafe = &led_power;\r
+ led-running = &led_power;\r
+ led-upgrade = &led_power;\r
+ };\r
+ \r
+ keys {\r
+ compatible = "gpio-keys";\r
+ pinctrl-0 = <&button_pins>;\r
+ pinctrl-names = "default";\r
+ \r
+ reset {\r
+ label = "reset";\r
+ gpios = <&qcom_pinmux 68 GPIO_ACTIVE_LOW>;\r
+ linux,code = <KEY_RESTART>;\r
+ debounce-interval = <60>;\r
+ wakeup-source;\r
+ };\r
+ \r
+ wps {\r
+ label = "wps";\r
+ gpios = <&qcom_pinmux 65 GPIO_ACTIVE_LOW>;\r
+ linux,code = <KEY_WPS_BUTTON>;\r
+ debounce-interval = <60>;\r
+ wakeup-source;\r
+ };\r
+ \r
+ wifi {\r
+ label = "wifi";\r
+ gpios = <&qcom_pinmux 67 GPIO_ACTIVE_LOW>;\r
+ linux,code = <KEY_RFKILL>;\r
+ debounce-interval = <60>;\r
+ wakeup-source;\r
+ };\r
+ };\r
+ \r
+ leds {\r
+ compatible = "gpio-leds";\r
+ pinctrl-0 = <&led_pins>;\r
+ pinctrl-names = "default";\r
+ \r
+ led_power: power {\r
+ label = "green:power";\r
+ gpios = <&qcom_pinmux 26 GPIO_ACTIVE_HIGH>;\r
+ default-state = "keep";\r
+ };\r
+ \r
+ wps {\r
+ label = "green:wps";\r
+ gpios = <&qcom_pinmux 53 GPIO_ACTIVE_HIGH>;\r
+ };\r
+ \r
+ wifi {\r
+ label = "green:wifi";\r
+ gpios = <&qcom_pinmux 54 GPIO_ACTIVE_HIGH>;\r
+ };\r
+ };\r
+};\r
+\r
+&nand {\r
+ status = "okay";\r
+\r
+ #address-cells = <1>;\r
+ #size-cells = <1>;\r
+ \r
+ nand@0 {\r
+ reg = <0>;\r
+ \r
+ nand-ecc-strength = <4>;\r
+ nand-bus-width = <8>;\r
+ \r
+ partitions {\r
+ compatible = "fixed-partitions";\r
+ \r
+ partition@0 {\r
+ label = "ubi";\r
+ reg = <0 0x4000000>;\r
+ };\r
+ partition@4000000 {\r
+ label = "extra";\r
+ reg = <0x4000000 0x4000000>;\r
+ };\r
+ };\r
+ };\r
+};\r
+\r
+&qcom_pinmux {\r
+ button_pins: button_pins {\r
+ mux {\r
+ pins = "gpio68","gpio65", "gpio67";\r
+ function = "gpio";\r
+ drive-strength = <2>;\r
+ bias-pull-up;\r
+ };\r
+ };\r
+ \r
+ led_pins: led_pins {\r
+ mux {\r
+ pins = "gpio26","gpio53", "gpio54";\r
+ function = "gpio";\r
+ drive-strength = <2>;\r
+ bias-pull-up;\r
+ };\r
+ };\r
+ \r
+ switch_reset: switch_reset_pins {\r
+ mux {\r
+ pins = "gpio63";\r
+ function = "gpio";\r
+ drive-strength = <12>;\r
+ bias-pull-up;\r
+ };\r
+ };\r
+};\r
+\r
+&gsbi5 {\r
+ qcom,mode = <GSBI_PROT_SPI>;\r
+ status = "okay";\r
+ \r
+ spi5: spi@1a280000 {\r
+ status = "okay";\r
+ \r
+ pinctrl-0 = <&spi_pins>;\r
+ pinctrl-names = "default";\r
+ \r
+ cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>;\r
+ \r
+ m25p80@0 {\r
+ compatible = "jedec,spi-nor";\r
+ spi-max-frequency = <51200000>;\r
+ reg = <0>;\r
+ \r
+ partitions {\r
+ compatible = "fixed-partitions";\r
+ #address-cells = <1>;\r
+ #size-cells = <1>;\r
+ \r
+ partition@0 {\r
+ label = "0:sbl1";\r
+ reg = <0x0000000 0x0010000>;\r
+ read-only;\r
+ };\r
+ \r
+ partition@10000 {\r
+ label = "0:mibib";\r
+ reg = <0x0010000 0x0020000>;\r
+ read-only;\r
+ };\r
+ \r
+ partition@30000 {\r
+ label = "0:sbl2";\r
+ reg = <0x0030000 0x0020000>;\r
+ read-only;\r
+ };\r
+ \r
+ partition@50000 {\r
+ label = "0:sbl3";\r
+ reg = <0x0050000 0x0030000>;\r
+ read-only;\r
+ };\r
+ \r
+ partition@80000 {\r
+ label = "0:ddrconfig";\r
+ reg = <0x0080000 0x0010000>;\r
+ read-only;\r
+ };\r
+ \r
+ partition@90000 {\r
+ label = "0:ssd";\r
+ reg = <0x0090000 0x0010000>;\r
+ read-only;\r
+ };\r
+ \r
+ partition@a0000 {\r
+ label = "0:tz";\r
+ reg = <0x00a0000 0x0030000>;\r
+ read-only;\r
+ };\r
+ \r
+ partition@d0000 {\r
+ label = "0:rpm";\r
+ reg = <0x00d0000 0x0020000>;\r
+ read-only;\r
+ };\r
+ \r
+ partition@f0000 {\r
+ label = "0:oldappsbl";\r
+ reg = <0x00f0000 0x0040000>;\r
+ read-only;\r
+ };\r
+ \r
+ partition@130000 {\r
+ label = "0:appsblenv";\r
+ reg = <0x0130000 0x0040000>;\r
+ read-only;\r
+ };\r
+ \r
+ art: partition@170000 {\r
+ label = "0:ART";\r
+ reg = <0x0170000 0x0020000>;\r
+ read-only;\r
+ };\r
+ \r
+ partition@190000 {\r
+ label = "0:uboot";\r
+ reg = <0x0190000 0x0050000>;\r
+ read-only;\r
+ };\r
+ \r
+ partition@1e0000 {\r
+ label = "0:oldnss1";\r
+ reg = <0x01e0000 0x0020000>;\r
+ read-only;\r
+ };\r
+ \r
+ partition@200000 {\r
+ label = "0:nvram";\r
+ reg = <0x0200000 0x0020000>;\r
+ read-only;\r
+ };\r
+ \r
+ partition@220000 {\r
+ label = "0:oldkernel";\r
+ reg = <0x0220000 0x01e0000>;\r
+ read-only;\r
+ };\r
+ };\r
+ };\r
+ };\r
+};\r
+\r
+&hs_phy_0 {\r
+ status = "okay";\r
+};\r
+\r
+&ss_phy_0 {\r
+ status = "okay";\r
+};\r
+\r
+&usb3_0 {\r
+ status = "okay";\r
+};\r
+\r
+&hs_phy_1 {\r
+ status = "okay";\r
+};\r
+\r
+&ss_phy_1 {\r
+ status = "okay";\r
+};\r
+\r
+&usb3_1 {\r
+ status = "okay";\r
+};\r
+\r
+&pcie0 {\r
+ status = "okay";\r
+ \r
+ max-link-speed = <1>;\r
+};\r
+\r
+&pcie1 {\r
+ status = "okay";\r
+};\r
+\r
+&mdio0 {\r
+ status = "okay";\r
+ \r
+ pinctrl-0 = <&mdio0_pins>;\r
+ pinctrl-names = "default";\r
+ \r
+ /* Switch from documentation require at least 12ms for reset */\r
+ reset-gpios = <&qcom_pinmux 63 GPIO_ACTIVE_HIGH>;\r
+ reset-post-delay-us = <12000>;\r
+ \r
+ switch@10 {\r
+ compatible = "qca,qca8337";\r
+ #address-cells = <1>;\r
+ #size-cells = <0>;\r
+ reg = <0x10>;\r
+ \r
+ ports {\r
+ #address-cells = <1>;\r
+ #size-cells = <0>;\r
+ \r
+ port@0 {\r
+ reg = <0>;\r
+ label = "cpu";\r
+ ethernet = <&gmac1>;\r
+ phy-mode = "rgmii";\r
+ tx-internal-delay-ps = <1000>;\r
+ rx-internal-delay-ps = <1000>;\r
+ \r
+ fixed-link {\r
+ speed = <1000>;\r
+ full-duplex;\r
+ };\r
+ };\r
+ \r
+ port@1 {\r
+ reg = <1>;\r
+ label = "lan1";\r
+ phy-mode = "internal";\r
+ phy-handle = <&phy_port1>;\r
+ };\r
+ \r
+ port@2 {\r
+ reg = <2>;\r
+ label = "lan2";\r
+ phy-mode = "internal";\r
+ phy-handle = <&phy_port2>;\r
+ };\r
+ \r
+ port@3 {\r
+ reg = <3>;\r
+ label = "lan3";\r
+ phy-mode = "internal";\r
+ phy-handle = <&phy_port3>;\r
+ };\r
+ \r
+ port@4 {\r
+ reg = <4>;\r
+ label = "lan4";\r
+ phy-mode = "internal";\r
+ phy-handle = <&phy_port4>;\r
+ };\r
+ \r
+ port@5 {\r
+ reg = <5>;\r
+ label = "wan";\r
+ phy-mode = "internal";\r
+ phy-handle = <&phy_port5>;\r
+ };\r
+ \r
+ port@6 {\r
+ reg = <6>;\r
+ label = "cpu";\r
+ ethernet = <&gmac2>;\r
+ phy-mode = "sgmii";\r
+ qca,sgmii-enable-pll;\r
+ \r
+ fixed-link {\r
+ speed = <1000>;\r
+ full-duplex;\r
+ };\r
+ };\r
+ };\r
+ \r
+ mdio {\r
+ #address-cells = <1>;\r
+ #size-cells = <0>;\r
+ \r
+ phy_port1: phy@0 {\r
+ reg = <0>;\r
+ };\r
+ \r
+ phy_port2: phy@1 {\r
+ reg = <1>;\r
+ };\r
+ \r
+ phy_port3: phy@2 {\r
+ reg = <2>;\r
+ };\r
+ \r
+ phy_port4: phy@3 {\r
+ reg = <3>;\r
+ };\r
+ \r
+ phy_port5: phy@4 {\r
+ reg = <4>;\r
+ };\r
+ };\r
+ };\r
+};\r
+\r
+&gmac1 {\r
+ status = "okay";\r
+ \r
+ phy-mode = "rgmii";\r
+ qcom,id = <1>;\r
+ \r
+ pinctrl-0 = <&rgmii2_pins>;\r
+ pinctrl-names = "default";\r
+ \r
+ fixed-link {\r
+ speed = <1000>;\r
+ full-duplex;\r
+ };\r
+};\r
+\r
+&gmac2 {\r
+ status = "okay";\r
+ \r
+ phy-mode = "sgmii";\r
+ qcom,id = <2>;\r
+ \r
+ fixed-link {\r
+ speed = <1000>;\r
+ full-duplex;\r
+ };\r
+};\r
+\r
+&tcsr {\r
+ qcom,usb-ctrl-select = <TCSR_USB_SELECT_USB3_DUAL>;\r
+ compatible = "qcom,tcsr", "syscon";\r
+};\r
+\r
+&adm_dma {\r
+ status = "okay";\r
+};\r