ASR_BASE

Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/target/linux/bcm63xx/dts/bcm3368-netgear-cvg834g.dts b/target/linux/bcm63xx/dts/bcm3368-netgear-cvg834g.dts
new file mode 100644
index 0000000..fb22f76
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm3368-netgear-cvg834g.dts
@@ -0,0 +1,65 @@
+#include "bcm3368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Netgear CVG834G";
+	compatible = "netgear,cvg834g", "brcm,bcm3368";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&gpio1 5 0>;
+			default-state = "on";
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&uart1 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm3368.dtsi b/target/linux/bcm63xx/dts/bcm3368.dtsi
new file mode 100644
index 0000000..7c39222
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm3368.dtsi
@@ -0,0 +1,135 @@
+/dts-v1/;
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+	compatible = "brcm,bcm3368";
+
+	aliases {
+		pflash = &pflash;
+		gpio0 = &gpio0;
+		gpio1 = &gpio1;
+		serial0 = &uart0;
+		serial1 = &uart1;
+		spi0 = &lsspi;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			compatible = "brcm,bmips4350", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <0>;
+		};
+
+		cpu@1 {
+			compatible = "brcm,bmips4350", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <1>;
+		};
+	};
+
+	cpu_intc: interrupt-controller {
+		#address-cells = <0>;
+		compatible = "mti,cpu-interrupt-controller";
+
+		interrupt-controller;
+		#interrupt-cells = <1>;
+	};
+
+	memory { device_type = "memory"; reg = <0 0>; };
+
+	pflash: nor@1e000000 {
+		compatible = "cfi-flash";
+		reg = <0x1e000000 0x2000000>;
+		bank-width = <2>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		status = "disabled";
+	};
+
+	ubus@fff00000 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		compatible = "simple-bus";
+		interrupt-parent = <&periph_intc>;
+
+		periph_intc: interrupt-controller@fff8c00c {
+			compatible = "brcm,bcm6345-l1-intc";
+			reg = <0xfff8c00c 0x8>;
+
+			interrupt-controller;
+			#interrupt-cells = <1>;
+
+			interrupt-parent = <&cpu_intc>;
+			interrupts = <2>;
+		};
+
+		ext_intc0: interrupt-controller@fff8c014 {
+			compatible = "brcm,bcm6345-ext-intc";
+			reg = <0xfff8c014 0x4>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+
+			interrupts = <25>, <26>, <27>, <28>;
+		};
+
+		gpio1: gpio-controller@fff8c080 {
+			compatible = "brcm,bcm6345-gpio";
+			reg = <0xfff8c080 4>, <0xfff8c088 4>;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			ngpios = <8>;
+		};
+
+		gpio0: gpio-controller@fff8c084 {
+			compatible = "brcm,bcm6345-gpio";
+			reg = <0xfff8c084 4>, <0xfff8c08c 4>;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+		};
+
+		uart0: serial@fff8c100 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0xfff8c100 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <2>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		uart1: serial@fff8c120 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0xfff8c120 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <3>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		lsspi: spi@fff8c800 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6358-spi";
+			reg = <0xfff8c800 0x70c>;
+			interrupts = <1>;
+			/* clocks = <&clkctl 9>; */
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm63167-sercomm-h500-s-lowi.dts b/target/linux/bcm63xx/dts/bcm63167-sercomm-h500-s-lowi.dts
new file mode 100644
index 0000000..90aa9e1
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63167-sercomm-h500-s-lowi.dts
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Device Tree file for Sercomm H500-s lowi
+ *
+ * Copyright (C) 2020 Daniel González Cabanelas <dgcbueu@gmail.com>
+ */
+
+#include "bcm63167-sercomm-h500-s.dtsi"
+
+/ {
+	model = "Sercomm H500-s lowi";
+	compatible = "sercomm,h500-s-lowi", "brcm,bcm63167", "brcm,bcm63268";
+};
diff --git a/target/linux/bcm63xx/dts/bcm63167-sercomm-h500-s-vfes.dts b/target/linux/bcm63xx/dts/bcm63167-sercomm-h500-s-vfes.dts
new file mode 100644
index 0000000..bd69ccd
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63167-sercomm-h500-s-vfes.dts
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Device Tree file for Sercomm H500-s vfes
+ *
+ * Copyright (C) 2020 Daniel González Cabanelas <dgcbueu@gmail.com>
+ */
+ 
+#include "bcm63167-sercomm-h500-s.dtsi"
+
+/ {
+	model = "Sercomm H500-s vfes";
+	compatible = "sercomm,h500-s-vfes", "brcm,bcm63167", "brcm,bcm63268";
+};
diff --git a/target/linux/bcm63xx/dts/bcm63167-sercomm-h500-s.dtsi b/target/linux/bcm63xx/dts/bcm63167-sercomm-h500-s.dtsi
new file mode 100644
index 0000000..0766500
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63167-sercomm-h500-s.dtsi
@@ -0,0 +1,194 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Device Tree file for Sercomm H500-s
+ *
+ * Copyright (C) 2020 Daniel González Cabanelas <dgcbueu@gmail.com>
+ */
+
+#include "bcm63268.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_red;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,ubifs noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 35 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds>;
+
+	mobile_red {
+		reg = <0>;
+		label = "red:mobile";
+	};
+
+	mobile_green {
+		reg = <1>;
+		label = "green:mobile";
+	};
+
+	led_power_red: power_red {
+		reg = <8>;
+		label = "red:power";
+	};
+
+	wifi_green {
+		reg = <9>;
+		label = "green:wifi";
+	};
+
+	phone_red {
+		reg = <12>;
+		label = "red:phone";
+	};
+
+	wifi_red {
+		reg = <13>;
+		label = "red:wifi";
+	};
+
+	internet_red {
+		reg = <14>;
+		label = "red:internet";
+	};
+
+	internet_green {
+		reg = <15>;
+		label = "green:internet";
+	};
+
+	phone_green {
+		reg = <16>;
+		label = "green:phone";
+	};
+
+	led_power_green: power_green {
+		reg = <17>;
+		label = "green:power";
+		default-state = "on";
+	};
+
+	mobile_blue {
+		reg = <23>;
+		label = "blue:mobile";
+	};
+};
+
+&nflash {
+	status = "okay";
+
+	nandcs@0 {
+		compatible = "brcm,nandcs";
+		#size-cells = <1>;
+		#address-cells = <1>;
+		reg = <0>;
+		nand-ecc-step-size = <512>;
+		nand-ecc-strength = <4>;
+		nand-on-flash-bbt;
+		brcm,nand-oob-sector-size = <64>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "cferom";
+				reg = <0x0000000 0x0020000>;
+				read-only;
+			};
+
+			partition@20000 {
+				label = "part_map";
+				reg = <0x0020000 0x00a0000>;
+				read-only;
+			};
+
+			partition@c0000 {
+				label = "cferam1";
+				reg = <0x00c0000 0x0140000>;
+				read-only;
+			};
+
+			partition@200000 {
+				label = "cferam2";
+				reg = <0x0200000 0x0140000>;
+				read-only;
+			};
+
+			partition@6920000 {
+				label = "bootflag1";
+				reg = <0x6920000 0x0140000>;
+			};
+
+			partition@6a60000 {
+				label = "bootflag2";
+				reg = <0x6a60000 0x0140000>;
+			};
+
+			partition@520000 {
+				compatible = "sercomm,wfi";
+				label = "wfi";
+				reg = <0x0520000 0x6400000>; /* 2 images, 97152 KiB */
+			};
+
+			partition@6ba0000 {
+				label = "xml_cfg";
+				reg = <0x6ba0000 0x0280000>;
+				read-only;
+			};
+
+			partition@6e20000 {
+				label = "app_data";
+				reg = <0x6e20000 0x0280000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio0",  "gpio1",  "gpio8",  "gpio9",
+		       "gpio12", "gpio13", "gpio14", "gpio15",
+		       "gpio16", "gpio17", "gpio23";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm63168-comtrend-vr-3032u.dts b/target/linux/bcm63xx/dts/bcm63168-comtrend-vr-3032u.dts
new file mode 100644
index 0000000..c2505f8
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63168-comtrend-vr-3032u.dts
@@ -0,0 +1,183 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "bcm63268.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Comtrend VR-3032u";
+	compatible = "comtrend,vr-3032u", "brcm,bcm63168", "brcm,bcm63268";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,ubifs noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+	brcm,serial-leds;
+	brcm,serial-dat-low;
+	brcm,serial-shift-inv;
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_serial_led>;
+
+	led@0 {
+		/* GPHY0 Spd 0 */
+		reg = <0>;
+		brcm,hardware-controlled;
+		brcm,link-signal-sources = <0>;
+	};
+
+	led@1 {
+		/* GPHY0 Spd 1 */
+		reg = <1>;
+		brcm,hardware-controlled;
+		brcm,link-signal-sources = <1>;
+	};
+
+	led@2 {
+		reg = <2>;
+		active-low;
+		label = "red:inet";
+	};
+
+	led@3 {
+		reg = <3>;
+		active-low;
+		label = "green:dsl";
+	};
+
+	led@4 {
+		reg = <4>;
+		active-low;
+		label = "green:usb";
+	};
+
+	led@7 {
+		reg = <7>;
+		active-low;
+		label = "green:wps";
+	};
+
+	led@8 {
+		reg = <8>;
+		active-low;
+		label = "green:inet";
+	};
+
+	led@9 {
+		/* EPHY0 Act */
+		reg = <9>;
+		brcm,hardware-controlled;
+	};
+
+	led@10 {
+		/* EPHY1 Act */
+		reg = <10>;
+		brcm,hardware-controlled;
+	};
+
+	led@11 {
+		/* EPHY2 Act */
+		reg = <11>;
+		brcm,hardware-controlled;
+	};
+
+	led@12 {
+		/* GPHY0 Act */
+		reg = <12>;
+		brcm,hardware-controlled;
+	};
+
+	led@13 {
+		/* EPHY0 Spd */
+		reg = <13>;
+		brcm,hardware-controlled;
+	};
+
+	led@14 {
+		/* EPHY1 Spd */
+		reg = <14>;
+		brcm,hardware-controlled;
+	};
+
+	led@15 {
+		/* EPHY2 Spd */
+		reg = <15>;
+		brcm,hardware-controlled;
+	};
+
+	led_power_green: led@20 {
+		reg = <20>;
+		active-low;
+		label = "green:power";
+		default-state = "on";
+	};
+};
+
+&nflash {
+	status = "okay";
+
+	nandcs@0 {
+		compatible = "brcm,nandcs";
+		#size-cells = <1>;
+		#address-cells = <1>;
+		reg = <0>;
+		nand-ecc-step-size = <512>;
+		nand-ecc-strength = <15>;
+		nand-on-flash-bbt;
+		brcm,nand-oob-sector-size = <64>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "cferom";
+				reg = <0x0000000 0x0020000>;
+				read-only;
+			};
+
+			partition@20000 {
+				compatible = "brcm,wfi-split";
+				label = "wfi";
+				reg = <0x0020000 0x7ac0000>;
+			};
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm63168-sky-sr102.dts b/target/linux/bcm63xx/dts/bcm63168-sky-sr102.dts
new file mode 100644
index 0000000..47ba156
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63168-sky-sr102.dts
@@ -0,0 +1,123 @@
+#include "bcm63268.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "SKY SR102";
+	compatible = "sky,sr102", "brcm,bcm63168", "brcm,bcm63268";
+
+	aliases {
+		led-boot = &led_power_white;
+		led-failsafe = &led_power_white;
+		led-running = &led_power_white;
+		led-upgrade = &led_power_white;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 33 0>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		lan1_green {
+			label = "green:lan1";
+			gpios = <&pinctrl 1 1>;
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 2 1>;
+		};
+		wifi_red {
+			label = "red:wifi";
+			gpios = <&pinctrl 3 1>;
+		};
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 4 1>;
+		};
+		inet_white {
+			label = "white:inet";
+			gpios = <&pinctrl 5 0>;
+		};
+		led_power_white: power_white {
+			label = "white:power";
+			gpios = <&pinctrl 6 0>;
+			default-state = "on";
+		};
+		wifi_white {
+			label = "white:wifi";
+			gpios = <&pinctrl 8 0>;
+		};
+		lan2_red {
+			label = "red:lan2";
+			gpios = <&pinctrl 9 1>;
+		};
+		lan3_red {
+			label = "red:lan3";
+			gpios = <&pinctrl 10 1>;
+		};
+		lan4_red {
+			label = "red:lan4";
+			gpios = <&pinctrl 11 1>;
+		};
+		lan1_red {
+			label = "red:lan1";
+			gpios = <&pinctrl 12 1>;
+		};
+		lan2_green {
+			label = "green:lan2";
+			gpios = <&pinctrl 13 0>;
+		};
+		lan3_green {
+			label = "green:lan3";
+			gpios = <&pinctrl 14 1>;
+		};
+		lan4_green {
+			label = "green:lan4";
+			gpios = <&pinctrl 15 1>;
+		};
+		hd_white {
+			label = "white:hd";
+			gpios = <&pinctrl 18 0>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "brcm,bcm963xx-cfe-nor-partitions";
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm63169-comtrend-vg-8050.dts b/target/linux/bcm63xx/dts/bcm63169-comtrend-vg-8050.dts
new file mode 100644
index 0000000..5d5ba46
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63169-comtrend-vg-8050.dts
@@ -0,0 +1,196 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "bcm63268.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Comtrend VG-8050";
+	compatible = "comtrend,vg-8050", "brcm,bcm63169", "brcm,bcm63268";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,ubifs noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+	brcm,serial-leds;
+	brcm,serial-dat-low;
+	brcm,serial-shift-inv;
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_serial_led>;
+
+	led@2 {
+		reg = <2>;
+		active-low;
+		label = "red:internet";
+	};
+
+	led@3 {
+		reg = <3>;
+		active-low;
+		label = "red:power";
+	};
+
+	led_power_green: led@6 {
+		reg = <6>;
+		active-low;
+		label = "green:power";
+		default-state = "on";
+	};
+
+	led@7 {
+		reg = <7>;
+		active-low;
+		label = "green:wps";
+	};
+
+	led@8 {
+		reg = <8>;
+		active-low;
+		label = "green:internet";
+	};
+
+	led@10 {
+		reg = <10>;
+		active-low;
+		label = "green:voip";
+	};
+
+	led@12 {
+		reg = <12>;
+		active-low;
+		label = "red:voip";
+	};
+
+	led@14 {
+		reg = <14>;
+		active-low;
+		label = "red:wps";
+	};
+};
+
+&hsspi {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_hsspi_cs5>;
+
+	switch@5 {
+		compatible = "brcm,bcm53125";
+		reg = <5>;
+		spi-max-frequency = <781000>;
+		spi-cpha;
+		spi-cpol;
+
+		lede,alias = "eth0";
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			lan@0 {
+				reg = <0>;
+				label = "lan4";
+			};
+
+			lan@1 {
+				reg = <1>;
+				label = "lan3";
+			};
+
+			lan@2 {
+				reg = <2>;
+				label = "lan2";
+			};
+
+			lan@3 {
+				reg = <3>;
+				label = "lan1";
+			};
+
+			wan@4 {
+				reg = <4>;
+				label = "wan";
+			};
+
+			cpu@8 {
+				reg = <8>;
+				label = "cpu";
+
+				fixed-link {
+					speed = <1000>;
+					full-duplex;
+					asym-pause;
+					pause;
+				};
+			};
+		};
+	};
+};
+
+&nflash {
+	status = "okay";
+
+	nandcs@0 {
+		compatible = "brcm,nandcs";
+		#size-cells = <1>;
+		#address-cells = <1>;
+		reg = <0>;
+		nand-ecc-step-size = <512>;
+		nand-ecc-strength = <15>;
+		nand-on-flash-bbt;
+		brcm,nand-oob-sector-size = <64>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "cferom";
+				reg = <0x0000000 0x0020000>;
+				read-only;
+			};
+
+			partition@20000 {
+				compatible = "brcm,wfi-split";
+				label = "wfi";
+				reg = <0x0020000 0x7ac0000>;
+			};
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6318-brcm-bcm96318ref-p300.dts b/target/linux/bcm63xx/dts/bcm6318-brcm-bcm96318ref-p300.dts
new file mode 100644
index 0000000..c6700bd
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6318-brcm-bcm96318ref-p300.dts
@@ -0,0 +1,87 @@
+#include "bcm6318.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM96318REF_P300 reference board";
+	compatible = "brcm,bcm96318ref-p300", "brcm,bcm6318";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		inet {
+			label = "green:inet";
+			gpios = <&pinctrl 8 1>;
+		};
+
+		inet_fail {
+			label = "red:inet-fail";
+			gpios = <&pinctrl 9 1>;
+		};
+
+		post_failed {
+			label = "red:post-failed";
+			gpios = <&pinctrl 11 1>;
+		};
+
+		usb_pwron {
+			label = "usb-pwron";
+			gpios = <&pinctrl 13 1>;
+			default-state = "on";
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <62500000>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "brcm,bcm963xx-cfe-nor-partitions";
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usb_pwron>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6318-brcm-bcm96318ref.dts b/target/linux/bcm63xx/dts/bcm6318-brcm-bcm96318ref.dts
new file mode 100644
index 0000000..89649fa
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6318-brcm-bcm96318ref.dts
@@ -0,0 +1,81 @@
+#include "bcm6318.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM96318REF reference board";
+	compatible = "brcm,bcm96318ref", "brcm,bcm6318";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		inet {
+			label = "green:inet";
+			gpios = <&pinctrl 8 1>;
+		};
+
+		inet_fail {
+			label = "red:inet-fail";
+			gpios = <&pinctrl 9 1>;
+		};
+
+		post_failed {
+			label = "red:post-failed";
+			gpios = <&pinctrl 11 1>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <62500000>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "brcm,bcm963xx-cfe-nor-partitions";
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usb_pwron>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6318-comtrend-ar-5315u.dts b/target/linux/bcm63xx/dts/bcm6318-comtrend-ar-5315u.dts
new file mode 100644
index 0000000..8557730
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6318-comtrend-ar-5315u.dts
@@ -0,0 +1,173 @@
+#include "bcm6318.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Comtrend AR-5315u";
+	compatible = "comtrend,ar-5315u", "brcm,bcm6318";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 3 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <62500000>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			cfe@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			linux@10000 {
+				reg = <0x010000 0xfe0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+
+			nvram@ff0000 {
+				reg = <0xff0000 0x010000>;
+				label = "nvram";
+			};
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds
+		     &pinctrl_ephy0_act_led &pinctrl_ephy1_act_led
+		     &pinctrl_ephy2_act_led &pinctrl_ephy3_act_led>;
+
+	led@0 {
+		reg = <0>;
+		active-low;
+		label = "green:wps";
+	};
+
+	led_power_green: led@1 {
+		reg = <1>;
+		active-low;
+		label = "green:power";
+		default-state = "on";
+	};
+
+	led@2 {
+		reg = <2>;
+		active-low;
+		label = "green:usb";
+	};
+
+	led@4 {
+		reg = <4>;
+		brcm,hardware-controlled;
+		brcm,link-signal-sources = <4>;
+		/* EPHY0 Act */
+	};
+
+	led@5 {
+		reg = <5>;
+		brcm,hardware-controlled;
+		brcm,link-signal-sources = <5>;
+		/* EPHY1 Act */
+	};
+
+	led@6 {
+		reg = <6>;
+		brcm,hardware-controlled;
+		brcm,link-signal-sources = <6>;
+		/* EPHY2 Act */
+	};
+
+	led@7 {
+		reg = <7>;
+		brcm,hardware-controlled;
+		brcm,link-signal-sources = <7>;
+		/* EPHY3 Act */
+	};
+
+	led@8 {
+		reg = <8>;
+		active-low;
+		label = "green:inet";
+	};
+
+	led@9 {
+		reg = <9>;
+		active-low;
+		label = "red:inet";
+	};
+
+	led@10 {
+		reg = <10>;
+		active-low;
+		label = "green:dsl";
+	};
+
+	led@11 {
+		reg = <11>;
+		active-low;
+		label = "red:power";
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio0", "gpio1",
+		       "gpio2", "gpio8",
+		       "gpio9", "gpio10",
+		       "gpio11";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6318-d-link-dsl-275xb-d1.dts b/target/linux/bcm63xx/dts/bcm6318-d-link-dsl-275xb-d1.dts
new file mode 100644
index 0000000..acf4332
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6318-d-link-dsl-275xb-d1.dts
@@ -0,0 +1,138 @@
+#include "bcm6318.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "D-Link DSL-2750B/DSL-2751 rev D1";
+	compatible = "d-link,dsl-275xb-d1", "brcm,bcm6318";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wifi {
+			label = "wifi";
+			gpios = <&pinctrl 2 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 3 1>;
+			default-state = "on";
+		};
+
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 8 1>;
+		};
+
+		inet_red {
+			label = "red:inet-fail";
+			gpios = <&pinctrl 9 1>;
+		};
+
+		power_red {
+			label = "red:post-failed";
+			gpios = <&pinctrl 11 1>;
+		};
+
+		wps_blue {
+			label = "blue:wps";
+			gpios = <&pinctrl 16 1>;
+		};
+
+		dsl_green {
+			label = "green:dsl";
+			gpios = <&pinctrl 17 1>;
+		};
+
+		usb_green {
+			/* not user controllable? */
+			label = "green:usb";
+			gpios = <&pinctrl 49 1>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <62500000>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			cfe@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			linux@10000 {
+				reg = <0x010000 0x7e0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+
+			nvram@7f0000 {
+				reg = <0x7f0000 0x010000>;
+				label = "nvram";
+			};
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+
+	pinctrl-0 = <&pinctrl_ephy0_act_led &pinctrl_ephy1_act_led
+		     &pinctrl_ephy2_act_led &pinctrl_ephy3_act_led>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6318-sagem-fast-2704n.dts b/target/linux/bcm63xx/dts/bcm6318-sagem-fast-2704n.dts
new file mode 100644
index 0000000..6702ef1
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6318-sagem-fast-2704n.dts
@@ -0,0 +1,140 @@
+#include "bcm6318.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Sagem F@st 2704N";
+	compatible = "sagem,fast-2704n", "brcm,bcm6318";
+
+	aliases {
+		led-boot = &led_power_red;
+		led-failsafe = &led_power_red;
+		led-running = &led_power_red;
+		led-upgrade = &led_power_red;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wlan {
+			label = "wlan";
+			gpios = <&pinctrl 1 0>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		wps_green {
+			label = "green:wps";
+			gpios = <&pinctrl 2 1>;
+		};
+		lan1_green {
+			label = "green:lan1";
+			gpios = <&pinctrl 4 1>;
+		};
+		lan2_green {
+			label = "green:lan2";
+			gpios = <&pinctrl 5 1>;
+		};
+		lan3_green {
+			label = "green:lan3";
+			gpios = <&pinctrl 6 1>;
+		};
+		lan4_green {
+			label = "green:lan4";
+			gpios = <&pinctrl 7 1>;
+		};
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 8 1>;
+		};
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 9 1>;
+		};
+		dsl_green {
+			label = "green:dsl";
+			gpios = <&pinctrl 10 1>;
+		};
+		led_power_red: power_red {
+			label = "red:power";
+			gpios = <&pinctrl 11 1>;
+		};
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 47 1>;
+			default-state = "on";
+		};
+		usb_green {
+			label = "green:usb";
+			gpios = <&pinctrl 49 1>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <62500000>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			cfe@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			linux@10000 {
+				reg = <0x010000 0x7e0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+
+			nvram@7f0000 {
+				reg = <0x7f0000 0x010000>;
+				label = "nvram";
+			};
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6318.dtsi b/target/linux/bcm63xx/dts/bcm6318.dtsi
new file mode 100644
index 0000000..ee7db04
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6318.dtsi
@@ -0,0 +1,202 @@
+/dts-v1/;
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+	compatible = "brcm,bcm6318";
+
+	aliases {
+		pinctrl = &pinctrl;
+		serial0 = &uart0;
+		spi1 = &hsspi;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			compatible = "brcm,bmips3300", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <0>;
+		};
+	};
+
+	cpu_intc: interrupt-controller {
+		#address-cells = <0>;
+		compatible = "mti,cpu-interrupt-controller";
+
+		interrupt-controller;
+		#interrupt-cells = <1>;
+	};
+
+	memory { device_type = "memory"; reg = <0 0>; };
+
+	ubus@10000000 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		compatible = "simple-bus";
+		interrupt-parent = <&periph_intc>;
+
+		ext_intc: interrupt-controller@10000018 {
+			compatible = "brcm,bcm6318-ext-intc";
+			reg = <0x10000018 0x4>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+
+			interrupts = <24>, <25>, <26>, <27>;
+		};
+
+		periph_intc: interrupt-controller@10000020 {
+			compatible = "brcm,bcm6345-l1-intc";
+			reg = <0x10000020 0x20>;
+
+			interrupt-controller;
+			#interrupt-cells = <1>;
+
+			interrupt-parent = <&cpu_intc>;
+			interrupts = <2>;
+		};
+
+		pinctrl: pin-controller@10000080 {
+			compatible = "brcm,bcm6318-pinctrl";
+			reg = <0x10000080 0x08>,
+			      <0x10000088 0x08>,
+			      <0x10000098 0x04>,
+			      <0x1000009c 0x0c>,
+			      <0x100000d4 0x18>;
+			reg-names = "dirout", "dat", "mode", "mux", "pad";
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-parent = <&ext_intc>;
+			interrupts = <0 0>, <1 0>;
+			interrupt-names = "gpio33", "gpio34";
+
+			pinctrl_ephy0_spd_led: ephy0_spd_led {
+				function = "ephy0_spd_led";
+				pins = "gpio0";
+			};
+
+			pinctrl_ephy1_spd_led: ephy1_spd_led {
+				function = "ephy1_spd_led";
+				pins = "gpio1";
+			};
+
+			pinctrl_ephy2_spd_led: ephy2_spd_led {
+				function = "ephy2_spd_led";
+				pins = "gpio2";
+			};
+
+			pinctrl_ephy3_spd_led: ephy3_spd_led {
+				function = "ephy3_spd_led";
+				pins = "gpio3";
+			};
+
+			pinctrl_ephy0_act_led: ephy0_act_led {
+				function = "ephy0_act_led";
+				pins = "gpio4";
+			};
+
+			pinctrl_ephy1_act_led: ephy1_act_led {
+				function = "ephy1_act_led";
+				pins = "gpio5";
+			};
+
+			pinctrl_ephy2_act_led: ephy2_act_led {
+				function = "ephy2_act_led";
+				pins = "gpio6";
+			};
+
+			pinctrl_ephy3_act_led: ephy3_act_led {
+				function = "ephy3_act_led";
+				pins = "gpio7";
+			};
+
+			pinctrl_serial_led: serial_led {
+				pinctrl_serial_led_data: serial_led_data {
+					function = "serial_led_data";
+					pins = "gpio6";
+				};
+
+				pinctrl_serial_led_clk: serial_led_clk {
+					function = "serial_led_clk";
+					pins = "gpio7";
+				};
+			};
+
+			pinctrl_inet_act_led: inet_act_led {
+				function = "inet_act_led";
+				pins = "gpio8";
+			};
+
+			pinctrl_inet_fail_led: inet_fail_led {
+				function = "inet_fail_led";
+				pins = "gpio9";
+			};
+
+			pinctrl_dsl_led: dsl_led {
+				function = "dsl_led";
+				pins = "gpio10";
+			};
+
+			pinctrl_post_fail_led: post_fail_led {
+				function = "post_fail_led";
+				pins = "gpio11";
+			};
+
+			pinctrl_wlan_wps_led: wlan_wps_led {
+				function = "wlan_wps_led";
+				pins = "gpio12";
+			};
+
+			pinctrl_usb_pwron: usb_pwron {
+				function = "usb_pwron";
+				pins = "gpio13";
+			};
+
+			pinctrl_usb_device_led: usb_device_led {
+				function = "usb_device_led";
+				pins = "gpio13";
+			};
+
+			pinctrl_usb_active: usb_active {
+				function = "usb_active";
+				pins = "gpio40";
+			};
+		};
+
+		uart0: serial@10000100 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0x10000100 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <28>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		leds: led-controller@10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6328-leds";
+			reg = <0x10000200 0x24>;
+			status = "disabled";
+		};
+
+		hsspi: spi@10003000 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6328-hsspi";
+			reg = <0x10003000 0x600>;
+			interrupts = <29>;
+			/* clocks = <&clkctl 25>; */
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm63268-brcm-bcm963268bu-p300.dts b/target/linux/bcm63xx/dts/bcm63268-brcm-bcm963268bu-p300.dts
new file mode 100644
index 0000000..08959ed
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63268-brcm-bcm963268bu-p300.dts
@@ -0,0 +1,57 @@
+#include "bcm63268.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM963268BU_P300 reference board";
+	compatible = "brcm,bcm963268bu-p300", "brcm,bcm63268";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 32 0>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 33 0>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <20000000>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "brcm,bcm963xx-cfe-nor-partitions";
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm63268-inteno-vg50.dts b/target/linux/bcm63xx/dts/bcm63268-inteno-vg50.dts
new file mode 100644
index 0000000..fa9856f
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63268-inteno-vg50.dts
@@ -0,0 +1,57 @@
+#include "bcm63268.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Inteno VG50";
+	compatible = "inteno,vg50", "brcm,bcm63268";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 32 0>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 34 0>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <20000000>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "brcm,bcm963xx-cfe-nor-partitions";
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm63268.dtsi b/target/linux/bcm63xx/dts/bcm63268.dtsi
new file mode 100644
index 0000000..759e97e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63268.dtsi
@@ -0,0 +1,277 @@
+/dts-v1/;
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+	compatible = "brcm,bcm63268";
+
+	aliases {
+		nflash = &nflash;
+		pinctrl = &pinctrl;
+		serial0 = &uart0;
+		serial1 = &uart1;
+		spi0 = &lsspi;
+		spi1 = &hsspi;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			compatible = "brcm,bmips4350", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <0>;
+		};
+
+		cpu@1 {
+			compatible = "brcm,bmips4350", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <1>;
+		};
+	};
+
+	cpu_intc: interrupt-controller {
+		#address-cells = <0>;
+		compatible = "mti,cpu-interrupt-controller";
+
+		interrupt-controller;
+		#interrupt-cells = <1>;
+	};
+
+	memory { device_type = "memory"; reg = <0 0>; };
+
+	ubus@10000000 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		compatible = "simple-bus";
+		interrupt-parent = <&periph_intc>;
+
+		ext_intc: interrupt-controller@10000018 {
+			compatible = "brcm,bcm6345-ext-intc";
+			reg = <0x10000018 0x4>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+
+			interrupts = <44>, <45>, <46>, <47>;
+		};
+
+		periph_intc: interrupt-controller@10000020 {
+			compatible = "brcm,bcm6345-l1-intc";
+			reg = <0x10000020 0x20>,
+			      <0x10000040 0x20>;
+
+			interrupt-controller;
+			#interrupt-cells = <1>;
+
+			interrupt-parent = <&cpu_intc>;
+			interrupts = <2>, <3>;
+		};
+
+		pinctrl: pin-controller@100000c0 {
+			compatible = "brcm,bcm63268-pinctrl";
+			reg = <0x100000c0 0x8>,
+			      <0x100000c8 0x8>,
+			      <0x100000d0 0x4>,
+			      <0x100000d8 0x4>,
+			      <0x100000dc 0x4>,
+			      <0x100000f8 0x4>;
+			reg-names = "dirout", "dat", "led", "mode",
+				    "ctrl", "basemode";
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-parent = <&ext_intc>;
+			interrupts = <0 0>, <1 0>, <2 0>, <3 0>;
+			interrupt-names = "gpio32", "gpio33", "gpio34", "gpio35";
+
+			pinctrl_serial_led: serial_led {
+				pinctrl_serial_led_clk: serial_led_clk {
+					function = "serial_led_clk";
+					pins = "gpio0";
+				};
+
+				pinctrl_serial_led_data: serial_led_data {
+					function = "serial_led_data";
+					pins = "gpio1";
+				};
+			};
+
+			pinctrl_hsspi_cs4: hsspi_cs4 {
+				function = "hsspi_cs4";
+				pins = "gpio16";
+			};
+
+			pinctrl_hsspi_cs5: hsspi_cs5 {
+				function = "hsspi_cs5";
+				pins = "gpio17";
+			};
+
+			pinctrl_hsspi_cs6: hsspi_cs6 {
+				function = "hsspi_cs6";
+				pins = "gpio8";
+			};
+
+			pinctrl_hsspi_cs7: hsspi_cs7 {
+				function = "hsspi_cs7";
+				pins = "gpio9";
+			};
+
+			pinctrl_adsl_spi: adsl_spi {
+				pinctrl_adsl_spi_miso: adsl_spi_miso {
+					function = "adsl_spi_miso";
+					pins = "gpio18";
+				};
+
+				pinctrl_adsl_spi_mosi: adsl_spi_mosi {
+					function = "adsl_spi_mosi";
+					pins = "gpio19";
+				};
+			};
+
+			pinctrl_vreq_clk: vreq_clk {
+				function = "vreq_clk";
+				pins = "gpio22";
+			};
+
+			pinctrl_pcie_clkreq_b: pcie_clkreq_b {
+				function = "pcie_clkreq_b";
+				pins = "gpio23";
+			};
+
+			pinctrl_robosw_led_clk: robosw_led_clk {
+				function = "robosw_led_clk";
+				pins = "gpio30";
+			};
+
+			pinctrl_robosw_led_data: robosw_led_data {
+				function = "robosw_led_data";
+				pins = "gpio31";
+			};
+
+			pinctrl_nand: nand {
+				function = "nand";
+				group = "nand_grp";
+			};
+
+			pinctrl_gpio35_alt: gpio35_alt {
+				function = "gpio35_alt";
+				pin = "gpio35";
+			};
+
+			pinctrl_dectpd: dectpd {
+				function = "dectpd";
+				group = "dectpd_grp";
+			};
+
+			pinctrl_vdsl_phy_override_0: vdsl_phy_override_0 {
+				function = "vdsl_phy_override_0";
+				group = "vdsl_phy_override_0_grp";
+			};
+
+			pinctrl_vdsl_phy_override_1: vdsl_phy_override_1 {
+				function = "vdsl_phy_override_1";
+				group = "vdsl_phy_override_1_grp";
+			};
+
+			pinctrl_vdsl_phy_override_2: vdsl_phy_override_2 {
+				function = "vdsl_phy_override_2";
+				group = "vdsl_phy_override_2_grp";
+			};
+
+			pinctrl_vdsl_phy_override_3: vdsl_phy_override_3 {
+				function = "vdsl_phy_override_3";
+				group = "vdsl_phy_override_3_grp";
+			};
+
+			pinctrl_dsl_gpio8: dsl_gpio8 {
+				function = "dsl_gpio8";
+				group = "dsl_gpio8";
+			};
+
+			pinctrl_dsl_gpio9: dsl_gpio9 {
+				function = "dsl_gpio9";
+				group = "dsl_gpio9";
+			};
+		};
+
+		uart0: serial@10000180 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0x10000180 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <5>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		uart1: serial@100001a0 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0x100001a0 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <34>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		lsspi: spi@10000800 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6358-spi";
+			reg = <0x10000800 0x70c>;
+			interrupts = <80>;
+			/* clocks = <&clkctl 15>; */
+		};
+
+		hsspi: spi@10001000 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6328-hsspi";
+			reg = <0x10001000 0x600>;
+			interrupts = <6>;
+			/* clocks = <&clkctl 16>; */
+		};
+
+		nflash: nand@10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v4.0",
+				     "brcm,brcmnand";
+			reg = <0x10000200 0x180>,
+			      <0x10000600 0x200>,
+			      <0x100000b0 0x10>;
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <50>;
+
+			/* clocks = <&clkctl 20>; */
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&pinctrl_nand>;
+
+			status = "disabled";
+		};
+
+		leds: led-controller@10001900 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6328-leds";
+			reg = <0x10001900 0x24>;
+			status = "disabled";
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm63269-brcm-bcm963269bhr.dts b/target/linux/bcm63xx/dts/bcm63269-brcm-bcm963269bhr.dts
new file mode 100644
index 0000000..186c208
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63269-brcm-bcm963269bhr.dts
@@ -0,0 +1,64 @@
+#include "bcm63268.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM963269BHR reference board";
+	compatible = "brcm,bcm963269bhr", "brcm,bcm63269", "brcm,bcm63268";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 32 0>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		usb1 {
+			label = "green:usb1";
+			gpios = <&pinctrl 9 1>;
+		};
+
+		usb2 {
+			label = "green:usb2";
+			gpios = <&pinctrl 10 1>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <20000000>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "brcm,bcm963xx-cfe-nor-partitions";
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-adb-a4001n.dts b/target/linux/bcm63xx/dts/bcm6328-adb-a4001n.dts
new file mode 100644
index 0000000..641de68
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-adb-a4001n.dts
@@ -0,0 +1,106 @@
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "ADB P.DG A4001N";
+	compatible = "adb,a4001n", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 1 0>;
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 4 0>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 8 0>;
+			default-state = "on";
+		};
+		usb_green {
+			label = "green:usb";
+			gpios = <&pinctrl 10 1>;
+		};
+		dsl_green {
+			label = "green:dsl";
+			gpios = <&pinctrl 11 1>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			cfe@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			linux@10000 {
+				reg = <0x010000 0x7e0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+
+			nvram@7f0000 {
+				reg = <0x7f0000 0x010000>;
+				label = "nvram";
+			};
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-adb-a4001n1.dts b/target/linux/bcm63xx/dts/bcm6328-adb-a4001n1.dts
new file mode 100644
index 0000000..bd05547
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-adb-a4001n1.dts
@@ -0,0 +1,137 @@
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "ADB P.DG A4001N1";
+	compatible = "adb,a4001n1", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wlan";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 2 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 3 1>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 4 1>;
+			default-state = "on";
+		};
+		ppp_red {
+			label = "red:ppp";
+			gpios = <&pinctrl 5 1>;
+		};
+		usb_green {
+			label = "green:3g";
+			gpios = <&pinctrl 6 1>;
+		};
+		usb_red {
+			label = "red:3g";
+			gpios = <&pinctrl 7 1>;
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 8 1>;
+		};
+		wlan_green {
+			label = "green:wlan";
+			gpios = <&pinctrl 9 1>;
+		};
+		wlan_red {
+			label = "red:wlan";
+			gpios = <&pinctrl 10 1>;
+		};
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 11 1>;
+		};
+		eth_red {
+			label = "red:eth";
+			gpios = <&pinctrl 20 1>;
+		};
+		eth_green {
+			label = "green:eth";
+			gpios = <&pinctrl 31 1>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			cfe@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			linux@10000 {
+				reg = <0x010000 0xfe0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+
+			nvram@ff0000 {
+				reg = <0xff0000 0x010000>;
+				label = "nvram";
+			};
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-adb-pdg-a4001n-a-000-1a1-ax.dts b/target/linux/bcm63xx/dts/bcm6328-adb-pdg-a4001n-a-000-1a1-ax.dts
new file mode 100644
index 0000000..f42b970
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-adb-pdg-a4001n-a-000-1a1-ax.dts
@@ -0,0 +1,159 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "ADB P.DG A4001N A-000-1A1-AX";
+	compatible = "adb,pdg-a4001n-a-000-1a1-ax", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wifi-led";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds>;
+
+	led@2 {
+		reg = <2>;
+		active-low;
+		label = "red:internet";
+	};
+
+	led@3 {
+		reg = <3>;
+		active-low;
+		label = "green:adsl";
+	};
+
+	led@5 {
+		reg = <5>;
+		active-low;
+		label = "red:adsl";
+	};
+
+	led@6 {
+		reg = <6>;
+		active-low;
+		label = "green:service";
+	};
+
+	led@7 {
+		reg = <7>;
+		active-low;
+		label = "red:service";
+	};
+
+	led@8 {
+		reg = <8>;
+		active-low;
+		label = "red:power";
+	};
+
+	led@9 {
+		reg = <9>;
+		active-low;
+		label = "green:wifi";
+	};
+
+	led@10 {
+		reg = <10>;
+		active-low;
+		label = "red:wifi";
+	};
+
+	led@11 {
+		reg = <11>;
+		active-low;
+		label = "green:internet";
+	};
+
+	led_power_green: led@12 {
+		reg = <12>;
+		active-low;
+		label = "green:power";
+		default-state = "on";
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			partition@10000 {
+				reg = <0x010000 0xff0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio2", "gpio3",
+		       "gpio5", "gpio6",
+		       "gpio7", "gpio8",
+		       "gpio9", "gpio10",
+		       "gpio11", "gpio12";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-adb-pdg-a4101n-a-000-1a1-ae.dts b/target/linux/bcm63xx/dts/bcm6328-adb-pdg-a4101n-a-000-1a1-ae.dts
new file mode 100644
index 0000000..7ffff4e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-adb-pdg-a4101n-a-000-1a1-ae.dts
@@ -0,0 +1,141 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "ADB P.DG A4101N A-000-1A1-AE";
+	compatible = "adb,pdg-a4101n-a-000-1a1-ae", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_dsl_green;
+		led-failsafe = &led_dsl_green;
+		led-upgrade = &led_dsl_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wifi {
+			label = "wifi";
+			gpios = <&pinctrl 12 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led@31 {
+			label = "green:tel";
+			gpios = <&pinctrl 31 1>;
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds>;
+
+	led_dsl_green: led@3 {
+		reg = <3>;
+		active-low;
+		label = "green:dsl";
+	};
+
+	led@9 {
+		reg = <9>;
+		active-low;
+		label = "green:wps";
+	};
+
+	led@10 {
+		reg = <10>;
+		active-low;
+		label = "green:usb";
+	};
+
+	led@11 {
+		reg = <11>;
+		active-low;
+		label = "green:internet";
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			partition@10000 {
+				reg = <0x010000 0xff0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio3", "gpio9", "gpio10",
+		       "gpio11";
+	};
+
+	green_internet_switch {
+		gpio-hog;
+		gpios = <2 1>;
+		output-low;
+		line-name = "green:internet-switch";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-brcm-bcm963281tan.dts b/target/linux/bcm63xx/dts/bcm6328-brcm-bcm963281tan.dts
new file mode 100644
index 0000000..0d494ba
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-brcm-bcm963281tan.dts
@@ -0,0 +1,73 @@
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom bcm963281TAN reference board";
+	compatible = "brcm,bcm963281tan", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power;
+		led-failsafe = &led_power;
+		led-running = &led_power;
+		led-upgrade = &led_power;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		inet {
+			label = "internet";
+			gpios = <&pinctrl 1 1>;
+		};
+		led_power: power {
+			label = "power";
+			gpios = <&pinctrl 4 1>;
+			default-state = "on";
+		};
+		inet_fail {
+			label = "internet-fail";
+			gpios = <&pinctrl 7 1>;
+		};
+		power_fail {
+			label = "power-fail";
+			gpios = <&pinctrl 8 1>;
+		};
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 9 1>;
+		};
+		dsl {
+			label = "dsl";
+			gpios = <&pinctrl 11 1>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "brcm,bcm963xx-cfe-nor-partitions";
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-brcm-bcm96328avng.dts b/target/linux/bcm63xx/dts/bcm6328-brcm-bcm96328avng.dts
new file mode 100644
index 0000000..d047e3f
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-brcm-bcm96328avng.dts
@@ -0,0 +1,78 @@
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM96328avng reference board";
+	compatible = "brcm,bcm96328avng", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power;
+		led-failsafe = &led_power;
+		led-running = &led_power;
+		led-upgrade = &led_power;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		inet_fail {
+			label = "internet-fail";
+			gpios = <&pinctrl 2 1>;
+		};
+		dsl {
+			label = "dsl";
+			gpios = <&pinctrl 3 1>;
+		};
+		led_power: power {
+			label = "power";
+			gpios = <&pinctrl 4 1>;
+			default-state = "on";
+		};
+		power_fail {
+			label = "power-fail";
+			gpios = <&pinctrl 8 1>;
+		};
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 9 1>;
+		};
+		inet {
+			label = "internet";
+			gpios = <&pinctrl 11 1>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "brcm,bcm963xx-cfe-nor-partitions";
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usb_port1_device>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-comtrend-ar-5381u.dts b/target/linux/bcm63xx/dts/bcm6328-comtrend-ar-5381u.dts
new file mode 100644
index 0000000..5878e88
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-comtrend-ar-5381u.dts
@@ -0,0 +1,109 @@
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Comtrend AR-5381u";
+	compatible = "comtrend,ar-5381u", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_alarm_red;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			cfe@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			linux@10000 {
+				reg = <0x010000 0xfe0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+
+			nvram@ff0000 {
+				reg = <0xff0000 0x010000>;
+				label = "nvram";
+			};
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds>;
+
+	led_alarm_red: led@2 {
+		reg = <2>;
+		active-low;
+		label = "red:alarm";
+	};
+
+	led@3 {
+		reg = <3>;
+		active-low;
+		label = "green:inet";
+	};
+
+	led_power_green: led@4 {
+		reg = <4>;
+		active-low;
+		label = "green:power";
+		default-state = "on";
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio2", "gpio3", "gpio4";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-comtrend-ar-5387un.dts b/target/linux/bcm63xx/dts/bcm6328-comtrend-ar-5387un.dts
new file mode 100644
index 0000000..a703fd6
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-comtrend-ar-5387un.dts
@@ -0,0 +1,118 @@
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Comtrend AR-5387un";
+	compatible = "comtrend,ar-5387un", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			cfe@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			linux@10000 {
+				reg = <0x010000 0xfe0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+
+			nvram@ff0000 {
+				reg = <0xff0000 0x010000>;
+				label = "nvram";
+			};
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds>;
+
+	led@1 {
+		reg = <1>;
+		label = "red:inet";
+	};
+
+	led@4 {
+		reg = <4>;
+		label = "red:power";
+	};
+
+	led@7 {
+		reg = <7>;
+		label = "green:inet";
+	};
+
+	led_power_green: led@8 {
+		reg = <8>;
+		label = "green:power";
+		default-state = "on";
+	};
+
+	led@11 {
+		reg = <11>;
+		active-low;
+		label = "green:dsl";
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio1", "gpio4", "gpio7",
+		       "gpio8", "gpio11";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-d-link-dsl-274xb-f1.dts b/target/linux/bcm63xx/dts/bcm6328-d-link-dsl-274xb-f1.dts
new file mode 100644
index 0000000..660a4d5
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-d-link-dsl-274xb-f1.dts
@@ -0,0 +1,126 @@
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "D-Link DSL-2740B/DSL-2741B rev F1";
+	compatible = "d-link,dsl-274xb-f1", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wifi {
+			label = "wifi";
+			gpios = <&pinctrl 10 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		inet_red {
+			label = "red:internet";
+			gpios = <&pinctrl 2 1>;
+		};
+		dsl_green {
+			label = "green:dsl";
+			gpios = <&pinctrl 3 1>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 4 1>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 8 1>;
+		};
+		wps_blue {
+			label = "blue:wps";
+			gpios = <&pinctrl 9 1>;
+		};
+		inet_green {
+			label = "green:internet";
+			gpios = <&pinctrl 11 1>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			cfe@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			linux@10000 {
+				reg = <0x010000 0x7c0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+
+			cal_data@7d0000 {
+				reg = <0x7d0000 0x010000>;
+				label = "cal_data";
+				read-only;
+			};
+
+			nvram@7e0000 {
+				reg = <0x7e0000 0x020000>;
+				label = "nvram";
+			};
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-d-link-dsl-2750u-c1.dts b/target/linux/bcm63xx/dts/bcm6328-d-link-dsl-2750u-c1.dts
new file mode 100644
index 0000000..0915215
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-d-link-dsl-2750u-c1.dts
@@ -0,0 +1,146 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "D-Link DSL-2750U rev C1";
+	compatible = "d-link,dsl-2750u-c1", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		poll-interval = <20>;
+
+		wifi {
+			label = "wifi";
+			gpios = <&pinctrl 12 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			cfe@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			linux@10000 {
+				reg = <0x010000 0x7e0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+
+			nvram@7f0000 {
+				reg = <0x7f0000 0x010000>;
+				label = "nvram";
+			};
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds>;
+
+	led@1 {
+		reg = <1>;
+		active-low;
+		label = "green:inet";
+	};
+
+	led_power_green: led@4 {
+		reg = <4>;
+		active-low;
+		label = "green:power";
+		default-state = "on";
+	};
+
+	led@7 {
+		reg = <7>;
+		active-low;
+		label = "red:inet";
+	};
+
+	led@8 {
+		reg = <8>;
+		active-low;
+		label = "red:power";
+	};
+
+	led@9 {
+		reg = <9>;
+		active-low;
+		label = "green:wps";
+	};
+
+	led@10 {
+		reg = <10>;
+		active-low;
+		label = "green:usb";
+	};
+
+	led@11 {
+		reg = <11>;
+		active-low;
+		label = "green:dsl";
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio1", "gpio4", "gpio7",
+		       "gpio8", "gpio9", "gpio10",
+		       "gpio11";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-innacomm-w3400v6.dts b/target/linux/bcm63xx/dts/bcm6328-innacomm-w3400v6.dts
new file mode 100644
index 0000000..dd8ab12
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-innacomm-w3400v6.dts
@@ -0,0 +1,118 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Innacomm W3400V6";
+	compatible = "innacomm,w3400v6", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_red;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 15 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "brcm,bcm963xx-cfe-nor-partitions";
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds>;
+
+	led@1 {
+		reg = <1>;
+		active-low;
+		label = "green:inet";
+	};
+
+	led@2 {
+		reg = <2>;
+		active-low;
+		label = "red:inet";
+	};
+
+	led@3 {
+		reg = <3>;
+		active-low;
+		label = "green:dsl";
+	};
+
+	led_power_green: led@4 {
+		reg = <4>;
+		active-low;
+		label = "green:power";
+		default-state = "on";
+	};
+
+	led_power_red: led@5 {
+		reg = <5>;
+		active-low;
+		label = "red:power";
+	};
+
+	led@11 {
+		reg = <11>;
+		active-low;
+		label = "green:wps";
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio1", "gpio2", "gpio3",
+		       "gpio4", "gpio5", "gpio11";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-nucom-r5010un-v2.dts b/target/linux/bcm63xx/dts/bcm6328-nucom-r5010un-v2.dts
new file mode 100644
index 0000000..08f3736
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-nucom-r5010un-v2.dts
@@ -0,0 +1,117 @@
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "NuCom R5010UN v2";
+	compatible = "nucom,r5010un-v2", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 1 1>;
+		};
+		inet_fail_red {
+			label = "red:inet-fail";
+			gpios = <&pinctrl 2 1>;
+		};
+		dsl_red {
+			label = "green:dsl";
+			gpios = <&pinctrl 3 1>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 4 1>;
+			default-state = "on";
+		};
+		power_fail_red {
+			label = "red:power-fail";
+			gpios = <&pinctrl 5 1>;
+		};
+		wps_green {
+			label = "green:wps";
+			gpios = <&pinctrl 10 1>;
+		};
+		usb_green {
+			label = "green:usb";
+			gpios = <&pinctrl 11 1>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			partition@10000 {
+				reg = <0x010000 0xfe0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+
+			partition@ff0000 {
+				reg = <0xff0000 0x010000>;
+				label = "nvram";
+			};
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-sagem-fast-2704-v2.dts b/target/linux/bcm63xx/dts/bcm6328-sagem-fast-2704-v2.dts
new file mode 100644
index 0000000..ff9b230
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-sagem-fast-2704-v2.dts
@@ -0,0 +1,124 @@
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Sagem F@st 2704 V2";
+	compatible = "sagem,fast-2704-v2", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		rfkill {
+			label = "rfkill";
+			gpios = <&pinctrl 15 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		usb_green {
+			label = "green:usb";
+			gpios = <&pinctrl 1 1>;
+		};
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 2 1>;
+		};
+		dsl_green {
+			label = "green:dsl";
+			gpios = <&pinctrl 3 1>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 4 1>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 5 1>;
+		};
+		wps_green {
+			label = "green:wps";
+			gpios = <&pinctrl 10 1>;
+		};
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 11 1>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			cfe@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			linux@10000 {
+				reg = <0x010000 0x7e0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+
+			nvram@7f0000 {
+				reg = <0x7f0000 0x010000>;
+				label = "nvram";
+			};
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-sercomm-ad1018-nor.dts b/target/linux/bcm63xx/dts/bcm6328-sercomm-ad1018-nor.dts
new file mode 100644
index 0000000..5a9f526
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-sercomm-ad1018-nor.dts
@@ -0,0 +1,175 @@
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Sercomm AD1018 (SPI flash mod)";
+	compatible = "sercomm,ad1018-nor", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+
+		wifi {
+			label = "wifi";
+			gpios = <&pinctrl 25 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 31 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio0", "gpio1";
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds &pinctrl_serial_led
+		     &pinctrl_ephy0_spd_led &pinctrl_ephy1_act_led
+		     &pinctrl_ephy2_act_led &pinctrl_ephy3_act_led>;
+
+	brcm,serial-leds;
+	brcm,serial-shift-inv;
+	brcm,serial-dat-low;
+
+	inet_red@0 {
+		reg = <0>;
+		active-low;
+		label = "red:internet";
+	};
+
+	inet_green@1 {
+		reg = <1>;
+		active-low;
+		label = "green:internet";
+	};
+
+	led_power_green: power_green@8 {
+		reg = <8>;
+		active-low;
+		label = "green:power";
+		default-state = "on";
+	};
+
+	adsl_green@10 {
+		reg = <10>;
+		active-low;
+		label = "green:adsl";
+	};
+
+	adsl_red@11 {
+		reg = <11>;
+		active-low;
+		label = "red:adsl";
+	};
+
+	phone_green@12 {
+		reg = <12>;
+		active-low;
+		label = "green:phone";
+	};
+
+	wps_green@13 {
+		reg = <13>;
+		active-low;
+		label = "green:wps";
+	};
+
+	wifi_green@14 {
+		reg = <14>;
+		active-low;
+		label = "green:wifi";
+	};
+
+	usb_green@15 {
+		reg = <15>;
+		active-low;
+		label = "green:usb";
+	};
+
+	ephy0_spd@17 {
+		reg = <17>;
+		brcm,hardware-controlled;
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "brcm,bcm963xx-cfe-nor-partitions";
+		};
+	};
+};
+
+&nflash {
+	status = "okay";
+
+	nandcs@0 {
+		compatible = "brcm,nandcs";
+		reg = <0>;
+		nand-ecc-step-size = <512>;
+		nand-ecc-strength = <15>;
+		nand-on-flash-bbt;
+		brcm,nand-oob-sector-size = <64>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "storage";
+				reg = <0 0>; /* autodetected size */
+			};
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-sercomm-ad1018.dts b/target/linux/bcm63xx/dts/bcm6328-sercomm-ad1018.dts
new file mode 100644
index 0000000..edb1ce4
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-sercomm-ad1018.dts
@@ -0,0 +1,220 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Sercomm AD1018";
+	compatible = "sercomm,ad1018", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+
+		wifi {
+			label = "wifi";
+			gpios = <&pinctrl 25 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 31 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds &pinctrl_serial_led
+		     &pinctrl_ephy0_spd_led &pinctrl_ephy1_act_led
+		     &pinctrl_ephy2_act_led &pinctrl_ephy3_act_led>;
+
+	brcm,serial-leds;
+	brcm,serial-shift-inv;
+	brcm,serial-dat-low;
+
+	led@0 {
+		reg = <0>;
+		active-low;
+		label = "red:internet";
+	};
+
+	led@1 {
+		reg = <1>;
+		active-low;
+		label = "green:internet";
+	};
+
+	led_power_green: led@8 {
+		reg = <8>;
+		active-low;
+		label = "green:power";
+		default-state = "on";
+	};
+
+	led@10 {
+		reg = <10>;
+		active-low;
+		label = "green:adsl";
+	};
+
+	led@11 {
+		reg = <11>;
+		active-low;
+		label = "red:adsl";
+	};
+
+	led@12 {
+		reg = <12>;
+		active-low;
+		label = "green:phone";
+	};
+
+	led@13 {
+		reg = <13>;
+		active-low;
+		label = "green:wps";
+	};
+
+	led@14 {
+		reg = <14>;
+		active-low;
+		label = "green:wifi";
+	};
+
+	led@15 {
+		reg = <15>;
+		active-low;
+		label = "green:usb";
+	};
+
+	led@17 {
+		/* EPHY0 Spd */
+		reg = <17>;
+		brcm,hardware-controlled;
+	};
+};
+
+&nflash {
+	status = "okay";
+
+	nandcs@0 {
+		compatible = "brcm,nandcs";
+		#size-cells = <1>;
+		#address-cells = <1>;
+		reg = <0>;
+		nand-ecc-step-size = <512>;
+		nand-ecc-strength = <15>;
+		nand-on-flash-bbt;
+		brcm,nand-oob-sector-size = <64>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "cferom";
+				reg = <0x0000000 0x0020000>;
+				read-only;
+			};
+
+			partition@20000 {
+				label = "mmap";
+				reg = <0x0020000 0x00a0000>;
+				read-only;
+			};
+
+			partition@c0000 {
+				label = "cferam1";
+				reg = <0x00c0000 0x0140000>;
+				read-only;
+			};
+
+			partition@200000 {
+				label = "cferam2";
+				reg = <0x0200000 0x0140000>;
+				read-only;
+			};
+
+			partition@340000 {
+				label = "serial";
+				reg = <0x0340000 0x00a0000>;
+				read-only;
+			};
+
+			partition@3e0000 {
+				label = "protect";
+				reg = <0x03e0000 0x0140000>;
+				read-only;
+			};
+
+			partition@6920000 {
+				label = "bootflag1";
+				reg = <0x6920000 0x0140000>;
+			};
+
+			partition@6a60000 {
+				label = "bootflag2";
+				reg = <0x6a60000 0x0140000>;
+			};
+
+			partition@520000 {
+				compatible = "sercomm,wfi";
+				label = "wfi";
+				reg = <0x0520000 0x6400000>;
+			};
+
+			partition@6ba0000 {
+				label = "xml_cfg";
+				reg = <0x6ba0000 0x0280000>;
+				read-only;
+			};
+
+			partition@6e20000 {
+				label = "app_dat";
+				reg = <0x6e20000 0x0280000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio0", "gpio1";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-technicolor-tg582n-telecom-italia.dts b/target/linux/bcm63xx/dts/bcm6328-technicolor-tg582n-telecom-italia.dts
new file mode 100644
index 0000000..0dfa38e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-technicolor-tg582n-telecom-italia.dts
@@ -0,0 +1,153 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Technicolor TG582n Telecom Italia";
+	compatible = "technicolor,tg582n-telecom-italia", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds>;
+
+	led@1 {
+		reg = <1>;
+		active-low;
+		label = "green:wifi";
+	};
+
+	led_power_green: led@4 {
+		reg = <4>;
+		active-low;
+		label = "green:power";
+		default-state = "on";
+	};
+
+	led@5 {
+		reg = <5>;
+		active-low;
+		label = "green:adsl";
+	};
+
+	led@7 {
+		reg = <7>;
+		active-low;
+		label = "red:wifi";
+	};
+
+	led@8 {
+		reg = <8>;
+		active-low;
+		label = "red:power";
+	};
+
+	led@11 {
+		reg = <11>;
+		active-low;
+		label = "green:internet";
+	};
+
+	led@14 {
+		reg = <14>;
+		active-low;
+		label = "red:internet";
+	};
+
+	led@18 {
+		reg = <18>;
+		active-low;
+		label = "red:service";
+	};
+
+	led@19 {
+		reg = <19>;
+		active-low;
+		label = "green:service";
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			partition@10000 {
+				reg = <0x010000 0xff0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio1", "gpio4",
+		       "gpio5", "gpio7",
+		       "gpio8", "gpio11",
+		       "gpio14", "gpio18",
+		       "gpio19";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328-technicolor-tg582n.dts b/target/linux/bcm63xx/dts/bcm6328-technicolor-tg582n.dts
new file mode 100644
index 0000000..6ec2004
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-technicolor-tg582n.dts
@@ -0,0 +1,166 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Technicolor TG582n";
+	compatible = "technicolor,tg582n", "brcm,bcm6328";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wifi {
+			label = "wifi";
+			gpios = <&pinctrl 15 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds>;
+
+	led@1 {
+		reg = <1>;
+		active-low;
+		label = "green:internet";
+	};
+
+	led@2 {
+		reg = <2>;
+		active-low;
+		label = "red:wifi";
+	};
+
+	led@3 {
+		reg = <3>;
+		active-low;
+		label = "green:wifi";
+	};
+
+	led_power_green: led@4 {
+		reg = <4>;
+		active-low;
+		label = "green:power";
+		default-state = "on";
+	};
+
+	led@5 {
+		reg = <5>;
+		active-low;
+		label = "green:ethernet";
+	};
+
+	led@7 {
+		reg = <7>;
+		active-low;
+		label = "red:internet";
+	};
+
+	led@8 {
+		reg = <8>;
+		active-low;
+		label = "red:power";
+	};
+
+	led@9 {
+		reg = <9>;
+		active-low;
+		label = "green:wps";
+	};
+
+	led@10 {
+		reg = <10>;
+		active-low;
+		label = "red:wps";
+	};
+
+	led@11 {
+		reg = <11>;
+		active-low;
+		label = "green:broadband";
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <16666667>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			partition@10000 {
+				reg = <0x010000 0xff0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio1", "gpio2",
+		       "gpio3", "gpio4",
+		       "gpio5", "gpio7",
+		       "gpio8", "gpio9",
+		       "gpio10", "gpio11";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328.dtsi b/target/linux/bcm63xx/dts/bcm6328.dtsi
new file mode 100644
index 0000000..9b7e078
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328.dtsi
@@ -0,0 +1,221 @@
+/dts-v1/;
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+	compatible = "brcm,bcm6328";
+
+	aliases {
+		nflash = &nflash;
+		pinctrl = &pinctrl;
+		serial0 = &uart0;
+		serial1 = &uart1;
+		spi1 = &hsspi;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			compatible = "brcm,bmips4350", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <0>;
+		};
+	};
+
+	cpu_intc: interrupt-controller {
+		#address-cells = <0>;
+		compatible = "mti,cpu-interrupt-controller";
+
+		interrupt-controller;
+		#interrupt-cells = <1>;
+	};
+
+	memory { device_type = "memory"; reg = <0 0>; };
+
+	ubus@10000000 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		compatible = "simple-bus";
+		interrupt-parent = <&periph_intc>;
+
+		ext_intc: interrupt-controller@10000018 {
+			compatible = "brcm,bcm6345-ext-intc";
+			reg = <0x10000018 0x4>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+
+			interrupts = <24>, <25>, <26>, <27>;
+		};
+
+		periph_intc: interrupt-controller@10000020 {
+			compatible = "brcm,bcm6345-l1-intc";
+			reg = <0x10000020 0x10>;
+
+			interrupt-controller;
+			#interrupt-cells = <1>;
+
+			interrupt-parent = <&cpu_intc>;
+			interrupts = <2>;
+		};
+
+		pinctrl: pin-controller@10000080 {
+			compatible = "brcm,bcm6328-pinctrl";
+			reg = <0x10000080 0x8>,
+			      <0x10000088 0x8>,
+			      <0x10000098 0x4>,
+			      <0x1000009c 0xc>;
+			reg-names = "dirout", "dat", "mode", "mux";
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-parent = <&ext_intc>;
+			interrupts = <3 0>, <2 0>, <0 0>, <1 0>;
+			interrupt-names = "gpio12", "gpio15",
+					  "gpio23", "gpio24";
+
+			pinctrl_serial_led: serial_led {
+				pinctrl_serial_led_data: serial_led_data {
+					function = "serial_led_data";
+					pins = "gpio6";
+				};
+
+				pinctrl_serial_led_clk: serial_led_clk {
+					function = "serial_led_clk";
+					pins = "gpio7";
+				};
+			};
+
+			pinctrl_inet_act_led: inet_act_led {
+				function = "inet_act_led";
+				pins = "gpio11";
+			};
+
+			pinctrl_pcie_clkreq: pcie_clkreq {
+				function = "pcie_clkreq";
+				pins = "gpio16";
+			};
+
+			pinctrl_ephy0_spd_led: ephy0_spd_led {
+				function = "led";
+				pins = "gpio17";
+			};
+
+			pinctrl_ephy1_spd_led: ephy1_spd_led {
+				function = "led";
+				pins = "gpio18";
+			};
+
+			pinctrl_ephy2_spd_led: ephy2_spd_led {
+				function = "led";
+				pins = "gpio19";
+			};
+
+			pinctrl_ephy3_spd_led: ephy3_spd_led {
+				function = "led";
+				pins = "gpio20";
+			};
+
+			pinctrl_ephy0_act_led: ephy0_act_led {
+				function = "ephy0_act_led";
+				pins = "gpio25";
+			};
+
+			pinctrl_ephy1_act_led: ephy1_act_led {
+				function = "ephy1_act_led";
+				pins = "gpio26";
+			};
+
+			pinctrl_ephy2_act_led: ephy2_act_led {
+				function = "ephy2_act_led";
+				pins = "gpio27";
+			};
+
+			pinctrl_ephy3_act_led: ephy3_act_led {
+				function = "ephy3_act_led";
+				pins = "gpio28";
+			};
+
+			pinctrl_hsspi_cs1: hsspi_cs1 {
+				function = "hsspi_cs1";
+				pins = "hsspi_cs1";
+			};
+
+			pinctrl_usb_port1_device: usb_port1_device {
+				function = "usb_device_port";
+				pins = "usb_port1";
+			};
+
+			pinctrl_usb_port1_host: usb_port1_host {
+				function = "usb_host_port";
+				pins = "usb_port1";
+			};
+		};
+
+		uart0: serial@10000100 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0x10000100 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <28>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		uart1: serial@10000120 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0x10000120 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <39>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		nflash: nand@10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v2.2",
+				     "brcm,brcmnand";
+			reg = <0x10000200 0x180>,
+			      <0x10000400 0x200>,
+			      <0x10000070 0x10>;
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <0>;
+
+			status = "disabled";
+		};
+
+		leds: led-controller@10000800 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6328-leds";
+			reg = <0x10000800 0x24>;
+			status = "disabled";
+		};
+
+		hsspi: spi@10001000 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6328-hsspi";
+			reg = <0x10001000 0x600>;
+			interrupts = <29>;
+			/* clocks = <&clkctl 9>; */
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6338-brcm-bcm96338gw.dts b/target/linux/bcm63xx/dts/bcm6338-brcm-bcm96338gw.dts
new file mode 100644
index 0000000..885654a
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6338-brcm-bcm96338gw.dts
@@ -0,0 +1,51 @@
+#include "bcm6338.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM96338GW reference board";
+	compatible = "brcm,bcm96338gw", "brcm,bcm6338";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&gpio0 0 1>;
+			default-state = "on";
+		};
+		stop_green {
+			label = "green:stop";
+			gpios = <&gpio0 1 1>;
+		};
+		dsl_green {
+			label = "green:adsl";
+			gpios = <&gpio0 3 1>;
+		};
+		ppp_fail_green {
+			label = "green:ppp-fail";
+			gpios = <&gpio0 4 1>;
+		};
+		ses_green {
+			label = "green:ses";
+			gpios = <&gpio0 5 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "brcm,bcm963xx-cfe-nor-partitions";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6338-brcm-bcm96338w.dts b/target/linux/bcm63xx/dts/bcm6338-brcm-bcm96338w.dts
new file mode 100644
index 0000000..3002a92
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6338-brcm-bcm96338w.dts
@@ -0,0 +1,51 @@
+#include "bcm6338.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM96338W reference board";
+	compatible = "brcm,bcm96338w", "brcm,bcm6338";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&gpio0 0 1>;
+			default-state = "on";
+		};
+		stop_green {
+			label = "green:stop";
+			gpios = <&gpio0 1 1>;
+		};
+		dsl_green {
+			label = "green:adsl";
+			gpios = <&gpio0 3 1>;
+		};
+		ppp_fail_green {
+			label = "green:ppp-fail";
+			gpios = <&gpio0 4 1>;
+		};
+		ses_green {
+			label = "green:ses";
+			gpios = <&gpio0 5 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "brcm,bcm963xx-cfe-nor-partitions";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6338-d-link-dsl-2640u.dts b/target/linux/bcm63xx/dts/bcm6338-d-link-dsl-2640u.dts
new file mode 100644
index 0000000..dae5324
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6338-d-link-dsl-2640u.dts
@@ -0,0 +1,64 @@
+#include "bcm6338.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "D-Link DSL-2640U/BRU/C";
+	compatible = "d-link,dsl-2640u", "brcm,bcm6338";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		green_power {
+			label = "green:power";
+			gpios = <&gpio0 0 1>;
+			default-state = "on";
+		};
+
+		green_stop {
+			label = "green:ppp";
+			gpios = <&gpio0 4 1>;
+		};
+
+		green_adsl {
+			label = "green:ppp-fail";
+			gpios = <&gpio0 5 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6338-dynalink-rta1320.dts b/target/linux/bcm63xx/dts/bcm6338-dynalink-rta1320.dts
new file mode 100644
index 0000000..7d3f4a5
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6338-dynalink-rta1320.dts
@@ -0,0 +1,66 @@
+#include "bcm6338.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Dynalink RTA1320";
+	compatible = "dynalink,rta1320", "brcm,bcm6338";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		green_power {
+			label = "green:power";
+			gpios = <&gpio0 0 1>;
+			default-state = "on";
+		};
+		green_stop {
+			label = "green:stop";
+			gpios = <&gpio0 1 1>;
+		};
+		green_adsl {
+			label = "green:adsl";
+			gpios = <&gpio0 3 1>;
+		};
+		green_ppp {
+			label = "green:ppp";
+			gpios = <&gpio0 4 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6338.dtsi b/target/linux/bcm63xx/dts/bcm6338.dtsi
new file mode 100644
index 0000000..fc8b2df
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6338.dtsi
@@ -0,0 +1,107 @@
+/dts-v1/;
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+	compatible = "brcm,bcm6338";
+
+	aliases {
+		pflash = &pflash;
+		gpio0 = &gpio0;
+		serial0 = &uart0;
+		spi0 = &lsspi;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			compatible = "brcm,bmips3300", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <0>;
+		};
+	};
+
+	cpu_intc: interrupt-controller {
+		#address-cells = <0>;
+		compatible = "mti,cpu-interrupt-controller";
+
+		interrupt-controller;
+		#interrupt-cells = <1>;
+	};
+
+	memory { device_type = "memory"; reg = <0 0>; };
+
+	pflash: nor@1fc00000 {
+		compatible = "cfi-flash";
+		reg = <0x1fc00000 0x400000>;
+		bank-width = <2>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		status = "disabled";
+	};
+
+	ubus@fff00000 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		compatible = "simple-bus";
+		interrupt-parent = <&periph_intc>;
+
+		periph_intc: interrupt-controller@fffe000c {
+			compatible = "brcm,bcm6345-l1-intc";
+			reg = <0xfffe000c 0x8>;
+
+			interrupt-controller;
+			#interrupt-cells = <1>;
+
+			interrupt-parent = <&cpu_intc>;
+			interrupts = <2>;
+		};
+
+		ext_intc: interrupt-controller@fffe0014 {
+			compatible = "brcm,bcm6345-ext-intc";
+			reg = <0xfffe0014 0x4>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+
+			interrupt-parent = <&cpu_intc>;
+			interrupts = <3>, <4>, <5>, <6>;
+		};
+
+		gpio0: gpio-controller@fffe0404 {
+			compatible = "brcm,bcm6345-gpio";
+			reg = <0xfffe0404 4>, <0xfffe040c 4>;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			ngpios = <8>;
+		};
+
+		uart0: serial@fffe0300 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0xfffe0300 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <2>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		lsspi: spi@fffe0c00 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6348-spi";
+			reg = <0xfffe0c00 0x40>;
+			interrupts = <1>;
+			/* clocks = <&clkctl 9>; */
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6345-brcm-bcm96345gw2.dts b/target/linux/bcm63xx/dts/bcm6345-brcm-bcm96345gw2.dts
new file mode 100644
index 0000000..5157719
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6345-brcm-bcm96345gw2.dts
@@ -0,0 +1,25 @@
+#include "bcm6345.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM96345GW2 reference board";
+	compatible = "brcm,bcm96345gw2", "brcm,bcm6345";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "brcm,bcm963xx-cfe-nor-partitions";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6345-dynalink-rta770bw.dts b/target/linux/bcm63xx/dts/bcm6345-dynalink-rta770bw.dts
new file mode 100644
index 0000000..e5b6729
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6345-dynalink-rta770bw.dts
@@ -0,0 +1,89 @@
+#include "bcm6345.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Siemens Gigaset SE515";
+	compatible = "dynalink,rta770bw", "brcm,bcm6345";
+
+	aliases {
+		led-boot = &led_diag;
+		led-failsafe = &led_diag;
+		led-running = &led_diag;
+		led-upgrade = &led_diag;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&gpio0 13 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		usb {
+			label = "green:usb";
+			gpios = <&gpio0 7 1>;
+		};
+
+		adsl {
+			label = "green:adsl";
+			gpios = <&gpio0 8 0>;
+		};
+
+		led_diag: diag {
+			label = "green:diag";
+			gpios = <&gpio0 10 1>;
+		};
+
+		wlan {
+			label = "green:wlan";
+			gpios = <&gpio0 11 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6345-dynalink-rta770w.dts b/target/linux/bcm63xx/dts/bcm6345-dynalink-rta770w.dts
new file mode 100644
index 0000000..65fb1d7
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6345-dynalink-rta770w.dts
@@ -0,0 +1,89 @@
+#include "bcm6345.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Dynalink RTA770W";
+	compatible = "dynalink,rta770w", "brcm,bcm6345";
+
+	aliases {
+		led-boot = &led_diag;
+		led-failsafe = &led_diag;
+		led-running = &led_diag;
+		led-upgrade = &led_diag;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&gpio0 13 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		usb {
+			label = "green:usb";
+			gpios = <&gpio0 7 1>;
+		};
+
+		adsl {
+			label = "green:adsl";
+			gpios = <&gpio0 8 0>;
+		};
+
+		led_diag: diag {
+			label = "green:diag";
+			gpios = <&gpio0 10 1>;
+		};
+
+		wlan {
+			label = "green:wlan";
+			gpios = <&gpio0 11 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6345.dtsi b/target/linux/bcm63xx/dts/bcm6345.dtsi
new file mode 100644
index 0000000..095af83
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6345.dtsi
@@ -0,0 +1,96 @@
+/dts-v1/;
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+	compatible = "brcm,bcm6345";
+
+	aliases {
+		pflash = &pflash;
+		serial0 = &uart0;
+		gpio0 = &gpio0;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			compatible = "brcm,bmips32", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <0>;
+		};
+	};
+
+	cpu_intc: interrupt-controller {
+		#address-cells = <0>;
+		compatible = "mti,cpu-interrupt-controller";
+
+		interrupt-controller;
+		#interrupt-cells = <1>;
+	};
+
+	memory { device_type = "memory"; reg = <0 0>; };
+
+	pflash: nor@1fc00000 {
+		compatible = "cfi-flash";
+		reg = <0x1fc00000 0x400000>;
+		bank-width = <2>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		status = "disabled";
+	};
+
+	ubus@fff00000 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		compatible = "simple-bus";
+
+		periph_intc: interrupt-controller@fffe000c {
+			compatible = "brcm,bcm6345-l1-intc";
+			reg = <0xfffe000c 0x9>;
+
+			interrupt-controller;
+			#interrupt-cells = <1>;
+
+			interrupt-parent = <&cpu_intc>;
+			interrupts = <2>;
+		};
+
+		ext_intc: interrupt-controller@fffe0014 {
+			compatible = "brcm,bcm6345-ext-intc";
+			reg = <0xfffe0014 0x4>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+
+			interrupt-parent = <&cpu_intc>;
+			interrupts = <3>, <4>, <5>, <6>;
+		};
+
+		uart0: serial@fffe0300 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0xfffe0300 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <2>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		gpio0: gpio-controller@fffe0404 {
+			compatible = "brcm,bcm6345-gpio";
+			reg = <0xfffe0404 4>, <0xfffe0408 4>;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			ngpios = <16>;
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-asmax-ar-1004g.dts b/target/linux/bcm63xx/dts/bcm6348-asmax-ar-1004g.dts
new file mode 100644
index 0000000..6ffa3b4
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-asmax-ar-1004g.dts
@@ -0,0 +1,88 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "ASMAX AR 1004g";
+	compatible = "asmax,ar-1004g", "brcm,bcm6348";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 3 1>;
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 6 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_ext_mii &pinctrl_pci>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-belkin-f5d7633.dts b/target/linux/bcm63xx/dts/bcm6348-belkin-f5d7633.dts
new file mode 100644
index 0000000..620d651
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-belkin-f5d7633.dts
@@ -0,0 +1,89 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Belkin F5D7633";
+	compatible = "belkin,f5d7633", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 6 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		stop_green {
+			label = "green:stop";
+			gpios = <&pinctrl 1 1>;
+		};
+		adsl_fail_green {
+			label = "green:adsl-fail";
+			gpios = <&pinctrl 2 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 3 1>;
+		};
+		ppp_fail_green {
+			label = "green:ppp-fail";
+			gpios = <&pinctrl 4 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x020000>;
+			read-only;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x020000 0x3c0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3e0000 {
+			label = "nvram";
+			reg = <0x3e0000 0x020000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii &pinctrl_mii_pccard>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw-10.dts b/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw-10.dts
new file mode 100644
index 0000000..8e19d7a
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw-10.dts
@@ -0,0 +1,70 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM96348GW-10 reference board";
+	compatible = "brcm,bcm96348gw-10", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 6 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		stop_green {
+			label = "green:stop";
+			gpios = <&pinctrl 1 1>;
+		};
+		adsl_fail_green {
+			label = "green:adsl-fail";
+			gpios = <&pinctrl 2 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 3 1>;
+		};
+		ppp_fail_green {
+			label = "green:ppp-fail";
+			gpios = <&pinctrl 4 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "brcm,bcm963xx-cfe-nor-partitions";
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii &pinctrl_mii_pccard>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw-11.dts b/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw-11.dts
new file mode 100644
index 0000000..cf983b4
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw-11.dts
@@ -0,0 +1,77 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM96348GW-11 reference board";
+	compatible = "brcm,bcm96348gw-11", "brcm,bcm6348";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		stop_green {
+			label = "green:stop";
+			gpios = <&pinctrl 1 1>;
+		};
+		adsl_fail_green {
+			label = "green:adsl-fail";
+			gpios = <&pinctrl 2 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 3 1>;
+		};
+		ppp_fail_green {
+			label = "green:ppp-fail";
+			gpios = <&pinctrl 4 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "brcm,bcm963xx-cfe-nor-partitions";
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii &pinctrl_mii_pccard>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw.dts b/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw.dts
new file mode 100644
index 0000000..9eeb506
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw.dts
@@ -0,0 +1,77 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM96348GW reference board";
+	compatible = "brcm,bcm96348gw", "brcm,bcm6348";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 36 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		stop_green {
+			label = "green:stop";
+			gpios = <&pinctrl 1 1>;
+		};
+		adsl_fail_green {
+			label = "green:adsl-fail";
+			gpios = <&pinctrl 2 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 3 1>;
+		};
+		ppp_fail_green {
+			label = "green:ppp-fail";
+			gpios = <&pinctrl 4 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "brcm,bcm963xx-cfe-nor-partitions";
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348r.dts b/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348r.dts
new file mode 100644
index 0000000..2b54404
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348r.dts
@@ -0,0 +1,56 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom 96348R reference board";
+	compatible = "brcm,bcm96348r", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		stop_green {
+			label = "green:stop";
+			gpios = <&pinctrl 1 1>;
+		};
+		adsl_fail_green {
+			label = "green:adsl-fail";
+			gpios = <&pinctrl 2 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 3 1>;
+		};
+		ppp_fail_green {
+			label = "green:ppp-fail";
+			gpios = <&pinctrl 4 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "brcm,bcm963xx-cfe-nor-partitions";
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-bt-voyager-2110.dts b/target/linux/bcm63xx/dts/bcm6348-bt-voyager-2110.dts
new file mode 100644
index 0000000..39aa489
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-bt-voyager-2110.dts
@@ -0,0 +1,95 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "BT Voyager 2110";
+	compatible = "bt,voyager-2110", "brcm,bcm6348";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 1 1>;
+		};
+		adsl_green {
+			label = "green:adsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 3 1>;
+		};
+		wireless_green {
+			label = "green:wireless";
+			gpios = <&pinctrl 6 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-bt-voyager-2500v-bb.dts b/target/linux/bcm63xx/dts/bcm6348-bt-voyager-2500v-bb.dts
new file mode 100644
index 0000000..5e399a0
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-bt-voyager-2500v-bb.dts
@@ -0,0 +1,88 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "BT Voyager 2500V";
+	compatible = "bt,voyager-2500v-bb", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 31 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 1 1>;
+		};
+		adsl_green {
+			label = "green:adsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 3 1>;
+		};
+		wireless_green {
+			label = "green:wireless";
+			gpios = <&pinctrl 6 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-comtrend-ct-5365.dts b/target/linux/bcm63xx/dts/bcm6348-comtrend-ct-5365.dts
new file mode 100644
index 0000000..308139b
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-comtrend-ct-5365.dts
@@ -0,0 +1,95 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Comtrend CT-5365";
+	compatible = "comtrend,ct-5365", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wlan {
+			label = "wlan";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 35 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		alarm_red {
+			label = "red:alarm";
+			gpios = <&pinctrl 2 1>;
+		};
+		wps_green {
+			label = "green:wps";
+			gpios = <&pinctrl 6 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-comtrend-ct-536plus.dts b/target/linux/bcm63xx/dts/bcm6348-comtrend-ct-536plus.dts
new file mode 100644
index 0000000..e95e4e6
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-comtrend-ct-536plus.dts
@@ -0,0 +1,84 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Comtrend CT-536+/CT-5621T";
+	compatible = "comtrend,ct-536plus", "brcm,bcm6348";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		adsl_fail_green {
+			label = "green:adsl-fail";
+			gpios = <&pinctrl 2 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii &pinctrl_mii_pccard>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-d-link-dsl-2640b-b.dts b/target/linux/bcm63xx/dts/bcm6348-d-link-dsl-2640b-b.dts
new file mode 100644
index 0000000..d71bc4e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-d-link-dsl-2640b-b.dts
@@ -0,0 +1,92 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "D-Link DSL-2640B rev B2";
+	compatible = "d-link,dsl-2640b-b", "brcm,bcm6348";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 7 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		status {
+			label = "status";
+			gpios = <&pinctrl 3 1>;
+		};
+		inet_green {
+			label = "green:internet";
+			gpios = <&pinctrl 4 1>;
+		};
+		inet_red {
+			label = "red:internet";
+			gpios = <&pinctrl 5 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-davolink-dv-201amr.dts b/target/linux/bcm63xx/dts/bcm6348-davolink-dv-201amr.dts
new file mode 100644
index 0000000..abb2cc0
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-davolink-dv-201amr.dts
@@ -0,0 +1,49 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Davolink DV-201AMR";
+	compatible = "davolink,dv-201amr", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		backup@0 {
+			label = "backup";
+			reg = <0x000000 0x400000>;
+		};
+
+		cfe@400000 {
+			label = "cfe";
+			reg = <0x400000 0x010000>;
+			read-only;
+		};
+
+		linux@410000 {
+			label = "linux";
+			reg = <0x410000 0x3f0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-dynalink-rta1025w.dts b/target/linux/bcm63xx/dts/bcm6348-dynalink-rta1025w.dts
new file mode 100644
index 0000000..e107337
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-dynalink-rta1025w.dts
@@ -0,0 +1,49 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Dynalink RTA1025W";
+	compatible = "dynalink,rta1025w", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-inventel-livebox-1.dts b/target/linux/bcm63xx/dts/bcm6348-inventel-livebox-1.dts
new file mode 100644
index 0000000..df204cc
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-inventel-livebox-1.dts
@@ -0,0 +1,89 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Inventel Livebox 1";
+	compatible = "inventel,livebox-1", "brcm,bcm6348";
+
+	aliases {
+		led-boot = &led_red_adsl_fail;
+		led-failsafe = &led_red_adsl_fail;
+		led-running = &led_red_adsl_fail;
+		led-upgrade = &led_red_adsl_fail;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		button1 {
+			label = "1";
+			gpios = <&pinctrl 36 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		button2 {
+			label = "2";
+			gpios = <&pinctrl 7 1>;
+			linux,code = <BTN_2>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_red_adsl_fail: red_adsl_fail {
+			label = "red:adsl-fail-power";
+			gpios = <&pinctrl 0 0>;
+			default-state = "on";
+		};
+
+		red_adsl {
+			label = "red:adsl";
+			gpios = <&pinctrl 1 0>;
+		};
+
+		red_traffic {
+			label = "red:traffic";
+			gpios = <&pinctrl 2 0>;
+		};
+
+		red_phone {
+			label = "red:phone";
+			gpios = <&pinctrl 3 0>;
+		};
+
+		red_wifi {
+			label = "red:wifi";
+			gpios = <&pinctrl 4 0>;
+		};
+	};
+};
+
+&pflash {
+	reg = <0x1e400000 0x800000>;
+	status = "okay";
+
+	partitions {
+		compatible = "ecoscentric,redboot-fis-partitions";
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii &pinctrl_mii_pccard>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-netgear-dg834g-v4.dts b/target/linux/bcm63xx/dts/bcm6348-netgear-dg834g-v4.dts
new file mode 100644
index 0000000..e91a410
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-netgear-dg834g-v4.dts
@@ -0,0 +1,85 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Netgear DG834G v4";
+	compatible = "netgear,dg834g-v4", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 6 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		status {
+			label = "red:power";
+			gpios = <&pinctrl 1 1>;
+		};
+		inet_green {
+			label = "adsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		inet_red {
+			label = "internet";
+			gpios = <&pinctrl 3 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-netgear-dg834gt-pn.dts b/target/linux/bcm63xx/dts/bcm6348-netgear-dg834gt-pn.dts
new file mode 100644
index 0000000..3f17f98
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-netgear-dg834gt-pn.dts
@@ -0,0 +1,89 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Netgear DG834GT/PN";
+	compatible = "netgear,dg834gt-pn", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 6 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		stop_green {
+			label = "green:stop";
+			gpios = <&pinctrl 1 1>;
+		};
+		adsl_fail_green {
+			label = "green:adsl-fail";
+			gpios = <&pinctrl 2 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 3 1>;
+		};
+		ppp_fail_green {
+			label = "green:ppp-fail";
+			gpios = <&pinctrl 4 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii &pinctrl_mii_pccard>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-sagem-fast-2404.dts b/target/linux/bcm63xx/dts/bcm6348-sagem-fast-2404.dts
new file mode 100644
index 0000000..4abd185
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-sagem-fast-2404.dts
@@ -0,0 +1,49 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Sagem F@st 2404";
+	compatible = "sagem,fast-2404", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii &pinctrl_mii_pccard>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-sagem-fast-2604.dts b/target/linux/bcm63xx/dts/bcm6348-sagem-fast-2604.dts
new file mode 100644
index 0000000..987903d
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-sagem-fast-2604.dts
@@ -0,0 +1,85 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Sagem F@st 2604";
+	compatible = "sagem,fast-2604", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 1 1>;
+		};
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 4 1>;
+		};
+		wps_green {
+			label = "green:wps";
+			gpios = <&pinctrl 5 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-t-com-speedport-w-500v.dts b/target/linux/bcm63xx/dts/bcm6348-t-com-speedport-w-500v.dts
new file mode 100644
index 0000000..c096b88
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-t-com-speedport-w-500v.dts
@@ -0,0 +1,96 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "T-Com Speedport W 500V";
+	compatible = "t-com,speedport-w-500v", "brcm,bcm6348";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 1 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 3 1>;
+		};
+		pstn_green {
+			label = "green:pstn";
+			gpios = <&pinctrl 28 1>;
+		};
+		voip_green {
+			label = "green:voip";
+			gpios = <&pinctrl 32 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-tecom-gw6000.dts b/target/linux/bcm63xx/dts/bcm6348-tecom-gw6000.dts
new file mode 100644
index 0000000..a34cd49
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-tecom-gw6000.dts
@@ -0,0 +1,63 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "TECOM GW6000";
+	compatible = "tecom,gw6000", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 36 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-tecom-gw6200.dts b/target/linux/bcm63xx/dts/bcm6348-tecom-gw6200.dts
new file mode 100644
index 0000000..5773077
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-tecom-gw6200.dts
@@ -0,0 +1,91 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "TECOM GW6200";
+	compatible = "tecom,gw6200", "brcm,bcm6348";
+
+	aliases {
+		led-boot = &led_line1_green;
+		led-failsafe = &led_line1_green;
+		led-running = &led_line1_green;
+		led-upgrade = &led_line1_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 36 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_line1_green: line1_green {
+			label = "green:line1";
+			gpios = <&pinctrl 4 1>;
+		};
+		line2_green {
+			label = "green:line2";
+			gpios = <&pinctrl 5 1>;
+		};
+		line3_green {
+			label = "green:line3";
+			gpios = <&pinctrl 6 1>;
+		};
+		tel_green {
+			label = "green:tel";
+			gpios = <&pinctrl 7 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x7e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@7f0000 {
+			label = "nvram";
+			reg = <0x7f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii &pinctrl_mii_pccard>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-telsey-cpva502plus.dts b/target/linux/bcm63xx/dts/bcm6348-telsey-cpva502plus.dts
new file mode 100644
index 0000000..d0ec1cf
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-telsey-cpva502plus.dts
@@ -0,0 +1,77 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Telsey CPVA502+";
+	compatible = "telsey,cpva502plus", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 36 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		phone_green {
+			label = "green:phone";
+			gpios = <&pinctrl 0 1>;
+		};
+
+		link_amber {
+			label = "amber:link";
+			gpios = <&pinctrl 5 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-telsey-magic.dts b/target/linux/bcm63xx/dts/bcm6348-telsey-magic.dts
new file mode 100644
index 0000000..00ce70f
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-telsey-magic.dts
@@ -0,0 +1,89 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Alice W-Gate";
+	compatible = "telsey,magic", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+
+		stop {
+			label = "green:stop";
+			gpios = <&pinctrl 1 1>;
+		};
+
+		hpna {
+			label = "green:hpna";
+			gpios = <&pinctrl 4 1>;
+		};
+
+		status {
+			label = "green:adsl";
+			gpios = <&pinctrl 5 1>;
+		};
+
+		voip {
+			label = "green:voip";
+			gpios = <&pinctrl 22 1>;
+		};
+
+		wifi {
+			label = "green:wifi";
+			gpios = <&pinctrl 28 0>;
+		};
+
+		usb {
+			label = "green:usb";
+			gpios = <&pinctrl 35 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii &pinctrl_mii_pccard>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-tp-link-td-w8900gb.dts b/target/linux/bcm63xx/dts/bcm6348-tp-link-td-w8900gb.dts
new file mode 100644
index 0000000..1a49e7f
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-tp-link-td-w8900gb.dts
@@ -0,0 +1,89 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "TP-Link TD-W8900GB";
+	compatible = "tp-link,td-w8900gb", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 33 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 1>;
+			default-state = "on";
+		};
+		stop_green {
+			label = "green:stop";
+			gpios = <&pinctrl 1 1>;
+		};
+		adsl_fail_green {
+			label = "green:adsl-fail";
+			gpios = <&pinctrl 2 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 3 1>;
+		};
+		ppp_fail_green {
+			label = "green:ppp-fail";
+			gpios = <&pinctrl 4 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x020000>;
+			read-only;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x020000 0x3d0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3e0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii &pinctrl_mii_pccard>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348-usrobotics-usr9108.dts b/target/linux/bcm63xx/dts/bcm6348-usrobotics-usr9108.dts
new file mode 100644
index 0000000..412d80a
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-usrobotics-usr9108.dts
@@ -0,0 +1,62 @@
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "USRobotics USR9108";
+	compatible = "usrobotics,usr9108", "brcm,bcm6348";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		usb {
+			label = "usb";
+			gpios = <&pinctrl 0 1>;
+		};
+		dsl {
+			label = "adsl";
+			gpios = <&pinctrl 3 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348.dtsi b/target/linux/bcm63xx/dts/bcm6348.dtsi
new file mode 100644
index 0000000..38bb71e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348.dtsi
@@ -0,0 +1,160 @@
+/dts-v1/;
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+	compatible = "brcm,bcm6348";
+
+	aliases {
+		pflash = &pflash;
+		pinctrl = &pinctrl;
+		serial0 = &uart0;
+		spi0 = &lsspi;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			compatible = "brcm,bmips3300", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <0>;
+		};
+	};
+
+	cpu_intc: interrupt-controller {
+		#address-cells = <0>;
+		compatible = "mti,cpu-interrupt-controller";
+
+		interrupt-controller;
+		#interrupt-cells = <1>;
+	};
+
+	memory { device_type = "memory"; reg = <0 0>; };
+
+	pflash: nor@1fc00000 {
+		compatible = "cfi-flash";
+		reg = <0x1fc00000 0x400000>;
+		bank-width = <2>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		status = "disabled";
+	};
+
+	ubus@fff00000 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		compatible = "simple-bus";
+		interrupt-parent = <&periph_intc>;
+
+		periph_intc: interrupt-controller@fffe000c {
+			compatible = "brcm,bcm6345-l1-intc";
+			reg = <0xfffe000c 0x8>;
+
+			interrupt-controller;
+			#interrupt-cells = <1>;
+
+			interrupt-parent = <&cpu_intc>;
+			interrupts = <2>;
+		};
+
+		ext_intc: interrupt-controller@fffe0014 {
+			compatible = "brcm,bcm6345-ext-intc";
+			reg = <0xfffe0014 0x4>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+
+			interrupt-parent = <&cpu_intc>;
+			interrupts = <3>, <4>, <5>, <6>;
+
+			brcm,field-width = <5>;
+		};
+
+		pinctrl: pin-controller@fffe0400 {
+			compatible = "brcm,bcm6348-pinctrl";
+			reg = <0xfffe0400 0x8>,
+			      <0xfffe0408 0x8>,
+			      <0xfffe0418 0x4>;
+			reg-names = "dirout", "dat", "mode";
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-parent = <&ext_intc>;
+			interrupts = <0 0>, <1 0>, <2 0>, <3 0>;
+			interrupt-names = "gpio32", "gpio33", "gpio34", "gpio35";
+
+			pinctrl_ext_ephy: ext_ephy {
+				function = "ext_ephy";
+				groups = "group1", "group4";
+			};
+
+			pinctrl_mii_snoop: mii_snoop {
+				function = "mii_snoop";
+				groups = "group1", "group4";
+			};
+
+			pinctrl_legacy_led: legacy_led {
+				function = "legacy_led";
+				groups = "group4";
+			};
+
+			pinctrl_mii_pccard: mii_pccard {
+				function = "mii_pccard";
+				groups = "group1";
+			};
+
+			pinctrl_pci: pci {
+				function = "pci";
+				groups = "group2";
+			};
+
+			pinctrl_spi_master_uart: spi_master_uart {
+				function = "spi_master_uart";
+				groups = "group1";
+			};
+
+			pinctrl_ext_mii: ext_mii {
+				function = "ext_mii";
+				groups = "group0", "group3";
+			};
+
+			pinctrl_utopia: utopia {
+				function = "utopia";
+				groups = "group1", "group3", "group4";
+			};
+
+			pinctrl_diag: diag {
+				function = "diag";
+				groups = "group0", "group1", "group2", "group3", "group4";
+			};
+		};
+
+		uart0: serial@fffe0300 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0xfffe0300 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <2>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		lsspi: spi@fffe0c00 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6348-spi";
+			reg = <0xfffe0c00 0x40>;
+			interrupts = <1>;
+			/* clocks = <&clkctl 9>; */
+
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-alcatel-rg100a.dts b/target/linux/bcm63xx/dts/bcm6358-alcatel-rg100a.dts
new file mode 100644
index 0000000..fdc1edf
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-alcatel-rg100a.dts
@@ -0,0 +1,66 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Alcatel RG100A";
+	compatible = "alcatel,rg100a", "brcm,bcm6358";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		stop_green {
+			label = "green:stop";
+			gpios = <&pinctrl 4 1>;
+		};
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 5 1>;
+			default-state = "on";
+		};
+		adsl_green {
+			label = "green:adsl";
+			gpios = <&pinctrl 22 1>;
+		};
+		ppp_fail_green {
+			label = "green:ppp-fail";
+			gpios = <&pinctrl 23 0>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x020000>;
+			read-only;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x020000 0xfc0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@fe0000 {
+			label = "nvram";
+			reg = <0xfe0000 0x020000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-brcm-bcm96358vw.dts b/target/linux/bcm63xx/dts/bcm6358-brcm-bcm96358vw.dts
new file mode 100644
index 0000000..bf99793
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-brcm-bcm96358vw.dts
@@ -0,0 +1,51 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM96358VW reference board";
+	compatible = "brcm,bcm96358vw", "brcm,bcm6358";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 4 0>;
+			default-state = "on";
+		};
+		stop_green {
+			label = "green:stop";
+			gpios = <&pinctrl 5 0>;
+		};
+		adsl_fail_green {
+			label = "green:adsl-fail";
+			gpios = <&pinctrl 15 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 22 1>;
+		};
+		ppp_fail_green {
+			label = "green:ppp-fail";
+			gpios = <&pinctrl 23 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "brcm,bcm963xx-cfe-nor-partitions";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-brcm-bcm96358vw2.dts b/target/linux/bcm63xx/dts/bcm6358-brcm-bcm96358vw2.dts
new file mode 100644
index 0000000..316581d
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-brcm-bcm96358vw2.dts
@@ -0,0 +1,47 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM96358VW2 reference board";
+	compatible = "brcm,bcm96358vw2", "brcm,bcm6358";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		stop_green {
+			label = "green:stop";
+			gpios = <&pinctrl 4 1>;
+		};
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 5 1>;
+			default-state = "on";
+		};
+		adsl_green {
+			label = "green:adsl";
+			gpios = <&pinctrl 22 1>;
+		};
+		ppp_fail_green {
+			label = "green:ppp-fail";
+			gpios = <&pinctrl 23 0>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "brcm,bcm963xx-cfe-nor-partitions";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-bt-home-hub-2-a.dts b/target/linux/bcm63xx/dts/bcm6358-bt-home-hub-2-a.dts
new file mode 100644
index 0000000..b5eea3d
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-bt-home-hub-2-a.dts
@@ -0,0 +1,176 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "BT Home Hub 2.0 Type A";
+	compatible = "bt,home-hub-2-a", "brcm,bcm6358";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_upgrading_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		phone {
+			label = "phone";
+			gpios = <&pinctrl 1 1>;
+			linux,code = <KEY_PHONE>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 9 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 11 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_serial_led>;
+
+	led@0 {
+		reg = <0>;
+		active-low;
+		label = "red:power";
+	};
+
+	led_power_green: led@1 {
+		reg = <0>;
+		active-low;
+		label = "green:power";
+		default-state = "on";
+	};
+
+	led@2 {
+		reg = <2>;
+		active-low;
+		label = "blue:power";
+	};
+
+	led@3 {
+		reg = <3>;
+		active-low;
+		label = "red:broadband";
+	};
+
+	led@4 {
+		reg = <4>;
+		active-low;
+		label = "green:broadband";
+	};
+
+	led@5 {
+		reg = <5>;
+		active-low;
+		label = "blue:broadband";
+	};
+
+	led@6 {
+		reg = <6>;
+		active-low;
+		label = "red:wireless";
+	};
+
+	led@7 {
+		reg = <7>;
+		active-low;
+		label = "green:wireless";
+	};
+
+	led@8 {
+		reg = <8>;
+		active-low;
+		label = "blue:wireless";
+	};
+
+	led@9 {
+		reg = <9>;
+		active-low;
+		label = "red:phone";
+	};
+
+	led@10 {
+		reg = <10>;
+		active-low;
+		label = "green:phone";
+	};
+
+	led@11 {
+		reg = <11>;
+		active-low;
+		label = "blue:phone";
+	};
+
+	led@12 {
+		reg = <12>;
+		active-low;
+		label = "red:upgrading";
+	};
+
+	led_upgrading_green: led@13 {
+		reg = <13>;
+		active-low;
+		label = "green:upgrading";
+	};
+
+	led@14 {
+		reg = <14>;
+		active-low;
+		label = "blue:upgrading";
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x020000>;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x020000 0xfc0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@fe0000 {
+			label = "nvram";
+			reg = <0xfe0000 0x020000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-comtrend-ct-6373.dts b/target/linux/bcm63xx/dts/bcm6358-comtrend-ct-6373.dts
new file mode 100644
index 0000000..ab9d565
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-comtrend-ct-6373.dts
@@ -0,0 +1,107 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Comtrend CT-6373";
+	compatible = "comtrend,ct-6373", "brcm,bcm6358";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 35 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 0>;
+			default-state = "on";
+		};
+		usb_green {
+			label = "green:usb";
+			gpios = <&pinctrl 3 1>;
+		};
+		wlan_green {
+			label = "green:wlan";
+			gpios = <&pinctrl 9 1>;
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_serial_led>;
+
+	led@0 {
+		reg = <0>;
+		active-low;
+		label = "green:adsl";
+	};
+
+	led@1 {
+		reg = <1>;
+		active-low;
+		label = "green:line";
+	};
+
+	led@2 {
+		reg = <2>;
+		active-low;
+		label = "green:fxs1";
+	};
+
+	led@3 {
+		reg = <3>;
+		active-low;
+		label = "green:fxs2";
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x7e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@7f0000 {
+			label = "nvram";
+			reg = <0x7f0000 0x010000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-d-link-dsl-2650u.dts b/target/linux/bcm63xx/dts/bcm6358-d-link-dsl-2650u.dts
new file mode 100644
index 0000000..6d26261
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-d-link-dsl-2650u.dts
@@ -0,0 +1,66 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "D-Link DSL-2650U";
+	compatible = "d-link,dsl-2650u", "brcm,bcm6358";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		stop_green {
+			label = "green:stop";
+			gpios = <&pinctrl 4 1>;
+		};
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 5 1>;
+			default-state = "on";
+		};
+		adsl_green {
+			label = "green:adsl";
+			gpios = <&pinctrl 22 1>;
+		};
+		ppp_fail_green {
+			label = "green:ppp-fail";
+			gpios = <&pinctrl 23 0>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x7e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@7f0000 {
+			label = "nvram";
+			reg = <0x7f0000 0x010000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-d-link-dsl-274xb-c2.dts b/target/linux/bcm63xx/dts/bcm6358-d-link-dsl-274xb-c2.dts
new file mode 100644
index 0000000..ff007eb
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-d-link-dsl-274xb-c2.dts
@@ -0,0 +1,91 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "D-Link DSL-2740B/DSL-2741B rev C2/3";
+	compatible = "d-link,dsl-274xb-c2", "brcm,bcm6358";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		inet_green {
+			label = "green:internet";
+			gpios = <&pinctrl 2 0>;
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 4 1>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 5 1>;
+			default-state = "on";
+		};
+		dsl_green {
+			label = "green:adsl";
+			gpios = <&pinctrl 9 1>;
+		};
+		inet_red {
+			label = "red:internet";
+			gpios = <&pinctrl 10 0>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-d-link-dva-g3810bn-tl.dts b/target/linux/bcm63xx/dts/bcm6358-d-link-dva-g3810bn-tl.dts
new file mode 100644
index 0000000..ef6ff86
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-d-link-dva-g3810bn-tl.dts
@@ -0,0 +1,84 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "D-Link DVA-G3810BN/TL";
+	compatible = "d-link,dva-g3810bn-tl", "brcm,bcm6358";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		voip {
+			label = "voip";
+			gpios = <&pinctrl 1 0>;
+		};
+		power {
+			label = "power";
+			gpios = <&pinctrl 4 0>;
+			default-state = "on";
+		};
+		stop {
+			label = "stop";
+			gpios = <&pinctrl 5 0>;
+		};
+		dsl {
+			label = "dsl";
+			gpios = <&pinctrl 22 1>;
+		};
+		inet {
+			label = "internet";
+			gpios = <&pinctrl 23 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x7e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@7f0000 {
+			label = "nvram";
+			reg = <0x7f0000 0x010000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg553.dts b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg553.dts
new file mode 100644
index 0000000..243e2ca
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg553.dts
@@ -0,0 +1,114 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Huawei EchoLife HG553";
+	compatible = "huawei,echolife-hg553", "brcm,bcm6358";
+
+	aliases {
+		led-boot = &led_power_blue;
+		led-failsafe = &led_power_blue;
+		led-running = &led_power_blue;
+		led-upgrade = &led_power_blue;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		rfkill {
+			label = "rfkill";
+			gpios = <&pinctrl 9 1>;
+			linux,code = <KEY_RFKILL>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 37 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_blue: power_blue {
+			label = "blue:power";
+			gpios = <&pinctrl 4 1>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 5 1>;
+		};
+		hspa_red {
+			label = "red:hspa";
+			gpios = <&pinctrl 12 1>;
+		};
+		hspa_blue {
+			label = "blue:hspa";
+			gpios = <&pinctrl 13 1>;
+		};
+		lan_red {
+			label = "red:lan";
+			gpios = <&pinctrl 22 1>;
+		};
+		lan_blue {
+			label = "blue:lan";
+			gpios = <&pinctrl 23 1>;
+		};
+		wifi_red {
+			label = "red:wifi";
+			gpios = <&pinctrl 25 1>;
+		};
+		dsl_red {
+			label = "red:adsl";
+			gpios = <&pinctrl 34 1>;
+		};
+		dsl_blue {
+			label = "blue:adsl";
+			gpios = <&pinctrl 35 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x020000>;
+			read-only;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x020000 0xfc0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@fe0000 {
+			label = "nvram";
+			reg = <0xfe0000 0x020000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-a.dts b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-a.dts
new file mode 100644
index 0000000..76dbe4f
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-a.dts
@@ -0,0 +1,43 @@
+#include "bcm6358-huawei-echolife-hg556a.dtsi"
+
+/ {
+	model = "Huawei EchoLife HG556a (version A)";
+	compatible = "huawei,echolife-hg556a-a", "brcm,bcm6358";
+};
+
+&gpiokeys {
+	help {
+		label = "help";
+		gpios = <&pinctrl 8 1>;
+		linux,code = <KEY_HELP>;
+		debounce-interval = <60>;
+	};
+};
+
+&gpioleds {
+	message_red {
+		label = "red:message";
+		gpios = <&pinctrl 0 1>;
+	};
+
+	hspa_red {
+		label = "red:hspa";
+		gpios = <&pinctrl 1 1>;
+	};
+
+	all_red {
+		label = "red:all";
+		gpios = <&pinctrl 6 1>;
+		default-state = "on";
+	};
+
+	lan1_green {
+		label = "green:lan1";
+		gpios = <&pinctrl 12 1>;
+	};
+
+	lan2_green {
+		label = "green:lan2";
+		gpios = <&pinctrl 15 1>;
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-b.dts b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-b.dts
new file mode 100644
index 0000000..c39e574
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-b.dts
@@ -0,0 +1,43 @@
+#include "bcm6358-huawei-echolife-hg556a.dtsi"
+
+/ {
+	model = "Huawei EchoLife HG556a (version B)";
+	compatible = "huawei,echolife-hg556a-b", "brcm,bcm6358";
+};
+
+&gpiokeys {
+	help {
+		label = "help";
+		gpios = <&pinctrl 8 1>;
+		linux,code = <KEY_HELP>;
+		debounce-interval = <60>;
+	};
+};
+
+&gpioleds {
+	message_red {
+		label = "red:message";
+		gpios = <&pinctrl 0 1>;
+	};
+
+	hspa_red {
+		label = "red:hspa";
+		gpios = <&pinctrl 1 1>;
+	};
+
+	all_red {
+		label = "red:all";
+		gpios = <&pinctrl 6 1>;
+		default-state = "on";
+	};
+
+	lan1_green {
+		label = "green:lan1";
+		gpios = <&pinctrl 12 1>;
+	};
+
+	lan2_green {
+		label = "green:lan2";
+		gpios = <&pinctrl 15 1>;
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-c.dts b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-c.dts
new file mode 100644
index 0000000..3f5931d
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-c.dts
@@ -0,0 +1,37 @@
+#include "bcm6358-huawei-echolife-hg556a.dtsi"
+
+/ {
+	model = "Huawei EchoLife HG556a (version C)";
+	compatible = "huawei,echolife-hg556a-c", "brcm,bcm6358";
+};
+
+&gpiokeys {
+	help {
+		label = "help";
+		gpios = <&pinctrl 36 1>;
+		linux,code = <KEY_HELP>;
+		debounce-interval = <60>;
+	};
+};
+
+&gpioleds {
+	lan1_green {
+		label = "green:lan1";
+		gpios = <&pinctrl 0 1>;
+	};
+
+	lan2_green {
+		label = "green:lan2";
+		gpios = <&pinctrl 1 1>;
+	};
+
+	message_red {
+		label = "red:message";
+		gpios = <&pinctrl 12 1>;
+	};
+
+	hspa_red {
+		label = "red:hspa";
+		gpios = <&pinctrl 15 1>;
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a.dtsi b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a.dtsi
new file mode 100644
index 0000000..09a21f7
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a.dtsi
@@ -0,0 +1,127 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	aliases {
+		led-boot = &led_power_red;
+		led-failsafe = &led_power_red;
+		led-running = &led_power_red;
+		led-upgrade = &led_power_red;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	gpiokeys: keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wlan {
+			label = "wlan";
+			gpios = <&pinctrl 9 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		restart {
+			label = "restart";
+			gpios = <&pinctrl 10 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 11 1>;
+			linux,code = <KEY_CONFIG>;
+			debounce-interval = <60>;
+		};
+	};
+
+	gpioleds: leds {
+		compatible = "gpio-leds";
+
+		dsl_red {
+			label = "red:dsl";
+			gpios = <&pinctrl 2 1>;
+		};
+
+		led_power_red: power_red {
+			label = "red:power";
+			gpios = <&pinctrl 3 1>;
+			default-state = "on";
+		};
+
+		lan1_red {
+			label = "red:lan1";
+			gpios = <&pinctrl 13 1>;
+		};
+
+		lan2_red {
+			label = "red:lan2";
+			gpios = <&pinctrl 22 1>;
+		};
+
+		lan3_green {
+			label = "green:lan3";
+			gpios = <&pinctrl 23 1>;
+		};
+
+		lan3_red {
+			label = "red:lan3";
+			gpios = <&pinctrl 26 1>;
+		};
+
+		lan4_green {
+			label = "green:lan4";
+			gpios = <&pinctrl 27 1>;
+		};
+
+		lan4_red {
+			label = "red:lan4";
+			gpios = <&pinctrl 28 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x020000>;
+			read-only;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x020000 0xec0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		cal_data@ee0000 {
+			label = "cal_data";
+			reg = <0xee0000 0x100000>;
+			read-only;
+		};
+
+		nvram@fe0000 {
+			label = "nvram";
+			reg = <0xfe0000 0x020000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-pirelli-a226.dtsi b/target/linux/bcm63xx/dts/bcm6358-pirelli-a226.dtsi
new file mode 100644
index 0000000..cc833b0
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-pirelli-a226.dtsi
@@ -0,0 +1,93 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 37 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		voip_red {
+			label = "red:VoIP";
+			gpios = <&pinctrl 0 1>;
+		};
+		eth_red {
+			label = "red:ethernet";
+			gpios = <&pinctrl 1 1>;
+		};
+		dsl_green {
+			label = "green:ADSL";
+			gpios = <&pinctrl 2 1>;
+		};
+		usb_green {
+			label = "green:USB";
+			gpios = <&pinctrl 3 1>;
+		};
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 4 1>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 5 1>;
+		};
+		inet_red {
+			label = "red:internet";
+			gpios = <&pinctrl 6 1>;
+		};
+		inet_green {
+			label = "green:internet";
+			gpios = <&pinctrl 7 1>;
+		};
+		eth_green {
+			label = "green:ethernet";
+			gpios = <&pinctrl 8 1>;
+		};
+		voip_green {
+			label = "green:VoIP";
+			gpios = <&pinctrl 9 1>;
+		};
+		wifi_red {
+			label = "red:wifi";
+			gpios = <&pinctrl 10 1>;
+		};
+		usb_red {
+			label = "red:USB";
+			gpios = <&pinctrl 11 1>;
+		};
+		dsl_red {
+			label = "red:ADSL";
+			gpios = <&pinctrl 12 1>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-pirelli-a226g.dts b/target/linux/bcm63xx/dts/bcm6358-pirelli-a226g.dts
new file mode 100644
index 0000000..492fd2e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-pirelli-a226g.dts
@@ -0,0 +1,33 @@
+#include "bcm6358-pirelli-a226.dtsi"
+
+/ {
+	model = "Pirelli A226G";
+	compatible = "pirelli,a226g", "brcm,bcm6358";
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x7e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@7f0000 {
+			label = "nvram";
+			reg = <0x7f0000 0x010000>;
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-pirelli-a226m-fwb.dts b/target/linux/bcm63xx/dts/bcm6358-pirelli-a226m-fwb.dts
new file mode 100644
index 0000000..1a820fb
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-pirelli-a226m-fwb.dts
@@ -0,0 +1,33 @@
+#include "bcm6358-pirelli-a226.dtsi"
+
+/ {
+	model = "Pirelli A226M-FWB";
+	compatible = "pirelli,a226m-fwb", "brcm,bcm6358";
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partition@0 {
+			label = "CFE";
+			reg = <0x000000 0x020000>;
+			read-only;
+		};
+
+		partition@20000 {
+			label = "linux";
+			reg = <0x020000 0xfc0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		partition@fe0000 {
+			label = "nvram";
+			reg = <0xfe0000 0x020000>;
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-pirelli-a226m.dts b/target/linux/bcm63xx/dts/bcm6358-pirelli-a226m.dts
new file mode 100644
index 0000000..ba1a862
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-pirelli-a226m.dts
@@ -0,0 +1,33 @@
+#include "bcm6358-pirelli-a226.dtsi"
+
+/ {
+	model = "Pirelli A226M";
+	compatible = "pirelli,a226m", "brcm,bcm6358";
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x7e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@7f0000 {
+			label = "nvram";
+			reg = <0x7f0000 0x010000>;
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-pirelli-agpf-s0.dts b/target/linux/bcm63xx/dts/bcm6358-pirelli-agpf-s0.dts
new file mode 100644
index 0000000..12e9a0e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-pirelli-agpf-s0.dts
@@ -0,0 +1,127 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Pirelli Alice Gate AGPF-S0";
+	compatible = "pirelli,agpf-s0", "brcm,bcm6358";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 37 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 4 1>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 5 1>;
+		};
+		service_green {
+			label = "green:service";
+			gpios = <&pinctrl 6 1>;
+		};
+		service_red {
+			label = "red:service";
+			gpios = <&pinctrl 7 1>;
+		};
+		dsl_green {
+			label = "green:adsl";
+			gpios = <&pinctrl 9 1>;
+		};
+		dsl_red {
+			label = "red:adsl";
+			gpios = <&pinctrl 10 1>;
+		};
+		wifi_green {
+			label = "green:wifi";
+			gpios = <&pinctrl 22 1>;
+		};
+		wifi_red {
+			label = "red:wifi";
+			gpios = <&pinctrl 23 1>;
+		};
+		inet_red {
+			label = "red:internet";
+			gpios = <&pinctrl 24 1>;
+		};
+		inet_green {
+			label = "green:internet";
+			gpios = <&pinctrl 25 1>;
+		};
+		usr1_green {
+			label = "green:usr1";
+			gpios = <&pinctrl 26 1>;
+		};
+		usr1_red {
+			label = "red:usr1";
+			gpios = <&pinctrl 27 1>;
+		};
+		usr2_green {
+			label = "green:usr2";
+			gpios = <&pinctrl 29 1>;
+		};
+		usr2_red {
+			label = "red:usr2";
+			gpios = <&pinctrl 30 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x020000>;
+			read-only;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x020000 0xfc0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@fe0000 {
+			label = "nvram";
+			reg = <0xfe0000 0x020000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-sfr-neufbox-4-foxconn-r1.dts b/target/linux/bcm63xx/dts/bcm6358-sfr-neufbox-4-foxconn-r1.dts
new file mode 100644
index 0000000..c4c9ee9
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-sfr-neufbox-4-foxconn-r1.dts
@@ -0,0 +1,31 @@
+#include "bcm6358-sfr-neufbox-4.dtsi"
+
+/ {
+	model = "SFR Neufbox 4 (Foxconn)";
+	compatible = "sfr,neufbox-4-foxconn-r1", "brcm,bcm6358";
+
+	leds {
+		compatible = "gpio-leds";
+
+		traffic_white {
+			label = "white:traffic";
+			gpios = <&pinctrl 2 0>;
+		};
+		service_blue {
+			label = "blue:service";
+			gpios = <&pinctrl 4 0>;
+		};
+		wifi_white {
+			label = "white:wifi";
+			gpios = <&pinctrl 15 0>;
+		};
+		service_red {
+			label = "red:service";
+			gpios = <&pinctrl 29 0>;
+		};
+		service_green {
+			label = "green:service";
+			gpios = <&pinctrl 30 0>;
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-sfr-neufbox-4-sercomm-r0.dts b/target/linux/bcm63xx/dts/bcm6358-sfr-neufbox-4-sercomm-r0.dts
new file mode 100644
index 0000000..fa23b68
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-sfr-neufbox-4-sercomm-r0.dts
@@ -0,0 +1,31 @@
+#include "bcm6358-sfr-neufbox-4.dtsi"
+
+/ {
+	model = "SFR Neufbox 4 (Sercomm)";
+	compatible = "sfr,neufbox-4-sercomm-r0", "brcm,bcm6358";
+
+	leds {
+		compatible = "gpio-leds";
+
+		traffic_white {
+			label = "white:traffic";
+			gpios = <&pinctrl 2 1>;
+		};
+		service_blue {
+			label = "blue:service";
+			gpios = <&pinctrl 4 1>;
+		};
+		wifi_white {
+			label = "white:wifi";
+			gpios = <&pinctrl 15 1>;
+		};
+		service_red {
+			label = "red:service";
+			gpios = <&pinctrl 29 1>;
+		};
+		service_green {
+			label = "green:service";
+			gpios = <&pinctrl 30 1>;
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-sfr-neufbox-4.dtsi b/target/linux/bcm63xx/dts/bcm6358-sfr-neufbox-4.dtsi
new file mode 100644
index 0000000..58075c8
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-sfr-neufbox-4.dtsi
@@ -0,0 +1,88 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		service {
+			label = "service";
+			gpios = <&pinctrl 27 1>;
+			linux,code = <BTN_0>;
+			debounce-interval = <60>;
+		};
+
+		clip {
+			label = "clip";
+			gpios = <&pinctrl 31 1>;
+			linux,code = <BTN_1>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 37 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_serial_led>;
+
+	led@0 {
+		reg = <0>;
+		active-low;
+		label = "white:alarm";
+	};
+
+	led@2 {
+		reg = <2>;
+		active-low;
+		label = "white:tv";
+	};
+
+	led@3 {
+		reg = <3>;
+		active-low;
+		label = "white:tel";
+	};
+
+	led@4 {
+		reg = <4>;
+		active-low;
+		label = "white:adsl";
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "brcm,bcm963xx-cfe-nor-partitions";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-t-com-speedport-w-303v.dts b/target/linux/bcm63xx/dts/bcm6358-t-com-speedport-w-303v.dts
new file mode 100644
index 0000000..7a66e68
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-t-com-speedport-w-303v.dts
@@ -0,0 +1,102 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "T-Com Speedport W 303V";
+	compatible = "t-com,speedport-w-303v", "brcm,bcm6358";
+
+	aliases {
+		led-boot = &led_power_adsl_green;
+		led-failsafe = &led_power_adsl_green;
+		led-running = &led_power_adsl_green;
+		led-upgrade = &led_power_adsl_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 11 0>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		ses {
+			label = "ses";
+			gpios = <&pinctrl 37 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		ses_green {
+			label = "green:ses";
+			gpios = <&pinctrl 0 1>;
+		};
+		power_adsl_red {
+			label = "red:power+adsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 5 1>;
+		};
+		led_power_adsl_green: power_adsl_green {
+			label = "green:power+adsl";
+			gpios = <&pinctrl 22 1>;
+			default-state = "on";
+		};
+		voip_green {
+			label = "green:voip";
+			gpios = <&pinctrl 27 1>;
+		};
+		pots_green {
+			label = "green:pots";
+			gpios = <&pinctrl 31 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x7e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@7f0000 {
+			label = "nvram";
+			reg = <0x7f0000 0x010000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358-telsey-cpva642.dts b/target/linux/bcm63xx/dts/bcm6358-telsey-cpva642.dts
new file mode 100644
index 0000000..f679b40
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-telsey-cpva642.dts
@@ -0,0 +1,118 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Telsey CPVA642-type (CPA-ZNTE60T)";
+	compatible = "telsey,cpva642", "brcm,bcm6358";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 36 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 37 0>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		eth_green {
+			label = "green:ether";
+			gpios = <&pinctrl 1 1>;
+		};
+		phone2_green {
+			label = "green:phone2";
+			gpios = <&pinctrl 2 1>;
+		};
+		usb_green {
+			label = "green:usb";
+			gpios = <&pinctrl 3 1>;
+		};
+		phone1_green {
+			label = "green:phone1";
+			gpios = <&pinctrl 4 1>;
+		};
+		wifi_red {
+			label = "red:wifi";
+			gpios = <&pinctrl 6 1>;
+		};
+		link_red {
+			label = "red:link";
+			gpios = <&pinctrl 9 1>;
+		};
+		link_green {
+			label = "green:link";
+			gpios = <&pinctrl 10 1>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 11 1>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 14 1>;
+		};
+		wifi_green {
+			label = "green:wifi";
+			gpios = <&pinctrl 28 0>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x7e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@7f0000 {
+			label = "nvram";
+			reg = <0x7f0000 0x010000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358.dtsi b/target/linux/bcm63xx/dts/bcm6358.dtsi
new file mode 100644
index 0000000..c2e0a97
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358.dtsi
@@ -0,0 +1,205 @@
+/dts-v1/;
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+	compatible = "brcm,bcm6358";
+
+	aliases {
+		pflash = &pflash;
+		pinctrl = &pinctrl;
+		serial0 = &uart0;
+		serial1 = &uart1;
+		spi0 = &lsspi;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			compatible = "brcm,bmips4350", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <0>;
+		};
+
+		cpu@1 {
+			compatible = "brcm,bmips4350", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <1>;
+		};
+	};
+
+	cpu_intc: interrupt-controller {
+		#address-cells = <0>;
+		compatible = "mti,cpu-interrupt-controller";
+
+		interrupt-controller;
+		#interrupt-cells = <1>;
+	};
+
+	memory { device_type = "memory"; reg = <0 0>; };
+
+	pflash: nor@1e000000 {
+		compatible = "cfi-flash";
+		reg = <0x1e000000 0x2000000>;
+		bank-width = <2>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		status = "disabled";
+	};
+
+	ubus@fff00000 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		compatible = "simple-bus";
+		interrupt-parent = <&periph_intc>;
+
+		periph_intc: interrupt-controller@fffe000c {
+			compatible = "brcm,bcm6345-l1-intc";
+			reg = <0xfffe000c 0x8>,
+			      <0xfffe0038 0x8>;
+
+			interrupt-controller;
+			#interrupt-cells = <1>;
+
+			interrupt-parent = <&cpu_intc>;
+			interrupts = <2>, <3>;
+		};
+
+		ext_intc0: interrupt-controller@fffe0014 {
+			compatible = "brcm,bcm6345-ext-intc";
+			reg = <0xfffe0014 0x4>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+
+			interrupts = <25>, <26>, <27>, <28>;
+		};
+
+		ext_intc1: interrupt-controller@fffe001c {
+			compatible = "brcm,bcm6345-ext-intc";
+			reg = <0xfffe001c 0x4>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+
+			interrupts = <20>, <21>;
+		};
+
+		pinctrl: pin-controller@fffe0080 {
+			compatible = "brcm,bcm6358-pinctrl";
+			reg = <0xfffe0080 0x8>,
+			      <0xfffe0088 0x8>;
+			reg-names = "dirout", "dat", "mode";
+			brcm,gpiomode = <&gpiomode>;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupts-extended = <&ext_intc1 0 0>,
+					      <&ext_intc1 1 0>,
+					      <&ext_intc0 0 0>,
+					      <&ext_intc0 1 0>,
+					      <&ext_intc0 2 0>,
+					      <&ext_intc0 3 0>;
+			interrupt-names = "gpio32", "gpio33", "gpio34", "gpio35",
+					  "gpio36", "gpio37";
+
+			pinctrl_ebi_cs: ebi_cs {
+				function = "ebi_cs";
+				groups = "ebi_cs_grp";
+			};
+
+			pinctrl_uart1: uart1 {
+				function = "uart1";
+				groups = "uart1_grp";
+			};
+
+			pinctrl_serial_led: serial_led {
+				function = "serial_led";
+				groups = "serial_led_grp";
+			};
+
+			pinctrl_legacy_led: legacy_led {
+				function = "legacy_led";
+				groups = "legacy_led_grp";
+			};
+
+			pinctrl_led: led {
+				function = "led";
+				groups = "led_grp";
+			};
+
+			pinctrl_spi_cs_23: spi_cs {
+				function = "spi_cs";
+				groups = "spi_cs_grp";
+			};
+
+			pinctrl_utopia: utopia {
+				function = "utopia";
+				groups = "utopia_grp";
+			};
+
+			pinctrl_pwm_syn_clk: pwm_syn_clk {
+				function = "pwm_syn_clk";
+				groups = "pwm_syn_clk_grp";
+			};
+
+			pinctrl_sys_irq: sys_irq {
+				function = "sys_irq";
+				groups = "sys_irq_grp";
+			};
+		};
+
+		gpiomode: gpiomode@fffe0098 {
+			compatible = "brcm,bcm6358-gpiomode", "syscon";
+			reg = <0xfffe0098 0x4>;
+		};
+
+		leds: led-controller@fffe00d0 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6358-leds";
+			reg = <0xfffe00d0 0x8>;
+			status = "disabled";
+		};
+
+		uart0: serial@fffe0100 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0xfffe0100 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <2>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		uart1: serial@fffe0120 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0xfffe0120 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <3>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		lsspi: spi@fffe0800 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6358-spi";
+			reg = <0xfffe0800 0x70c>;
+			interrupts = <1>;
+			/* clocks = <&clkctl 9>; */
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6359-huawei-echolife-hg520v.dts b/target/linux/bcm63xx/dts/bcm6359-huawei-echolife-hg520v.dts
new file mode 100644
index 0000000..ec47764
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6359-huawei-echolife-hg520v.dts
@@ -0,0 +1,74 @@
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Huawei EchoLife HG520v";
+	compatible = "huawei,echolife-hg520v", "brcm,bcm6359", "brcm,bcm6358";
+
+	aliases {
+		led-boot = &led_inet_green;
+		led-failsafe = &led_inet_green;
+		led-running = &led_inet_green;
+		led-upgrade = &led_inet_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 37 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_inet_green: inet_green {
+			label = "green:net";
+			gpios = <&pinctrl 32 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6361-sfr-neufbox-6-sercomm-r0.dts b/target/linux/bcm63xx/dts/bcm6361-sfr-neufbox-6-sercomm-r0.dts
new file mode 100644
index 0000000..c7b6806
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6361-sfr-neufbox-6-sercomm-r0.dts
@@ -0,0 +1,98 @@
+#include "bcm6362.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "SFR Neufbox 6 (Sercomm)";
+	compatible = "sfr,neufbox-6-sercomm-r0", "brcm,bcm6361", "brcm,bcm6362";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		service {
+			label = "service";
+			gpios = <&pinctrl 10 1>;
+			linux,code = <BTN_0>;
+			debounce-interval = <60>;
+		};
+
+		wlan {
+			label = "wlan";
+			gpios = <&pinctrl 12 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 25 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	switch {
+		compatible = "realtek,rtl8367";
+		gpio-sda = <&pinctrl 18 0>;
+		gpio-sck = <&pinctrl 20 0>;
+
+		realtek,extif0 = <1 5 1 1 1 1 1 1 2>;
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <20000000>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			cfe@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			linux@10000 {
+				reg = <0x010000 0xfe0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+
+			nvram@ff0000 {
+				reg = <0xff0000 0x010000>;
+				label = "nvram";
+			};
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6362-huawei-hg253s-v2.dts b/target/linux/bcm63xx/dts/bcm6362-huawei-hg253s-v2.dts
new file mode 100644
index 0000000..255c1c8
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6362-huawei-hg253s-v2.dts
@@ -0,0 +1,176 @@
+#include "bcm6362.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Huawei HG253s v2";
+	compatible = "huawei,hg253s-v2", "brcm,bcm6362";
+
+	aliases {
+		led-boot = &led_phone_green;
+		led-failsafe = &led_phone_green;
+		led-upgrade = &led_phone_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,ubifs noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wlan {
+			label = "wlan";
+			gpios = <&pinctrl 25 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 26 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_phone_green: led@28 {
+			label = "green:phone";
+			gpios = <&pinctrl 28 1>;
+		};
+
+		led@30 {
+			label = "green:usb";
+			gpios = <&pinctrl 30 1>;
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds>;
+
+	led@3 {
+		reg = <3>;
+		active-low;
+		label = "green:internet";
+	};
+
+	led@5 {
+		reg = <5>;
+		active-low;
+		label = "green:wifi";
+	};
+};
+
+&lsspi {
+	switch@0 {
+		compatible = "brcm,bcm53125";
+		reg = <0>;
+		spi-max-frequency = <781000>;
+
+		lede,alias = "eth0";
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			lan@1 {
+				reg = <1>;
+				label = "lan4";
+			};
+
+			lan@2 {
+				reg = <2>;
+				label = "lan3";
+			};
+
+			lan@3 {
+				reg = <3>;
+				label = "lan2";
+			};
+
+			lan@4 {
+				reg = <4>;
+				label = "lan1";
+			};
+
+			cpu@8 {
+				reg = <8>;
+				label = "cpu";
+
+				fixed-link {
+					speed = <1000>;
+					full-duplex;
+					asym-pause;
+					pause;
+				};
+			};
+		};
+	};
+};
+
+&nflash {
+	status = "okay";
+
+	nandcs@0 {
+		compatible = "brcm,nandcs";
+		#size-cells = <1>;
+		#address-cells = <1>;
+		reg = <0>;
+		nand-ecc-step-size = <512>;
+		nand-ecc-strength = <15>;
+		nand-on-flash-bbt;
+		brcm,nand-oob-sector-size = <64>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "cferom";
+				reg = <0x0000000 0x0020000>;
+				read-only;
+			};
+
+			partition@20000 {
+				compatible = "brcm,wfi";
+				label = "wfi";
+				reg = <0x0020000 0x7d80000>;
+			};
+
+			partition@7da0000 {
+				label = "nvram";
+				reg = <0x7da0000 0x160000>;
+			};
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio3", "gpio5";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6362-netgear-dgnd3700-v2.dts b/target/linux/bcm63xx/dts/bcm6362-netgear-dgnd3700-v2.dts
new file mode 100644
index 0000000..4bef590
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6362-netgear-dgnd3700-v2.dts
@@ -0,0 +1,215 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "bcm6362.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Netgear DGND3700v2";
+	compatible = "netgear,dgnd3700-v2", "brcm,bcm6362";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,ubifs noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wlan {
+			label = "wlan";
+			gpios = <&pinctrl 25 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 26 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led@28 {
+			label = "green:dsl";
+			gpios = <&pinctrl 28 1>;
+		};
+
+		led@34 {
+			label = "red:power";
+			gpios = <&pinctrl 34 1>;
+		};
+	};
+};
+
+&leds {
+	status = "okay";
+	brcm,serial-leds;
+	brcm,serial-dat-low;
+	brcm,serial-shift-inv;
+	brcm,serial-mux;
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_leds &pinctrl_serial_led>;
+
+	led@1 {
+		reg = <1>;
+		active-low;
+		label = "green:internet";
+	};
+
+	led_power_green: led@8 {
+		reg = <8>;
+		label = "green:power";
+		default-state = "on";
+	};
+
+	led@9 {
+		reg = <9>;
+		active-low;
+		label = "green:wps";
+	};
+
+	led@10 {
+		reg = <10>;
+		active-low;
+		label = "green:usb1";
+	};
+
+	led@11 {
+		reg = <11>;
+		active-low;
+		label = "green:usb2";
+	};
+
+	led@12 {
+		reg = <12>;
+		active-low;
+		label = "amber:internet";
+	};
+
+	led@13 {
+		reg = <13>;
+		active-low;
+		label = "green:ethernet";
+	};
+
+	led@14 {
+		reg = <14>;
+		active-low;
+		label = "amber:dsl";
+	};
+
+	led@16 {
+		reg = <16>;
+		active-low;
+		label = "amber:usb1";
+	};
+
+	led@17 {
+		reg = <17>;
+		active-low;
+		label = "amber:usb2";
+	};
+
+	led@18 {
+		reg = <18>;
+		active-low;
+		label = "amber:ethernet";
+	};
+};
+
+&nflash {
+	status = "okay";
+
+	nandcs@0 {
+		compatible = "brcm,nandcs";
+		#size-cells = <1>;
+		#address-cells = <1>;
+		reg = <0>;
+		nand-ecc-step-size = <512>;
+		nand-ecc-strength = <15>;
+		nand-on-flash-bbt;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "cferom";
+				reg = <0x0000000 0x0004000>;
+				read-only;
+			};
+
+			partition@4000 {
+				compatible = "brcm,wfi";
+				label = "wfi";
+				reg = <0x0004000 0x1c7c000>;
+				brcm,cferam = "cfe";
+			};
+
+			partition@1c80000 {
+				label = "flag";
+				reg = <0x1c80000 0x0040000>;
+				read-only;
+			};
+
+			partition@1cc0000 {
+				label = "pcbasn";
+				reg = <0x1cc0000 0x0040000>;
+				read-only;
+			};
+
+			partition@1d00000 {
+				label = "xxx";
+				reg = <0x1d00000 0x0080000>;
+				read-only;
+			};
+
+			partition@1d80000 {
+				label = "language_dev";
+				reg = <0x1d80000 0x0040000>;
+				read-only;
+			};
+
+			partition@1dc0000 {
+				label = "scnvram";
+				reg = <0x1dc0000 0x0100000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl_leds: leds {
+		function = "led";
+		pins = "gpio1";
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6362-sagem-fast-2504n.dts b/target/linux/bcm63xx/dts/bcm6362-sagem-fast-2504n.dts
new file mode 100644
index 0000000..e5ae573
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6362-sagem-fast-2504n.dts
@@ -0,0 +1,113 @@
+#include "bcm6362.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Sagem F@st 2504N";
+	compatible = "sagem,fast-2504n", "brcm,bcm6362";
+
+	aliases {
+		led-boot = &led_ok_green;
+		led-failsafe = &led_ok_green;
+		led-running = &led_ok_green;
+		led-upgrade = &led_ok_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 24 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 25 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power_orange {
+			label = "orange:power";
+			gpios = <&pinctrl 2 1>;
+		};
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 10 1>;
+			default-state = "on";
+		};
+		inet_red {
+			label = "red:internet";
+			gpios = <&pinctrl 26 1>;
+		};
+		led_ok_green: ok_green {
+			label = "green:ok";
+			gpios = <&pinctrl 28 1>;
+		};
+		ok_orange {
+			label = "orange:ok";
+			gpios = <&pinctrl 29 1>;
+		};
+		wlan_orangee {
+			label = "orange:wlan";
+			gpios = <&pinctrl 30 1>;
+		};
+	};
+};
+
+&hsspi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <20000000>;
+		spi-tx-bus-width = <2>;
+		spi-rx-bus-width = <2>;
+		reg = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			cfe@0 {
+				reg = <0x000000 0x010000>;
+				label = "cfe";
+				read-only;
+			};
+
+			linux@10000 {
+				reg = <0x010000 0x7e0000>;
+				label = "linux";
+				compatible = "brcm,bcm963xx-imagetag";
+			};
+
+			nvram@7f0000 {
+				reg = <0x7f0000 0x010000>;
+				label = "nvram";
+			};
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6362.dtsi b/target/linux/bcm63xx/dts/bcm6362.dtsi
new file mode 100644
index 0000000..0571b1e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6362.dtsi
@@ -0,0 +1,321 @@
+/dts-v1/;
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+	compatible = "brcm,bcm6362";
+
+	aliases {
+		nflash = &nflash;
+		pinctrl = &pinctrl;
+		serial0 = &uart0;
+		serial1 = &uart1;
+		spi0 = &lsspi;
+		spi1 = &hsspi;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			compatible = "brcm,bmips4350", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <0>;
+		};
+
+		cpu@1 {
+			compatible = "brcm,bmips4350", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <1>;
+		};
+	};
+
+	cpu_intc: interrupt-controller {
+		#address-cells = <0>;
+		compatible = "mti,cpu-interrupt-controller";
+
+		interrupt-controller;
+		#interrupt-cells = <1>;
+	};
+
+	memory { device_type = "memory"; reg = <0 0>; };
+
+	ubus@10000000 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		compatible = "simple-bus";
+		interrupt-parent = <&periph_intc>;
+
+		ext_intc: interrupt-controller@10000018 {
+			compatible = "brcm,bcm6345-ext-intc";
+			reg = <0x10000018 0x4>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+
+			interrupts = <40>, <41>, <42>, <43>;
+		};
+
+		periph_intc: interrupt-controller@10000020 {
+			compatible = "brcm,bcm6345-l1-intc";
+			reg = <0x10000020 0x10>,
+			      <0x10000030 0x10>;
+
+			interrupt-controller;
+			#interrupt-cells = <1>;
+
+			interrupt-parent = <&cpu_intc>;
+			interrupts = <2>, <3>;
+		};
+
+		pinctrl: pin-controller@10000080 {
+			compatible = "brcm,bcm6362-pinctrl";
+			reg = <0x10000080 0x8>,
+			      <0x10000088 0x8>,
+			      <0x10000090 0x4>,
+			      <0x10000098 0x4>,
+			      <0x1000009c 0x4>,
+			      <0x100000b8 0x4>;
+			reg-names = "dirout", "dat", "led",
+				    "mode", "ctrl", "basemode";
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupt-parent = <&ext_intc>;
+			interrupts = <0 0>, <1 0>, <2 0>, <3 0>;
+			interrupt-names = "gpio24", "gpio25",
+					  "gpio26", "gpio27";
+
+			pinctrl_usb_device_led: usb_device_led {
+				function = "usb_device_led";
+				pins = "gpio0";
+			};
+
+			pinctrl_sys_irq: sys_irq {
+				function = "sys_irq";
+				pins = "gpio1";
+			};
+
+			pinctrl_serial_led: serial_led {
+				pinctrl_serial_led_clk: serial_led_clk {
+					function = "serial_led_clk";
+					pins = "gpio2";
+				};
+
+				pinctrl_serial_led_data: serial_led_data {
+					function = "serial_led_data";
+					pins = "gpio3";
+				};
+			};
+
+			pinctrl_robosw_led_data: robosw_led_data {
+				function = "robosw_led_data";
+				pins = "gpio4";
+			};
+
+			pinctrl_robosw_led_clk: robosw_led_clk {
+				function = "robosw_led_clk";
+				pins = "gpio5";
+			};
+
+			pinctrl_robosw_led0: robosw_led0 {
+				function = "robosw_led0";
+				pins = "gpio6";
+			};
+
+			pinctrl_robosw_led1: robosw_led1 {
+				function = "robosw_led1";
+				pins = "gpio7";
+			};
+
+			pinctrl_inet_led: inet_led {
+				function = "inet_led";
+				pins = "gpio8";
+			};
+
+			pinctrl_spi_cs2: spi_cs2 {
+				function = "spi_cs2";
+				pins = "gpio9";
+			};
+
+			pinctrl_spi_cs3: spi_cs3 {
+				function = "spi_cs3";
+				pins = "gpio10";
+			};
+
+			pinctrl_ntr_pulse: ntr_pulse {
+				function = "ntr_pulse";
+				pins = "gpio11";
+			};
+
+			pinctrl_uart1_scts: uart1_scts {
+				function = "uart1_scts";
+				pins = "gpio12";
+			};
+
+			pinctrl_uart1_srts: uart1_srts {
+				function = "uart1_srts";
+				pins = "gpio13";
+			};
+
+
+			pinctrl_uart1: uart1 {
+				pinctrl_uart1_sdin: uart1_sdin {
+					function = "uart1_sdin";
+					pins = "gpio14";
+				};
+
+				pinctrl_uart1_sdout: uart1_sdout {
+					function = "uart1_sdout";
+					pins = "gpio15";
+				};
+			};
+
+			pinctrl_adsl_spi: adsl_spi {
+				pinctrl_adsl_spi_miso: adsl_spi_miso {
+					function = "adsl_spi_miso";
+					pins = "gpio16";
+				};
+
+				pinctrl_adsl_spi_mosi: adsl_spi_mosi {
+					function = "adsl_spi_mosi";
+					pins = "gpio17";
+				};
+
+				pinctrl_adsl_spi_clk: adsl_spi_clk {
+					function = "adsl_spi_clk";
+					pins = "gpio18";
+				};
+
+				pinctrl_adsl_spi_cs: adsl_spi_cs {
+					function = "adsl_spi_cs";
+					pins = "gpio19";
+				};
+			};
+
+			pinctrl_ephy0_led: ephy0_led {
+				function = "ephy0_led";
+				pins = "gpio20";
+			};
+
+			pinctrl_ephy1_led: ephy1_led {
+				function = "ephy1_led";
+				pins = "gpio21";
+			};
+
+			pinctrl_ephy2_led: ephy2_led {
+				function = "ephy2_led";
+				pins = "gpio22";
+			};
+
+			pinctrl_ephy3_led: ephy3_led {
+				function = "ephy3_led";
+				pins = "gpio23";
+			};
+
+			pinctrl_ext_irq0: ext_irq0 {
+				function = "ext_irq0";
+				pins = "gpio24";
+			};
+
+			pinctrl_ext_irq1: ext_irq1 {
+				function = "ext_irq1";
+				pins = "gpio25";
+			};
+
+			pinctrl_ext_irq2: ext_irq2 {
+				function = "ext_irq2";
+				pins = "gpio26";
+			};
+
+			pinctrl_ext_irq3: ext_irq3 {
+				function = "ext_irq3";
+				pins = "gpio27";
+			};
+
+			pinctrl_nand: nand {
+				function = "nand";
+				group = "nand_grp";
+			};
+		};
+
+		uart0: serial@10000100 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0x10000100 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <3>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		uart1: serial@10000120 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0x10000120 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <4>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		lsspi: spi@10000800 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6358-spi";
+			reg = <0x10000800 0x70c>;
+			interrupts = <2>;
+			/* clocks = <&clkctl 15>; */
+		};
+
+		hsspi: spi@10001000 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6328-hsspi";
+			reg = <0x10001000 0x600>;
+			interrupts = <5>;
+			/* clocks = <&clkctl 16>; */
+		};
+
+		nflash: nand@10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v2.2",
+				     "brcm,brcmnand";
+			reg = <0x10000200 0x180>,
+			      <0x10000600 0x200>,
+			      <0x10000070 0x10>;
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <12>;
+
+			/* clocks = <&clkctl 20>; */
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&pinctrl_nand>;
+
+			status = "disabled";
+		};
+
+		leds: led-controller@10001900 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6328-leds";
+			reg = <0x10001900 0x24>;
+			status = "disabled";
+		};
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368-actiontec-r1000h.dts b/target/linux/bcm63xx/dts/bcm6368-actiontec-r1000h.dts
new file mode 100644
index 0000000..fa03896
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-actiontec-r1000h.dts
@@ -0,0 +1,113 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Actiontec R1000H";
+	compatible = "actiontec,r1000h", "brcm,bcm6368";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 35 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 5 0>;
+		};
+
+		usb_green {
+			label = "green:usb";
+			gpios = <&pinctrl 21 1>;
+		};
+
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 22 0>;
+			default-state = "on";
+		};
+
+		wps_green {
+			label = "green:wps";
+			gpios = <&pinctrl 23 1>;
+		};
+
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 24 0>;
+		};
+
+		wps_red {
+			label = "red:wps";
+			gpios = <&pinctrl 30 1>;
+		};
+
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 31 0>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		CFE@0 {
+			reg = <0x000000 0x020000>;
+			read-only;
+		};
+
+		linux@20000 {
+			reg = <0x020000 0x1fc0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@1fe0000 {
+			reg = <0x1fe0000 0x20000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&uart1 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368-adb-av4202n.dts b/target/linux/bcm63xx/dts/bcm6368-adb-av4202n.dts
new file mode 100644
index 0000000..fb1b4bc
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-adb-av4202n.dts
@@ -0,0 +1,112 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "ADB P.DG AV4202N";
+	compatible = "adb,av4202n", "brcm,bcm6368";
+
+	aliases {
+		led-boot = &led_power_white;
+		led-failsafe = &led_power_white;
+		led-running = &led_power_white;
+		led-upgrade = &led_power_white;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wlan {
+			label = "wlan";
+			gpios = <&pinctrl 37 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_white: power_white {
+			label = "white:power";
+			gpios = <&pinctrl 10 GPIO_ACTIVE_LOW>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 11 GPIO_ACTIVE_LOW>;
+		};
+		wan_white {
+			label = "white:wan";
+			gpios = <&pinctrl 26 GPIO_ACTIVE_LOW>;
+		};
+		wan_red {
+			label = "red:wan";
+			gpios = <&pinctrl 27 GPIO_ACTIVE_LOW>;
+		};
+		phone_white {
+			label = "white:phone";
+			gpios = <&pinctrl 24 GPIO_ACTIVE_LOW>;
+		};
+		phone_red {
+			label = "red:phone";
+			gpios = <&pinctrl 25 GPIO_ACTIVE_LOW>;
+		};
+		wifi {
+			label = "blue:wifi";
+			gpios = <&pinctrl 22 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x020000>;
+			read-only;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x020000 0xfc0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@fe0000 {
+			label = "nvram";
+			reg = <0xfe0000 0x020000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368-brcm-bcm96368mvngr.dts b/target/linux/bcm63xx/dts/bcm6368-brcm-bcm96368mvngr.dts
new file mode 100644
index 0000000..50c57d5
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-brcm-bcm96368mvngr.dts
@@ -0,0 +1,56 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM96368MVNgr reference board";
+	compatible = "brcm,bcm96368mvngr", "brcm,bcm6368";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		dsl_green {
+			label = "green:adsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		inet_fail_green {
+			label = "green:inet-fail";
+			gpios = <&pinctrl 3 0>;
+		};
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 5 0>;
+		};
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 22 0>;
+			default-state = "on";
+		};
+		wps_green {
+			label = "green:wps";
+			gpios = <&pinctrl 23 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "brcm,bcm963xx-cfe-nor-partitions";
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368-brcm-bcm96368mvwg.dts b/target/linux/bcm63xx/dts/bcm6368-brcm-bcm96368mvwg.dts
new file mode 100644
index 0000000..664e3e0
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-brcm-bcm96368mvwg.dts
@@ -0,0 +1,56 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Broadcom BCM96368MVWG reference board";
+	compatible = "brcm,bcm96368mvwg", "brcm,bcm6368";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		dsl_green {
+			label = "green:adsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		ppp_green {
+			label = "green:ppp";
+			gpios = <&pinctrl 5 0>;
+		};
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 22 0>;
+			default-state = "on";
+		};
+		wps_green {
+			label = "green:wps";
+			gpios = <&pinctrl 23 1>;
+		};
+		ppp_fail_red {
+			label = "red:ppp-fail";
+			gpios = <&pinctrl 31 0>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "brcm,bcm963xx-cfe-nor-partitions";
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3025u.dts b/target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3025u.dts
new file mode 100644
index 0000000..a237d18
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3025u.dts
@@ -0,0 +1,97 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Comtrend VR-3025u";
+	compatible = "comtrend,vr-3025u", "brcm,bcm6368";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		dsl_green {
+			label = "green:dsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 5 0>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 22 0>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 24 0>;
+		};
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 31 0>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x0000000 0x0020000>;
+			read-only;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x0020000 0x1fc0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@1fe0000 {
+			label = "nvram";
+			reg = <0x1fe0000 0x020000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ephy0_led &pinctrl_ephy1_led
+		     &pinctrl_ephy2_led &pinctrl_ephy3_led>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3025un.dts b/target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3025un.dts
new file mode 100644
index 0000000..2391fb0
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3025un.dts
@@ -0,0 +1,97 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Comtrend VR-3025un";
+	compatible = "comtrend,vr-3025un", "brcm,bcm6368";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		dsl_green {
+			label = "green:dsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 5 0>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 22 0>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 24 0>;
+		};
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 31 0>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x7e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@7f0000 {
+			label = "nvram";
+			reg = <0x7f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ephy0_led &pinctrl_ephy1_led
+		     &pinctrl_ephy2_led &pinctrl_ephy3_led>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3026e.dts b/target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3026e.dts
new file mode 100644
index 0000000..b17439e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3026e.dts
@@ -0,0 +1,97 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Comtrend VR-3026e";
+	compatible = "comtrend,vr-3026e", "brcm,bcm6368";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		dsl_green {
+			label = "green:dsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 5 0>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 22 0>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 24 0>;
+		};
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 31 0>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x7e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@7f0000 {
+			label = "nvram";
+			reg = <0x7f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ephy0_led &pinctrl_ephy1_led
+		     &pinctrl_ephy2_led &pinctrl_ephy3_led>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368-huawei-echolife-hg622.dts b/target/linux/bcm63xx/dts/bcm6368-huawei-echolife-hg622.dts
new file mode 100644
index 0000000..95e482b
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-huawei-echolife-hg622.dts
@@ -0,0 +1,96 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Huawei EchoLife HG622";
+	compatible = "huawei,echolife-hg622", "brcm,bcm6368";
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		dsl_green {
+			label = "green:dsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 5 1>;
+		};
+		usb_green {
+			label = "green:usb";
+			gpios = <&pinctrl 11 1>;
+		};
+		power_green {
+			label = "green:power";
+			gpios = <&pinctrl 22 1>;
+			default-state = "on";
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x020000>;
+			read-only;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x020000 0xf80000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		cal_data@fa0000 {
+			label = "cal_data";
+			reg = <0xfa0000 0x020000>;
+			read-only;
+		};
+
+		nvram@fe0000 {
+			label = "nvram";
+			reg = <0xfe0000 0x020000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_ephy0_led &pinctrl_ephy1_led
+		     &pinctrl_ephy2_led &pinctrl_ephy3_led
+		     &pinctrl_pci_gnt0 &pinctrl_pci_req0
+		     &pinctrl_pci_intb &pinctrl_pci_gnt1
+		     &pinctrl_pci_req1>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368-huawei-echolife-hg655b.dts b/target/linux/bcm63xx/dts/bcm6368-huawei-echolife-hg655b.dts
new file mode 100644
index 0000000..124b5ca
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-huawei-echolife-hg655b.dts
@@ -0,0 +1,126 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Huawei EchoLife HG655b";
+	compatible = "huawei,echolife-hg655b", "brcm,bcm6368";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 12 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+
+		wlan {
+			label = "wlan";
+			gpios = <&pinctrl 23 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		dsl_green {
+			label = "green:dsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		internet_green {
+			label = "green:internet";
+			gpios = <&pinctrl 5 1>;
+		};
+
+		usb_green {
+			label = "green:usb";
+			gpios = <&pinctrl 14 1>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 22 1>;
+			default-state = "on";
+		};
+		voip_green {
+			label = "green:voip";
+			gpios = <&pinctrl 25 1>;
+		};
+		wps_green {
+			label = "green:wps";
+			gpios = <&pinctrl 27 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x020000>;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x020000 0x770000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		board_data@790000 {
+			label = "board_data";
+			reg = <0x790000 0x030000>;
+		};
+
+		cal_data@7c0000 {
+			label = "cal_data";
+			reg = <0x7c0000 0x020000>;
+			read-only;
+		};
+
+		nvram@7d0000 {
+			label = "nvram";
+			reg = <0x7e0000 0x020000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci &pinctrl_ephy0_led &pinctrl_ephy1_led
+		     &pinctrl_ephy2_led &pinctrl_ephy3_led>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368-netgear-dgnd3700-v1.dts b/target/linux/bcm63xx/dts/bcm6368-netgear-dgnd3700-v1.dts
new file mode 100644
index 0000000..700adea
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-netgear-dgnd3700-v1.dts
@@ -0,0 +1,216 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Netgear DGND3700v1/DGND3800B";
+	compatible = "netgear,dgnd3700-v1", "brcm,bcm6368";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wlan {
+			label = "wlan";
+			gpios = <&pinctrl 10 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 12 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 35 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		dsl_green {
+			label = "green:dsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 4 1>;
+		};
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 5 1>;
+		};
+		wps_green {
+			label = "green:wps";
+			gpios = <&pinctrl 11 1>;
+		};
+		usbfront_green {
+			label = "green:usb-front";
+			gpios = <&pinctrl 13 1>;
+		};
+		usbback_green {
+			label = "green:usb-back";
+			gpios = <&pinctrl 14 1>;
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 22 1>;
+		};
+		lan_green {
+			label = "green:lan";
+			gpios = <&pinctrl 23 1>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 24 1>;
+			default-state = "on";
+		};
+		wifi2g_green {
+			label = "green:wifi2g";
+			gpios = <&pinctrl 26 1>;
+		};
+		wifi5g_blue {
+			label = "blue:wifi5g";
+			gpios = <&pinctrl 27 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x020000>;
+			read-only;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x020000 0x1e20000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		board_data@1e40000 {
+			label = "board_data";
+			reg = <0x1e40000 0x1a0000>;
+			read-only;
+		};
+
+		nvram@1fe0000 {
+			label = "nvram";
+			reg = <0x1fe0000 0x20000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci>;
+};
+
+&lsspi {
+	switch@1 {
+		compatible = "brcm,bcm53115";
+		reg = <1>;
+		spi-max-frequency = <781000>;
+
+		lede,alias = "eth0";
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			wan@0 {
+				reg = <0>;
+				label = "wan";
+			};
+
+			lan@1 {
+				reg = <1>;
+				label = "lan4";
+			};
+
+			lan@2 {
+				reg = <2>;
+				label = "lan3";
+			};
+
+			lan@3 {
+				reg = <3>;
+				label = "lan2";
+			};
+
+			lan@4 {
+				reg = <4>;
+				label = "lan1";
+			};
+
+			cpu@8 {
+				reg = <8>;
+				label = "cpu";
+
+				fixed-link {
+					speed = <1000>;
+					full-duplex;
+				};
+			};
+		};
+	};
+};
+
+&nflash {
+	status = "okay";
+
+	nandcs@0 {
+		compatible = "brcm,nandcs";
+		#size-cells = <1>;
+		#address-cells = <1>;
+		reg = <0>;
+		nand-ecc-step-size = <512>;
+		nand-ecc-strength = <15>;
+		nand-on-flash-bbt;
+		brcm,nand-oob-sector-size = <64>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "storage";
+				reg = <0x0000000 0x8000000>;
+			};
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368-observa-vh4032n.dts b/target/linux/bcm63xx/dts/bcm6368-observa-vh4032n.dts
new file mode 100644
index 0000000..9ed3cc2
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-observa-vh4032n.dts
@@ -0,0 +1,123 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Observa VH4032N";
+	compatible = "observa,vh4032n", "brcm,bcm6368";
+
+	aliases {
+		led-boot = &led_power_blue;
+		led-failsafe = &led_power_blue;
+		led-running = &led_power_blue;
+		led-upgrade = &led_power_blue;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wlan {
+			label = "wlan";
+			gpios = <&pinctrl 35 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		dsl_blue {
+			label = "blue:dsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		dsl_red {
+			label = "red:dsl";
+			gpios = <&pinctrl 5 1>;
+		};
+		hspa_blue {
+			label = "blue:hspa";
+			gpios = <&pinctrl 11 1>;
+		};
+		hspa_red {
+			label = "red:hspa";
+			gpios = <&pinctrl 12 1>;
+		};
+		led_power_blue: power_blue {
+			label = "blue:power";
+			gpios = <&pinctrl 22 0>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 24 0>;
+		};
+		voice_blue {
+			label = "blue:voice";
+			gpios = <&pinctrl 25 1>;
+		};
+		voice_red {
+			label = "red:voice";
+			gpios = <&pinctrl 26 1>;
+		};
+	};
+};
+
+&pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pci &pinctrl_ephy0_led &pinctrl_ephy1_led
+		    &pinctrl_ephy2_led &pinctrl_ephy3_led>;
+
+	usb_hub_reset {
+		gpio-hog;
+		gpios = <27 0>;
+		output-high;
+		line-name = "usb-hub-reset-gpio";
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x0000000 0x0020000>;
+			read-only;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x0020000 0x1fc0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@1fe0000 {
+			label = "nvram";
+			reg = <0x1fe0000 0x020000>;
+		};
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368-zyxel-p870hw-51a-v2.dts b/target/linux/bcm63xx/dts/bcm6368-zyxel-p870hw-51a-v2.dts
new file mode 100644
index 0000000..0bc66fb
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-zyxel-p870hw-51a-v2.dts
@@ -0,0 +1,103 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Zyxel P870HW-51a v2";
+	compatible = "zyxel,p870hw-51a-v2", "brcm,bcm6368";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 35 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 36 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 0 0>;
+			default-state = "on";
+		};
+		dsl_green {
+			label = "green:dsl";
+			gpios = <&pinctrl 2 1>;
+		};
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 22 1>;
+		};
+		wps_orange {
+			label = "orange:wps";
+			gpios = <&pinctrl 24 1>;
+		};
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 33 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x3e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@3f0000 {
+			label = "nvram";
+			reg = <0x3f0000 0x010000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368.dtsi b/target/linux/bcm63xx/dts/bcm6368.dtsi
new file mode 100644
index 0000000..0e9610d
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368.dtsi
@@ -0,0 +1,343 @@
+/dts-v1/;
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+	compatible = "brcm,bcm6368";
+
+	aliases {
+		nflash = &nflash;
+		pflash = &pflash;
+		pinctrl = &pinctrl;
+		serial0 = &uart0;
+		serial1 = &uart1;
+		spi0 = &lsspi;
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			compatible = "brcm,bmips4350", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <0>;
+		};
+
+		cpu@1 {
+			compatible = "brcm,bmips4350", "mips,mips4Kc";
+			device_type = "cpu";
+			reg = <1>;
+		};
+	};
+
+	cpu_intc: interrupt-controller {
+		#address-cells = <0>;
+		compatible = "mti,cpu-interrupt-controller";
+
+		interrupt-controller;
+		#interrupt-cells = <1>;
+	};
+
+	memory { device_type = "memory"; reg = <0 0>; };
+
+	ubus@10000000 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		compatible = "simple-bus";
+		interrupt-parent = <&periph_intc>;
+
+		ext_intc0: interrupt-controller@10000018 {
+			compatible = "brcm,bcm6345-ext-intc";
+			reg = <0x10000018 0x4>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+
+			interrupts = <20>, <21>, <22>, <23>;
+		};
+
+		ext_intc1: interrupt-controller@1000001c {
+			compatible = "brcm,bcm6345-ext-intc";
+			reg = <0x1000001c 0x4>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+
+			interrupts = <24>, <25>;
+		};
+
+		periph_intc: interrupt-controller@10000020 {
+			compatible = "brcm,bcm6345-l1-intc";
+			reg = <0x10000020 0x10>,
+			      <0x10000030 0x10>;
+
+			interrupt-controller;
+			#interrupt-cells = <1>;
+
+			interrupt-parent = <&cpu_intc>;
+			interrupts = <2>, <3>;
+		};
+
+		pinctrl: pin-controller@10000080 {
+			compatible = "brcm,bcm6368-pinctrl";
+			reg = <0x10000080 0x8>,
+			      <0x10000088 0x8>,
+			      <0x10000098 0x4>;
+			reg-names = "dirout", "dat", "mode";
+			brcm,gpiobasemode = <&gpiobasemode>;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			interrupts-extended = <&ext_intc1 0 0>,
+					      <&ext_intc1 1 0>,
+					      <&ext_intc0 0 0>,
+					      <&ext_intc0 1 0>,
+					      <&ext_intc0 2 0>,
+					      <&ext_intc0 3 0>;
+			interrupt-names = "gpio32", "gpio33", "gpio34", "gpio35",
+					  "gpio36", "gpio37";
+
+			pinctrl_analog_afe_0: analog_afe_0 {
+				function = "analog_afe_0";
+				pins = "gpio0";
+			};
+
+			pinctrl_analog_afe_1: analog_afe_1 {
+				function = "analog_afe_1";
+				pins = "gpio1";
+			};
+
+			pinctrl_sys_irq: sys_irq {
+				function = "sys_irq";
+				pins = "gpio2";
+			};
+
+			pinctrl_serial_led: serial_led {
+				pinctrl_serial_led_data: serial_led_data {
+					function = "serial_led_data";
+					pins = "gpio3";
+				};
+
+				pinctrl_serial_led_clk: serial_led_clk {
+					function = "serial_led_clk";
+					pins = "gpio4";
+				};
+			};
+
+			pinctrl_inet_led: inet_led {
+				function = "inet_led";
+				pins = "gpio5";
+			};
+
+			pinctrl_ephy0_led: ephy0_led {
+				function = "ephy0_led";
+				pins = "gpio6";
+			};
+
+			pinctrl_ephy1_led: ephy1_led {
+				function = "ephy1_led";
+				pins = "gpio7";
+			};
+
+			pinctrl_ephy2_led: ephy2_led {
+				function = "ephy2_led";
+				pins = "gpio8";
+			};
+
+			pinctrl_ephy3_led: ephy3_led {
+				function = "ephy3_led";
+				pins = "gpio9";
+			};
+
+			pinctrl_robosw_led_data: robosw_led_data {
+				function = "robosw_led_data";
+				pins = "gpio10";
+			};
+
+			pinctrl_robosw_led_clk: robosw_led_clk {
+				function = "robosw_led_clk";
+				pins = "gpio11";
+			};
+
+			pinctrl_robosw_led0: robosw_led0 {
+				function = "robosw_led0";
+				pins = "gpio12";
+			};
+
+			pinctrl_robosw_led1: robosw_led1 {
+				function = "robosw_led1";
+				pins = "gpio13";
+			};
+
+			pinctrl_usb_device_led: usb_device_led {
+				function = "usb_device_led";
+				pins = "gpio14";
+			};
+
+			pinctrl_pci: pci {
+				pinctrl_pci_req1: pci_req1 {
+					function = "pci_req1";
+					pins = "gpio16";
+				};
+
+				pinctrl_pci_gnt1: pci_gnt1 {
+					function = "pci_gnt1";
+					pins = "gpio17";
+				};
+
+				pinctrl_pci_intb: pci_intb {
+					function = "pci_intb";
+					pins = "gpio18";
+				};
+
+				pinctrl_pci_req0: pci_req0 {
+					function = "pci_req0";
+					pins = "gpio19";
+				};
+
+				pinctrl_pci_gnt0: pci_gnt0 {
+					function = "pci_gnt0";
+					pins = "gpio20";
+				};
+			};
+
+			pinctrl_pcmcia: pcmcia {
+				pinctrl_pcmcia_cd1: pcmcia_cd1 {
+					function = "pcmcia_cd1";
+					pins = "gpio22";
+				};
+
+				pinctrl_pcmcia_cd2: pcmcia_cd2 {
+					function = "pcmcia_cd2";
+					pins = "gpio23";
+				};
+
+				pinctrl_pcmcia_vs1: pcmcia_vs1 {
+					function = "pcmcia_vs1";
+					pins = "gpio24";
+				};
+
+				pinctrl_pcmcia_vs2: pcmcia_vs2 {
+					function = "pcmcia_vs2";
+					pins = "gpio25";
+				};
+			};
+
+			pinctrl_ebi_cs2: ebi_cs2 {
+				function = "ebi_cs2";
+				pins = "gpio26";
+			};
+
+			pinctrl_ebi_cs3: ebi_cs3 {
+				function = "ebi_cs2";
+				pins = "gpio27";
+			};
+
+			pinctrl_spi_cs2: spi_cs2 {
+				function = "spi_cs2";
+				pins = "gpio28";
+			};
+
+			pinctrl_spi_cs3: spi_cs3 {
+				function = "spi_cs3";
+				pins = "gpio29";
+			};
+
+			pinctrl_spi_cs4: spi_cs4 {
+				function = "spi_cs4";
+				pins = "gpio30";
+			};
+
+			pinctrl_spi_cs5: spi_cs5 {
+				function = "spi_cs5";
+				pins = "gpio31";
+			};
+
+			pinctrl_uart1: uart1 {
+				function = "uart1";
+				group = "uart1_grp";
+			};
+		};
+
+		gpiobasemode: gpiobasemode@100000b8 {
+			compatible = "brcm,bcm6368-gpiobasemode", "syscon";
+			reg = <0x100000b8 0x4>;
+		};
+
+		leds: led-controller@100000d0 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6358-leds";
+			reg = <0x100000d0 0x8>;
+			status = "disabled";
+		};
+
+		uart0: serial@10000100 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0x10000100 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <2>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		uart1: serial@10000120 {
+			compatible = "brcm,bcm6345-uart";
+			reg = <0x10000120 0x18>;
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <3>;
+
+			/* clocks = <&periph_clk>; */
+			/* clock-names = "refclk"; */
+
+			status = "disabled";
+		};
+
+		nflash: nand@10000200 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,nand-bcm6368",
+				     "brcm,brcmnand-v2.1",
+				     "brcm,brcmnand";
+			reg = <0x10000200 0x180>,
+			      <0x10000600 0x200>,
+			      <0x10000070 0x10>;
+			reg-names = "nand",
+				    "nand-cache",
+				    "nand-int-base";
+
+			interrupt-parent = <&periph_intc>;
+			interrupts = <10>;
+
+			/* clocks = <&clkctl 17>; */
+
+			status = "disabled";
+		};
+
+		lsspi: spi@10000800 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "brcm,bcm6358-spi";
+			reg = <0x10000800 0x70c>;
+			interrupts = <1>;
+			/* clocks = <&clkctl 9>; */
+		};
+	};
+
+	pflash: nor@18000000 {
+		compatible = "cfi-flash";
+		reg = <0x18000000 0x2000000>;
+		bank-width = <2>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+		status = "disabled";
+	};
+};
diff --git a/target/linux/bcm63xx/dts/bcm6369-comtrend-wap-5813n.dts b/target/linux/bcm63xx/dts/bcm6369-comtrend-wap-5813n.dts
new file mode 100644
index 0000000..2f0ec53
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6369-comtrend-wap-5813n.dts
@@ -0,0 +1,162 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Comtrend WAP-5813n";
+	compatible = "comtrend,wap-5813n", "brcm,bcm6369", "brcm,bcm6368";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		wlan {
+			label = "wlan";
+			gpios = <&pinctrl 32 1>;
+			linux,code = <KEY_WLAN>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 34 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 35 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 5 0>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 22 0>;
+			default-state = "on";
+		};
+		wps_green {
+			label = "green:wps";
+			gpios = <&pinctrl 23 1>;
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 24 0>;
+		};
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 31 0>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x000000 0x010000>;
+			read-only;
+		};
+
+		linux@10000 {
+			label = "linux";
+			reg = <0x010000 0x7e0000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		nvram@7f0000 {
+			label = "nvram";
+			reg = <0x7f0000 0x010000>;
+		};
+	};
+};
+
+&lsspi {
+	switch@0 {
+		compatible = "brcm,bcm53115";
+		reg = <0>;
+		spi-max-frequency = <781000>;
+
+		lede,alias = "eth0";
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			lan@0 {
+				reg = <0>;
+				label = "lan4";
+			};
+
+			lan@1 {
+				reg = <1>;
+				label = "lan3";
+			};
+
+			lan@2 {
+				reg = <2>;
+				label = "lan2";
+			};
+
+			lan@3 {
+				reg = <3>;
+				label = "lan1";
+			};
+
+			wan@4 {
+				reg = <4>;
+				label = "wan";
+			};
+
+			cpu@5 {
+				reg = <5>;
+				label = "cpu";
+
+				fixed-link {
+					speed = <1000>;
+					full-duplex;
+					asym-pause;
+					pause;
+				};
+			};
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci>;
+};
+
+&uart0 {
+	status = "okay";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6369-netgear-evg2000.dts b/target/linux/bcm63xx/dts/bcm6369-netgear-evg2000.dts
new file mode 100644
index 0000000..b96ba7e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6369-netgear-evg2000.dts
@@ -0,0 +1,129 @@
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "Netgear EVG2000";
+	compatible = "netgear,evg2000", "brcm,bcm6369", "brcm,bcm6368";
+
+	aliases {
+		led-boot = &led_power_green;
+		led-failsafe = &led_power_green;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_green;
+	};
+
+	chosen {
+		bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+		stdout-path = "serial0:115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&pinctrl 25 1>;
+			linux,code = <KEY_RESTART>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&pinctrl 26 1>;
+			linux,code = <KEY_WPS_BUTTON>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		voip1_green {
+			label = "green:voip1";
+			gpios = <&pinctrl 14 1>;
+		};
+		voip2_green {
+			label = "green:voip2";
+			gpios = <&pinctrl 2 1>;
+		};
+		inet_red {
+			label = "red:inet";
+			gpios = <&pinctrl 4 1>;
+		};
+		inet_green {
+			label = "green:inet";
+			gpios = <&pinctrl 5 1>;
+		};
+		usb_green {
+			label = "green:usb";
+			gpios = <&pinctrl 15 1>;
+		};
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&pinctrl 22 1>;
+			default-state = "on";
+		};
+		power_red {
+			label = "red:power";
+			gpios = <&pinctrl 23 1>;
+		};
+		lan_green {
+			label = "green:lan";
+			gpios = <&pinctrl 24 1>;
+		};
+		wireless_green {
+			label = "green:wireless";
+			gpios = <&pinctrl 26 1>;
+		};
+		wan_green {
+			label = "green:wan";
+			gpios = <&pinctrl 27 1>;
+		};
+	};
+};
+
+&pflash {
+	status = "okay";
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		cfe@0 {
+			label = "CFE";
+			reg = <0x00000000 0x00020000>;
+			read-only;
+		};
+
+		linux@20000 {
+			label = "linux";
+			reg = <0x00020000 0x00f40000>;
+			compatible = "brcm,bcm963xx-imagetag";
+		};
+
+		board_data@f60000 {
+			label = "board_data";
+			reg = <0x00f60000 0x00080000>;
+			read-only;
+		};
+
+		nvram@fe0000 {
+			label = "nvram";
+			reg = <0x00fe0000 0x00020000>;
+		};
+	};
+};
+
+&pinctrl {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_pci>;
+};
+
+&uart0 {
+	status = "okay";
+};