aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm63xx/dts
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm63xx/dts')
-rw-r--r--target/linux/bcm63xx/dts/bcm3368-netgear-cvg834g.dts60
-rw-r--r--target/linux/bcm63xx/dts/bcm3368.dtsi133
-rw-r--r--target/linux/bcm63xx/dts/bcm63168-sky-sr102.dts118
-rw-r--r--target/linux/bcm63xx/dts/bcm6318-brcm-bcm96318ref-p300.dts89
-rw-r--r--target/linux/bcm63xx/dts/bcm6318-brcm-bcm96318ref.dts83
-rw-r--r--target/linux/bcm63xx/dts/bcm6318-comtrend-ar-5315u.dts118
-rw-r--r--target/linux/bcm63xx/dts/bcm6318-d-link-dsl-275xb-d1.dts133
-rw-r--r--target/linux/bcm63xx/dts/bcm6318-sagem-fast-2704n.dts135
-rw-r--r--target/linux/bcm63xx/dts/bcm6318.dtsi200
-rw-r--r--target/linux/bcm63xx/dts/bcm63268-brcm-bcm963268bu-p300.dts59
-rw-r--r--target/linux/bcm63xx/dts/bcm63268-inteno-vg50.dts59
-rw-r--r--target/linux/bcm63xx/dts/bcm63268.dtsi250
-rw-r--r--target/linux/bcm63xx/dts/bcm63269-brcm-bcm963269bhr.dts66
-rw-r--r--target/linux/bcm63xx/dts/bcm6328-adb-a4001n.dts101
-rw-r--r--target/linux/bcm63xx/dts/bcm6328-adb-a4001n1.dts132
-rw-r--r--target/linux/bcm63xx/dts/bcm6328-brcm-bcm963281tan.dts68
-rw-r--r--target/linux/bcm63xx/dts/bcm6328-brcm-bcm96328avng.dts73
-rw-r--r--target/linux/bcm63xx/dts/bcm6328-comtrend-ar-5381u.dts89
-rw-r--r--target/linux/bcm63xx/dts/bcm6328-comtrend-ar-5387un.dts97
-rw-r--r--target/linux/bcm63xx/dts/bcm6328-d-link-dsl-274xb-f1.dts121
-rw-r--r--target/linux/bcm63xx/dts/bcm6328-nucom-r5010un-v2.dts113
-rw-r--r--target/linux/bcm63xx/dts/bcm6328-sagem-fast-2704-v2.dts119
-rw-r--r--target/linux/bcm63xx/dts/bcm6328-sercomm-ad1018-nor.dts146
-rw-r--r--target/linux/bcm63xx/dts/bcm6328.dtsi199
-rw-r--r--target/linux/bcm63xx/dts/bcm6338-brcm-bcm96338gw.dts53
-rw-r--r--target/linux/bcm63xx/dts/bcm6338-brcm-bcm96338w.dts53
-rw-r--r--target/linux/bcm63xx/dts/bcm6338-d-link-dsl-2640u.dts66
-rw-r--r--target/linux/bcm63xx/dts/bcm6338-dynalink-rta1320.dts68
-rw-r--r--target/linux/bcm63xx/dts/bcm6338.dtsi105
-rw-r--r--target/linux/bcm63xx/dts/bcm6345-brcm-bcm96345gw2.dts27
-rw-r--r--target/linux/bcm63xx/dts/bcm6345-dynalink-rta770bw.dts84
-rw-r--r--target/linux/bcm63xx/dts/bcm6345-dynalink-rta770w.dts84
-rw-r--r--target/linux/bcm63xx/dts/bcm6345.dtsi94
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-asmax-ar-1004g.dts83
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-belkin-f5d7633.dts91
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw-10.dts72
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw-11.dts72
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw.dts72
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348r.dts58
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-bt-voyager-2110.dts90
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-bt-voyager-2500v-bb.dts90
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-comtrend-ct-5365.dts97
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-comtrend-ct-536plus.dts79
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-d-link-dsl-2640b-b.dts87
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-davolink-dv-201amr.dts51
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-dynalink-rta1025w.dts51
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-inventel-livebox-1.dts84
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-netgear-dg834g-v4.dts87
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-netgear-dg834gt-pn.dts91
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-sagem-fast-2404.dts51
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-sagem-fast-2604.dts87
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-t-com-speedport-w-500v.dts91
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-tecom-gw6000.dts65
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-tecom-gw6200.dts86
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-telsey-cpva502plus.dts79
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-telsey-magic.dts91
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-tp-link-td-w8900gb.dts91
-rw-r--r--target/linux/bcm63xx/dts/bcm6348-usrobotics-usr9108.dts64
-rw-r--r--target/linux/bcm63xx/dts/bcm6348.dtsi153
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-alcatel-rg100a.dts68
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-brcm-bcm96358vw.dts53
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-brcm-bcm96358vw2.dts49
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-bt-home-hub-2-a.dts171
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-comtrend-ct-6373.dts109
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-d-link-dsl-2650u.dts68
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-d-link-dsl-274xb-c2.dts86
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-d-link-dva-g3810bn-tl.dts86
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg553.dts109
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-a.dts146
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-b.dts146
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-c.dts141
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-pirelli-a226g.dts125
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-pirelli-a226m-fwb.dts125
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-pirelli-a226m.dts125
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-pirelli-agpf-s0.dts129
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-sfr-neufbox-4-foxconn-r1.dts118
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-sfr-neufbox-4-sercomm-r0.dts118
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-t-com-speedport-w-303v.dts97
-rw-r--r--target/linux/bcm63xx/dts/bcm6358-telsey-cpva642.dts113
-rw-r--r--target/linux/bcm63xx/dts/bcm6358.dtsi203
-rw-r--r--target/linux/bcm63xx/dts/bcm6359-huawei-echolife-hg520v.dts69
-rw-r--r--target/linux/bcm63xx/dts/bcm6361-sfr-neufbox-6-sercomm-r0.dts100
-rw-r--r--target/linux/bcm63xx/dts/bcm6362-sagem-fast-2504n.dts108
-rw-r--r--target/linux/bcm63xx/dts/bcm6362.dtsi294
-rw-r--r--target/linux/bcm63xx/dts/bcm6368-actiontec-r1000h.dts108
-rw-r--r--target/linux/bcm63xx/dts/bcm6368-adb-av4202n.dts102
-rw-r--r--target/linux/bcm63xx/dts/bcm6368-brcm-bcm96368mvngr.dts58
-rw-r--r--target/linux/bcm63xx/dts/bcm6368-brcm-bcm96368mvwg.dts58
-rw-r--r--target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3025u.dts92
-rw-r--r--target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3025un.dts92
-rw-r--r--target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3026e.dts92
-rw-r--r--target/linux/bcm63xx/dts/bcm6368-huawei-echolife-hg622.dts96
-rw-r--r--target/linux/bcm63xx/dts/bcm6368-huawei-echolife-hg655b.dts121
-rw-r--r--target/linux/bcm63xx/dts/bcm6368-netgear-dgnd3700-v1.dts185
-rw-r--r--target/linux/bcm63xx/dts/bcm6368-observa-vh4032n.dts118
-rw-r--r--target/linux/bcm63xx/dts/bcm6368-zyxel-p870hw-51a-v2.dts98
-rw-r--r--target/linux/bcm63xx/dts/bcm6368.dtsi319
-rw-r--r--target/linux/bcm63xx/dts/bcm6369-comtrend-wap-5813n.dts157
-rw-r--r--target/linux/bcm63xx/dts/bcm6369-netgear-evg2000.dts124
99 files changed, 10284 insertions, 0 deletions
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 0000000000..2b25d009b3
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm3368-netgear-cvg834g.dts
@@ -0,0 +1,60 @@
+/dts-v1/;
+
+#include "bcm3368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Netgear CVG834G";
+ compatible = "netgear,cvg834g", "brcm,bcm3368";
+
+ chosen {
+ bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+ stdout-path = "serial0:115200n8";
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ power_green {
+ label = "CVG834G:green:power";
+ gpios = <&gpio1 5 0>;
+ default-state = "on";
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
+
+&uart1 {
+ status = "ok";
+};
diff --git a/target/linux/bcm63xx/dts/bcm3368.dtsi b/target/linux/bcm63xx/dts/bcm3368.dtsi
new file mode 100644
index 0000000000..66cb6ab8a8
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm3368.dtsi
@@ -0,0 +1,133 @@
+/ {
+ #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/bcm63168-sky-sr102.dts b/target/linux/bcm63xx/dts/bcm63168-sky-sr102.dts
new file mode 100644
index 0000000000..e47822af89
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63168-sky-sr102.dts
@@ -0,0 +1,118 @@
+/dts-v1/;
+
+#include "bcm63268.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "SKY SR102";
+ compatible = "sky,sr102", "brcm,bcm63168", "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>;
+
+ wps {
+ label = "wps";
+ gpios = <&pinctrl 33 0>;
+ linux,code = <KEY_WPS_BUTTON>;
+ debounce-interval = <60>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ lan1_green {
+ label = "SR102:green:lan1";
+ gpios = <&pinctrl 1 1>;
+ };
+ power_red {
+ label = "SR102:red:power";
+ gpios = <&pinctrl 2 1>;
+ };
+ wifi_red {
+ label = "SR102:red:wifi";
+ gpios = <&pinctrl 3 1>;
+ };
+ inet_red {
+ label = "SR102:red:inet";
+ gpios = <&pinctrl 4 1>;
+ };
+ inet_white {
+ label = "SR102:white:inet";
+ gpios = <&pinctrl 5 0>;
+ };
+ power_white {
+ label = "SR102:white:power";
+ gpios = <&pinctrl 6 0>;
+ default-state = "on";
+ };
+ wifi_white {
+ label = "SR102:white:wifi";
+ gpios = <&pinctrl 8 0>;
+ };
+ lan2_red {
+ label = "SR102:red:lan2";
+ gpios = <&pinctrl 9 1>;
+ };
+ lan3_red {
+ label = "SR102:red:lan3";
+ gpios = <&pinctrl 10 1>;
+ };
+ lan4_red {
+ label = "SR102:red:lan4";
+ gpios = <&pinctrl 11 1>;
+ };
+ lan1_red {
+ label = "SR102:red:lan1";
+ gpios = <&pinctrl 12 1>;
+ };
+ lan2_green {
+ label = "SR102:green:lan2";
+ gpios = <&pinctrl 13 0>;
+ };
+ lan3_green {
+ label = "SR102:green:lan3";
+ gpios = <&pinctrl 14 1>;
+ };
+ lan4_green {
+ label = "SR102:green:lan4";
+ gpios = <&pinctrl 15 1>;
+ };
+ hd_white {
+ label = "SR102:white:hd";
+ gpios = <&pinctrl 18 0>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..4edab6418c
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6318-brcm-bcm96318ref-p300.dts
@@ -0,0 +1,89 @@
+/dts-v1/;
+
+#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 = "96318REF_P300:green:inet";
+ gpios = <&pinctrl 8 1>;
+ };
+
+ inet_fail {
+ label = "96318REF_P300:red:inet-fail";
+ gpios = <&pinctrl 9 1>;
+ };
+
+ post_failed {
+ label = "96318REF_P300:red:post-failed";
+ gpios = <&pinctrl 11 1>;
+ };
+
+ usb_pwron {
+ label = "96318REF_P300::usb-pwron";
+ gpios = <&pinctrl 13 1>;
+ default-state = "on";
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..f6136b5886
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6318-brcm-bcm96318ref.dts
@@ -0,0 +1,83 @@
+/dts-v1/;
+
+#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 = "96318REF:green:inet";
+ gpios = <&pinctrl 8 1>;
+ };
+
+ inet_fail {
+ label = "96318REF:red:inet-fail";
+ gpios = <&pinctrl 9 1>;
+ };
+
+ post_failed {
+ label = "96318REF:red:post-failed";
+ gpios = <&pinctrl 11 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..d1085e7eed
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6318-comtrend-ar-5315u.dts
@@ -0,0 +1,118 @@
+/dts-v1/;
+
+#include "bcm6318.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Comtrend AR-5315u";
+ compatible = "comtrend,ar-5315u", "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 3 1>;
+ linux,code = <KEY_WPS_BUTTON>;
+ debounce-interval = <60>;
+ };
+
+ reset {
+ label = "reset";
+ gpios = <&pinctrl 33 1>;
+ linux,code = <KEY_RESTART>;
+ debounce-interval = <60>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ wps_green {
+ label = "AR-5315u:green:wps";
+ gpios = <&pinctrl 0 1>;
+ };
+ power_green {
+ label = "AR-5315u:green:power";
+ gpios = <&pinctrl 1 1>;
+ default-state = "on";
+ };
+ usb_green {
+ label = "AR-5315u:green:usb";
+ gpios = <&pinctrl 2 1>;
+ };
+ inet_green {
+ label = "AR-5315u:green:inet";
+ gpios = <&pinctrl 8 1>;
+ };
+ inet_red {
+ label = "AR-5315u:red:inet";
+ gpios = <&pinctrl 9 1>;
+ };
+ dsl_green {
+ label = "AR-5315u:green:dsl";
+ gpios = <&pinctrl 10 1>;
+ };
+ power_red {
+ label = "AR-5315u:red:power";
+ gpios = <&pinctrl 11 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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";
+ };
+ };
+ };
+};
+
+&pinctrl {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_ephy0_act_led &pinctrl_ephy1_act_led
+ &pinctrl_ephy2_act_led &pinctrl_ephy3_act_led>;
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..cf5b296cb7
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6318-d-link-dsl-275xb-d1.dts
@@ -0,0 +1,133 @@
+/dts-v1/;
+
+#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";
+
+ 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";
+
+ power_green {
+ label = "dsl-275xb:green:power";
+ gpios = <&pinctrl 3 1>;
+ default-state = "on";
+ };
+
+ inet_green {
+ label = "dsl-275xb:green:inet";
+ gpios = <&pinctrl 8 1>;
+ };
+
+ inet_red {
+ label = "dsl-275xb:red:inet-fail";
+ gpios = <&pinctrl 9 1>;
+ };
+
+ power_red {
+ label = "dsl-275xb:red:post-failed";
+ gpios = <&pinctrl 11 1>;
+ };
+
+ wps_blue {
+ label = "dsl-275xb:blue:wps";
+ gpios = <&pinctrl 16 1>;
+ };
+
+ dsl_green {
+ label = "dsl-275xb:green:dsl";
+ gpios = <&pinctrl 17 1>;
+ };
+
+ usb_green {
+ /* not user controllable? */
+ label = "dsl-275xb:green:usb";
+ gpios = <&pinctrl 49 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..f09310e2bb
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6318-sagem-fast-2704n.dts
@@ -0,0 +1,135 @@
+/dts-v1/;
+
+#include "bcm6318.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Sagem F@st 2704N";
+ compatible = "sagem,fast-2704n", "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>;
+
+ 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 = "F@ST2704N:green:wps";
+ gpios = <&pinctrl 2 1>;
+ };
+ lan1_green {
+ label = "F@ST2704N:green:lan1";
+ gpios = <&pinctrl 4 1>;
+ };
+ lan2_green {
+ label = "F@ST2704N:green:lan2";
+ gpios = <&pinctrl 5 1>;
+ };
+ lan3_green {
+ label = "F@ST2704N:green:lan3";
+ gpios = <&pinctrl 6 1>;
+ };
+ lan4_green {
+ label = "F@ST2704N:green:lan4";
+ gpios = <&pinctrl 7 1>;
+ };
+ inet_green {
+ label = "F@ST2704N:green:inet";
+ gpios = <&pinctrl 8 1>;
+ };
+ inet_red {
+ label = "F@ST2704N:red:inet";
+ gpios = <&pinctrl 9 1>;
+ };
+ dsl_green {
+ label = "F@ST2704N:green:dsl";
+ gpios = <&pinctrl 10 1>;
+ };
+ power_red {
+ label = "F@ST2704N:red:power";
+ gpios = <&pinctrl 11 1>;
+ };
+ power_green {
+ label = "F@ST2704N:green:power";
+ gpios = <&pinctrl 47 1>;
+ default-state = "on";
+ };
+ usb_green {
+ label = "F@ST2704N:green:usb";
+ gpios = <&pinctrl 49 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6318.dtsi b/target/linux/bcm63xx/dts/bcm6318.dtsi
new file mode 100644
index 0000000000..a902c1bd57
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6318.dtsi
@@ -0,0 +1,200 @@
+/ {
+ #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 0000000000..b4176885ed
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63268-brcm-bcm963268bu-p300.dts
@@ -0,0 +1,59 @@
+/dts-v1/;
+
+#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 = "ok";
+
+ 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 = "ok";
+};
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 0000000000..dbbea13f1b
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63268-inteno-vg50.dts
@@ -0,0 +1,59 @@
+/dts-v1/;
+
+#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 = "ok";
+
+ 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 = "ok";
+};
diff --git a/target/linux/bcm63xx/dts/bcm63268.dtsi b/target/linux/bcm63xx/dts/bcm63268.dtsi
new file mode 100644
index 0000000000..1b4b3e6178
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63268.dtsi
@@ -0,0 +1,250 @@
+/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "brcm,bcm63268";
+
+ aliases {
+ 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 = <&periph_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>; */
+ };
+
+ 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 0000000000..bcd2286cf9
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm63269-brcm-bcm963269bhr.dts
@@ -0,0 +1,66 @@
+/dts-v1/;
+
+#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 = "963269BHR:green:usb1";
+ gpios = <&pinctrl 9 1>;
+ };
+
+ usb2 {
+ label = "963269BHR:green:usb2";
+ gpios = <&pinctrl 10 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..814274b611
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-adb-a4001n.dts
@@ -0,0 +1,101 @@
+/dts-v1/;
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "ADB P.DG A4001N";
+ compatible = "adb,a4001n", "brcm,bcm6328";
+
+ 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 = "A4001N:red:inet";
+ gpios = <&pinctrl 1 0>;
+ };
+ power_red {
+ label = "A4001N:red:power";
+ gpios = <&pinctrl 4 0>;
+ };
+ power_green {
+ label = "A4001N:green:power";
+ gpios = <&pinctrl 8 0>;
+ default-state = "on";
+ };
+ usb_green {
+ label = "A4001N:green:usb";
+ gpios = <&pinctrl 10 1>;
+ };
+ dsl_green {
+ label = "A4001N:green:dsl";
+ gpios = <&pinctrl 11 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..e58f865589
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-adb-a4001n1.dts
@@ -0,0 +1,132 @@
+/dts-v1/;
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "ADB P.DG A4001N1";
+ compatible = "adb,a4001n1", "brcm,bcm6328";
+
+ 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 = "A4001N1:red:inet";
+ gpios = <&pinctrl 2 1>;
+ };
+ ppp_green {
+ label = "A4001N1:green:ppp";
+ gpios = <&pinctrl 3 1>;
+ };
+ power_green {
+ label = "A4001N1:green:power";
+ gpios = <&pinctrl 4 1>;
+ default-state = "on";
+ };
+ ppp_red {
+ label = "A4001N1:red:ppp";
+ gpios = <&pinctrl 5 1>;
+ };
+ usb_green {
+ label = "A4001N1:green:3g";
+ gpios = <&pinctrl 6 1>;
+ };
+ usb_red {
+ label = "A4001N1:red:3g";
+ gpios = <&pinctrl 7 1>;
+ };
+ power_red {
+ label = "A4001N1:red:power";
+ gpios = <&pinctrl 8 1>;
+ };
+ wlan_green {
+ label = "A4001N1:green:wlan";
+ gpios = <&pinctrl 9 1>;
+ };
+ wlan_red {
+ label = "A4001N1:red:wlan";
+ gpios = <&pinctrl 10 1>;
+ };
+ inet_green {
+ label = "A4001N1:green:inet";
+ gpios = <&pinctrl 11 1>;
+ };
+ eth_red {
+ label = "A4001N1:red:eth";
+ gpios = <&pinctrl 20 1>;
+ };
+ eth_green {
+ label = "A4001N1:green:eth";
+ gpios = <&pinctrl 31 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..6fbac7d461
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-brcm-bcm963281tan.dts
@@ -0,0 +1,68 @@
+/dts-v1/;
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Broadcom bcm963281TAN reference board";
+ compatible = "brcm,bcm963281tan", "brcm,bcm6328";
+
+ chosen {
+ bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+ stdout-path = "serial0:115200n8";
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ inet {
+ label = "963281TAN::internet";
+ gpios = <&pinctrl 1 1>;
+ };
+ power {
+ label = "963281TAN::power";
+ gpios = <&pinctrl 4 1>;
+ default-state = "on";
+ };
+ inet_fail {
+ label = "963281TAN::internet-fail";
+ gpios = <&pinctrl 7 1>;
+ };
+ power_fail {
+ label = "963281TAN::power-fail";
+ gpios = <&pinctrl 8 1>;
+ };
+ wps {
+ label = "963281TAN::wps";
+ gpios = <&pinctrl 9 1>;
+ };
+ dsl {
+ label = "963281TAN::dsl";
+ gpios = <&pinctrl 11 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..a0a6c9ec54
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-brcm-bcm96328avng.dts
@@ -0,0 +1,73 @@
+/dts-v1/;
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Broadcom BCM96328avng reference board";
+ compatible = "brcm,bcm96328avng", "brcm,bcm6328";
+
+ chosen {
+ bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+ stdout-path = "serial0:115200n8";
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ inet_fail {
+ label = "96328avng::internet-fail";
+ gpios = <&pinctrl 2 1>;
+ };
+ dsl {
+ label = "96328avng::dsl";
+ gpios = <&pinctrl 3 1>;
+ };
+ power {
+ label = "96328avng::power";
+ gpios = <&pinctrl 4 1>;
+ default-state = "on";
+ };
+ power_fail {
+ label = "96328avng::power-fail";
+ gpios = <&pinctrl 8 1>;
+ };
+ wps {
+ label = "96328avng::wps";
+ gpios = <&pinctrl 9 1>;
+ };
+ inet {
+ label = "96328avng::internet";
+ gpios = <&pinctrl 11 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..e336024913
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-comtrend-ar-5381u.dts
@@ -0,0 +1,89 @@
+/dts-v1/;
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Comtrend AR-5381u";
+ compatible = "comtrend,ar-5381u", "brcm,bcm6328";
+
+ 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>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ alarm_red {
+ label = "AR-5381u:red:alarm";
+ gpios = <&pinctrl 2 1>;
+ };
+ inet_green {
+ label = "AR-5381u:green:inet";
+ gpios = <&pinctrl 3 1>;
+ };
+ power_green {
+ label = "AR-5381u:green:power";
+ gpios = <&pinctrl 4 1>;
+ default-state = "on";
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..209eda37f4
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-comtrend-ar-5387un.dts
@@ -0,0 +1,97 @@
+/dts-v1/;
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Comtrend AR-5387un";
+ compatible = "comtrend,ar-5387un", "brcm,bcm6328";
+
+ 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>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ inet_red {
+ label = "AR-5387un:red:inet";
+ gpios = <&pinctrl 1 0>;
+ };
+ power_red {
+ label = "AR-5387un:red:power";
+ gpios = <&pinctrl 4 0>;
+ };
+ inet_green {
+ label = "AR-5387un:green:inet";
+ gpios = <&pinctrl 7 0>;
+ };
+ power_green {
+ label = "AR-5387un:green:power";
+ gpios = <&pinctrl 8 0>;
+ default-state = "on";
+ };
+ dsl_green {
+ label = "AR-5387un:green:dsl";
+ gpios = <&pinctrl 11 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..f3fab05062
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-d-link-dsl-274xb-f1.dts
@@ -0,0 +1,121 @@
+/dts-v1/;
+
+#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";
+
+ 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 = "dsl-274xb:red:internet";
+ gpios = <&pinctrl 2 1>;
+ };
+ dsl_green {
+ label = "dsl-274xb:green:dsl";
+ gpios = <&pinctrl 3 1>;
+ };
+ power_green {
+ label = "dsl-274xb:green:power";
+ gpios = <&pinctrl 4 1>;
+ default-state = "on";
+ };
+ power_red {
+ label = "dsl-274xb:red:power";
+ gpios = <&pinctrl 8 1>;
+ };
+ wps_blue {
+ label = "dsl-274xb:blue:wps";
+ gpios = <&pinctrl 9 1>;
+ };
+ inet_green {
+ label = "dsl-274xb:green:internet";
+ gpios = <&pinctrl 11 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..5084bd8877
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-nucom-r5010un-v2.dts
@@ -0,0 +1,113 @@
+/dts-v1/;
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "NuCom R5010UN v2";
+ compatible = "nucom,r5010un-v2", "brcm,bcm6328";
+
+ 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 = "R5010UNv2:green:inet";
+ gpios = <&pinctrl 1 1>;
+ };
+ inet_fail_red {
+ label = "R5010UNv2:red:inet-fail";
+ gpios = <&pinctrl 2 1>;
+ };
+ dsl_red {
+ label = "R5010UNv2:green:dsl";
+ gpios = <&pinctrl 3 1>;
+ };
+ power_green {
+ label = "R5010UNv2:green:power";
+ gpios = <&pinctrl 4 1>;
+ default-state = "on";
+ };
+ power_fail_red {
+ label = "R5010UNv2:red:power-fail";
+ gpios = <&pinctrl 5 1>;
+ };
+ wps_green {
+ label = "R5010UNv2:green:wps";
+ gpios = <&pinctrl 10 1>;
+ };
+ usb_green {
+ label = "R5010UNv2:green:usb";
+ gpios = <&pinctrl 11 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..d00d8fb4e5
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-sagem-fast-2704-v2.dts
@@ -0,0 +1,119 @@
+/dts-v1/;
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Sagem F@st 2704 V2";
+ compatible = "sagem,fast-2704-v2", "brcm,bcm6328";
+
+ 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 = "F@ST2704V2:green:usb";
+ gpios = <&pinctrl 1 1>;
+ };
+ inet_red {
+ label = "F@ST2704V2:red:inet";
+ gpios = <&pinctrl 2 1>;
+ };
+ dsl_green {
+ label = "F@ST2704V2:green:dsl";
+ gpios = <&pinctrl 3 1>;
+ };
+ power_green {
+ label = "F@ST2704V2:green:power";
+ gpios = <&pinctrl 4 1>;
+ default-state = "on";
+ };
+ power_red {
+ label = "F@ST2704V2:red:power";
+ gpios = <&pinctrl 5 1>;
+ };
+ wps_green {
+ label = "F@ST2704V2:green:wps";
+ gpios = <&pinctrl 10 1>;
+ };
+ inet_green {
+ label = "F@ST2704V2:green:inet";
+ gpios = <&pinctrl 11 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..36899a4cc0
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-sercomm-ad1018-nor.dts
@@ -0,0 +1,146 @@
+/dts-v1/;
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Sercomm AD1018 (SPI flash mod)";
+ compatible = "sercomm,ad1018-nor", "brcm,bcm6328";
+
+ 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 = "ok";
+
+ 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 = "AD1018:red:internet";
+ };
+
+ inet_green@1 {
+ reg = <1>;
+ active-low;
+ label = "AD1018:green:internet";
+ };
+
+ power_green@8 {
+ reg = <8>;
+ active-low;
+ label = "AD1018:green:power";
+ default-state = "on";
+ };
+
+ adsl_green@10 {
+ reg = <10>;
+ active-low;
+ label = "AD1018:green:adsl";
+ };
+
+ adsl_red@11 {
+ reg = <11>;
+ active-low;
+ label = "AD1018:red:adsl";
+ };
+
+ phone_green@12 {
+ reg = <12>;
+ active-low;
+ label = "AD1018:green:phone";
+ };
+
+ wps_green@13 {
+ reg = <13>;
+ active-low;
+ label = "AD1018:green:wps";
+ };
+
+ wifi_green@14 {
+ reg = <14>;
+ active-low;
+ label = "AD1018:green:wifi";
+ };
+
+ usb_green@15 {
+ reg = <15>;
+ active-low;
+ label = "AD1018:green:usb";
+ };
+
+ ephy0_spd@17 {
+ reg = <17>;
+ brcm,hardware-controlled;
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6328.dtsi b/target/linux/bcm63xx/dts/bcm6328.dtsi
new file mode 100644
index 0000000000..d08b6bab7a
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328.dtsi
@@ -0,0 +1,199 @@
+/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "brcm,bcm6328";
+
+ aliases {
+ 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";
+ };
+
+ 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 0000000000..92363ec3a1
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6338-brcm-bcm96338gw.dts
@@ -0,0 +1,53 @@
+/dts-v1/;
+
+#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 = "96338GW:green:power";
+ gpios = <&gpio0 0 1>;
+ default-state = "on";
+ };
+ stop_green {
+ label = "96338GW:green:stop";
+ gpios = <&gpio0 1 1>;
+ };
+ dsl_green {
+ label = "96338GW:green:adsl";
+ gpios = <&gpio0 3 1>;
+ };
+ ppp_fail_green {
+ label = "96338GW:green:ppp-fail";
+ gpios = <&gpio0 4 1>;
+ };
+ ses_green {
+ label = "96338GW:green:ses";
+ gpios = <&gpio0 5 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..3f6e8c0686
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6338-brcm-bcm96338w.dts
@@ -0,0 +1,53 @@
+/dts-v1/;
+
+#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 = "96338W:green:power";
+ gpios = <&gpio0 0 1>;
+ default-state = "on";
+ };
+ stop_green {
+ label = "96338W:green:stop";
+ gpios = <&gpio0 1 1>;
+ };
+ dsl_green {
+ label = "96338W:green:adsl";
+ gpios = <&gpio0 3 1>;
+ };
+ ppp_fail_green {
+ label = "96338W:green:ppp-fail";
+ gpios = <&gpio0 4 1>;
+ };
+ ses_green {
+ label = "96338W:green:ses";
+ gpios = <&gpio0 5 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..8cf96a3a5c
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6338-d-link-dsl-2640u.dts
@@ -0,0 +1,66 @@
+/dts-v1/;
+
+#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 = "96338W2_E7T:green:power";
+ gpios = <&gpio0 0 1>;
+ default-state = "on";
+ };
+
+ green_stop {
+ label = "96338W2_E7T:green:ppp";
+ gpios = <&gpio0 4 1>;
+ };
+
+ green_adsl {
+ label = "96338W2_E7T:green:ppp-fail";
+ gpios = <&gpio0 5 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..bac605651f
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6338-dynalink-rta1320.dts
@@ -0,0 +1,68 @@
+/dts-v1/;
+
+#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 = "RTA1320_16M:green:power";
+ gpios = <&gpio0 0 1>;
+ default-state = "on";
+ };
+ green_stop {
+ label = "RTA1320_16M:green:stop";
+ gpios = <&gpio0 1 1>;
+ };
+ green_adsl {
+ label = "RTA1320_16M:green:adsl";
+ gpios = <&gpio0 3 1>;
+ };
+ green_ppp {
+ label = "RTA1320_16M:green:ppp";
+ gpios = <&gpio0 4 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6338.dtsi b/target/linux/bcm63xx/dts/bcm6338.dtsi
new file mode 100644
index 0000000000..3d1c068351
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6338.dtsi
@@ -0,0 +1,105 @@
+/ {
+ #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 0000000000..5aea2ddc8d
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6345-brcm-bcm96345gw2.dts
@@ -0,0 +1,27 @@
+/dts-v1/;
+
+#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 = "ok";
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..f678762c86
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6345-dynalink-rta770bw.dts
@@ -0,0 +1,84 @@
+/dts-v1/;
+
+#include "bcm6345.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Siemens Gigaset SE515";
+ compatible = "dynalink,rta770bw", "brcm,bcm6345";
+
+ 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 = "RTA770BW:green:usb";
+ gpios = <&gpio0 7 1>;
+ };
+
+ adsl {
+ label = "RTA770BW:green:adsl";
+ gpios = <&gpio0 8 0>;
+ };
+
+ diag {
+ label = "RTA770BW:green:diag";
+ gpios = <&gpio0 10 1>;
+ };
+
+ wlan {
+ label = "RTA770BW:green:wlan";
+ gpios = <&gpio0 11 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..ad0e7ce27d
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6345-dynalink-rta770w.dts
@@ -0,0 +1,84 @@
+/dts-v1/;
+
+#include "bcm6345.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Dynalink RTA770W";
+ compatible = "dynalink,rta770w", "brcm,bcm6345";
+
+ 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 = "RTA770W:green:usb";
+ gpios = <&gpio0 7 1>;
+ };
+
+ adsl {
+ label = "RTA770W:green:adsl";
+ gpios = <&gpio0 8 0>;
+ };
+
+ diag {
+ label = "RTA770W:green:diag";
+ gpios = <&gpio0 10 1>;
+ };
+
+ wlan {
+ label = "RTA770W:green:wlan";
+ gpios = <&gpio0 11 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6345.dtsi b/target/linux/bcm63xx/dts/bcm6345.dtsi
new file mode 100644
index 0000000000..7d5f79be35
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6345.dtsi
@@ -0,0 +1,94 @@
+/ {
+ #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 0000000000..bf7b4a3ec4
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-asmax-ar-1004g.dts
@@ -0,0 +1,83 @@
+/dts-v1/;
+
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "ASMAX AR 1004g";
+ compatible = "asmax,ar-1004g", "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 = "AR1004G:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ inet_green {
+ label = "AR1004G:green:inet";
+ gpios = <&pinctrl 3 1>;
+ };
+ power_red {
+ label = "AR1004G:red:power";
+ gpios = <&pinctrl 6 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..c39247d405
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-belkin-f5d7633.dts
@@ -0,0 +1,91 @@
+/dts-v1/;
+
+#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 = "96348GW-10:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ stop_green {
+ label = "96348GW-10:green:stop";
+ gpios = <&pinctrl 1 1>;
+ };
+ adsl_fail_green {
+ label = "96348GW-10:green:adsl-fail";
+ gpios = <&pinctrl 2 1>;
+ };
+ ppp_green {
+ label = "96348GW-10:green:ppp";
+ gpios = <&pinctrl 3 1>;
+ };
+ ppp_fail_green {
+ label = "96348GW-10:green:ppp-fail";
+ gpios = <&pinctrl 4 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..014fd3fb9d
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw-10.dts
@@ -0,0 +1,72 @@
+/dts-v1/;
+
+#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 = "96348GW-10:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ stop_green {
+ label = "96348GW-10:green:stop";
+ gpios = <&pinctrl 1 1>;
+ };
+ adsl_fail_green {
+ label = "96348GW-10:green:adsl-fail";
+ gpios = <&pinctrl 2 1>;
+ };
+ ppp_green {
+ label = "96348GW-10:green:ppp";
+ gpios = <&pinctrl 3 1>;
+ };
+ ppp_fail_green {
+ label = "96348GW-10:green:ppp-fail";
+ gpios = <&pinctrl 4 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+};
+
+&pinctrl {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii &pinctrl_mii_pccard>;
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..aeda3c2659
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw-11.dts
@@ -0,0 +1,72 @@
+/dts-v1/;
+
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Broadcom BCM96348GW-11 reference board";
+ compatible = "brcm,bcm96348gw-11", "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 = "96348GW-11:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ stop_green {
+ label = "96348GW-11:green:stop";
+ gpios = <&pinctrl 1 1>;
+ };
+ adsl_fail_green {
+ label = "96348GW-11:green:adsl-fail";
+ gpios = <&pinctrl 2 1>;
+ };
+ ppp_green {
+ label = "96348GW-11:green:ppp";
+ gpios = <&pinctrl 3 1>;
+ };
+ ppp_fail_green {
+ label = "96348GW-11:green:ppp-fail";
+ gpios = <&pinctrl 4 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+};
+
+&pinctrl {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii &pinctrl_mii_pccard>;
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..61a0a3dd5c
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348gw.dts
@@ -0,0 +1,72 @@
+/dts-v1/;
+
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Broadcom BCM96348GW reference board";
+ compatible = "brcm,bcm96348gw", "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";
+
+ power_green {
+ label = "96348GW:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ stop_green {
+ label = "96348GW:green:stop";
+ gpios = <&pinctrl 1 1>;
+ };
+ adsl_fail_green {
+ label = "96348GW:green:adsl-fail";
+ gpios = <&pinctrl 2 1>;
+ };
+ ppp_green {
+ label = "96348GW:green:ppp";
+ gpios = <&pinctrl 3 1>;
+ };
+ ppp_fail_green {
+ label = "96348GW:green:ppp-fail";
+ gpios = <&pinctrl 4 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+};
+
+&pinctrl {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii>;
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..20c88c48fc
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-brcm-bcm96348r.dts
@@ -0,0 +1,58 @@
+/dts-v1/;
+
+#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 = "96348R:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ stop_green {
+ label = "96348R:green:stop";
+ gpios = <&pinctrl 1 1>;
+ };
+ adsl_fail_green {
+ label = "96348R:green:adsl-fail";
+ gpios = <&pinctrl 2 1>;
+ };
+ ppp_green {
+ label = "96348R:green:ppp";
+ gpios = <&pinctrl 3 1>;
+ };
+ ppp_fail_green {
+ label = "96348R:green:ppp-fail";
+ gpios = <&pinctrl 4 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+};
+
+&pinctrl {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_pci>;
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..1eac7e3745
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-bt-voyager-2110.dts
@@ -0,0 +1,90 @@
+/dts-v1/;
+
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "BT Voyager 2110";
+ compatible = "bt,voyager-2110", "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 = "V2110:green:power";
+ gpios = <&pinctrl 0 1>;
+ };
+ power_red {
+ label = "V2110:red:power";
+ gpios = <&pinctrl 1 1>;
+ };
+ adsl_green {
+ label = "V2110:green:adsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ ppp_green {
+ label = "V2110:green:ppp";
+ gpios = <&pinctrl 3 1>;
+ };
+ wireless_green {
+ label = "V2110:green:wireless";
+ gpios = <&pinctrl 6 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..0975cffd65
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-bt-voyager-2500v-bb.dts
@@ -0,0 +1,90 @@
+/dts-v1/;
+
+#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 = "V2500V_BB:green:power";
+ gpios = <&pinctrl 0 1>;
+ };
+ power_red {
+ label = "V2500V_BB:red:power";
+ gpios = <&pinctrl 1 1>;
+ };
+ adsl_green {
+ label = "V2500V_BB:green:adsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ ppp_green {
+ label = "V2500V_BB:green:ppp";
+ gpios = <&pinctrl 3 1>;
+ };
+ wireless_green {
+ label = "V2500V_BB:green:wireless";
+ gpios = <&pinctrl 6 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..0d36aa21e0
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-comtrend-ct-5365.dts
@@ -0,0 +1,97 @@
+/dts-v1/;
+
+#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 = "96348A-122:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ alarm_red {
+ label = "96348A-122:red:alarm";
+ gpios = <&pinctrl 2 1>;
+ };
+ wps_green {
+ label = "96348A-122:green:wps";
+ gpios = <&pinctrl 6 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..ead9bc3a20
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-comtrend-ct-536plus.dts
@@ -0,0 +1,79 @@
+/dts-v1/;
+
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Comtrend CT-536+/CT-5621T";
+ compatible = "comtrend,ct-536plus", "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 = "CT536_CT5621:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ adsl_fail_green {
+ label = "CT536_CT5621:green:adsl-fail";
+ gpios = <&pinctrl 2 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..4213822a3e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-d-link-dsl-2640b-b.dts
@@ -0,0 +1,87 @@
+/dts-v1/;
+
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "D-Link DSL-2640B rev B2";
+ compatible = "d-link,dsl-2640b-b", "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 7 1>;
+ linux,code = <KEY_RESTART>;
+ debounce-interval = <60>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ power_green {
+ label = "D-4P-W:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ status {
+ label = "D-4P-W::status";
+ gpios = <&pinctrl 3 1>;
+ };
+ inet_green {
+ label = "D-4P-W:green:internet";
+ gpios = <&pinctrl 4 1>;
+ };
+ inet_red {
+ label = "D-4P-W:red:internet";
+ gpios = <&pinctrl 5 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..6cafc891aa
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-davolink-dv-201amr.dts
@@ -0,0 +1,51 @@
+/dts-v1/;
+
+#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 = "ok";
+
+ 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 = "ok";
+};
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 0000000000..122e049b3c
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-dynalink-rta1025w.dts
@@ -0,0 +1,51 @@
+/dts-v1/;
+
+#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 = "ok";
+
+ 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 = "ok";
+};
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 0000000000..6e80675ff7
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-inventel-livebox-1.dts
@@ -0,0 +1,84 @@
+/dts-v1/;
+
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Inventel Livebox 1";
+ compatible = "inventel,livebox-1", "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>;
+
+ 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";
+
+ red_adsl_fail {
+ label = "Livebox1:red:adsl-fail-power";
+ gpios = <&pinctrl 0 0>;
+ default-state = "on";
+ };
+
+ red_adsl {
+ label = "Livebox1:red:adsl";
+ gpios = <&pinctrl 1 0>;
+ };
+
+ red_traffic {
+ label = "Livebox1:red:traffic";
+ gpios = <&pinctrl 2 0>;
+ };
+
+ red_phone {
+ label = "Livebox1:red:phone";
+ gpios = <&pinctrl 3 0>;
+ };
+
+ red_wifi {
+ label = "Livebox1:red:wifi";
+ gpios = <&pinctrl 4 0>;
+ };
+ };
+};
+
+&pflash {
+ reg = <0x1e400000 0x800000>;
+ status = "ok";
+
+ partitions {
+ compatible = "ecoscentric,redboot-fis-partitions";
+ };
+};
+
+&pinctrl {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_pci &pinctrl_ext_mii &pinctrl_mii_pccard>;
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..4ea096e81a
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-netgear-dg834g-v4.dts
@@ -0,0 +1,87 @@
+/dts-v1/;
+
+#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 = "96348W3:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ status {
+ label = "96348W3:red:power";
+ gpios = <&pinctrl 1 1>;
+ };
+ inet_green {
+ label = "96348W3::adsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ inet_red {
+ label = "96348W3::internet";
+ gpios = <&pinctrl 3 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..f7e203227c
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-netgear-dg834gt-pn.dts
@@ -0,0 +1,91 @@
+/dts-v1/;
+
+#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 = "96348GW-10:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ stop_green {
+ label = "96348GW-10:green:stop";
+ gpios = <&pinctrl 1 1>;
+ };
+ adsl_fail_green {
+ label = "96348GW-10:green:adsl-fail";
+ gpios = <&pinctrl 2 1>;
+ };
+ ppp_green {
+ label = "96348GW-10:green:ppp";
+ gpios = <&pinctrl 3 1>;
+ };
+ ppp_fail_green {
+ label = "96348GW-10:green:ppp-fail";
+ gpios = <&pinctrl 4 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..945fcc1f18
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-sagem-fast-2404.dts
@@ -0,0 +1,51 @@
+/dts-v1/;
+
+#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 = "ok";
+
+ 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 = "ok";
+};
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 0000000000..a2d2717575
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-sagem-fast-2604.dts
@@ -0,0 +1,87 @@
+/dts-v1/;
+
+#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 = "F@ST2604:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ power_red {
+ label = "F@ST2604:red:power";
+ gpios = <&pinctrl 1 1>;
+ };
+ inet_red {
+ label = "F@ST2604:red:inet";
+ gpios = <&pinctrl 4 1>;
+ };
+ wps_green {
+ label = "F@ST2604:green:wps";
+ gpios = <&pinctrl 5 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..8b0d1cacfd
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-t-com-speedport-w-500v.dts
@@ -0,0 +1,91 @@
+/dts-v1/;
+
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "T-Com Speedport W 500V";
+ compatible = "t-com,speedport-w-500v", "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 = "SPW500V:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ power_red {
+ label = "SPW500V:red:power";
+ gpios = <&pinctrl 1 1>;
+ };
+ ppp_green {
+ label = "SPW500V:green:ppp";
+ gpios = <&pinctrl 3 1>;
+ };
+ pstn_green {
+ label = "SPW500V:green:pstn";
+ gpios = <&pinctrl 28 1>;
+ };
+ voip_green {
+ label = "SPW500V:green:voip";
+ gpios = <&pinctrl 32 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..4822b04926
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-tecom-gw6000.dts
@@ -0,0 +1,65 @@
+/dts-v1/;
+
+#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 = "ok";
+
+ 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 = "ok";
+};
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 0000000000..c86cbf9203
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-tecom-gw6200.dts
@@ -0,0 +1,86 @@
+/dts-v1/;
+
+#include "bcm6348.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "TECOM GW6200";
+ compatible = "tecom,gw6200", "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";
+
+ line1_green {
+ label = "GW6200:green:line1";
+ gpios = <&pinctrl 4 1>;
+ };
+ line2_green {
+ label = "GW6200:green:line2";
+ gpios = <&pinctrl 5 1>;
+ };
+ line3_green {
+ label = "GW6200:green:line3";
+ gpios = <&pinctrl 6 1>;
+ };
+ tel_green {
+ label = "GW6200:green:tel";
+ gpios = <&pinctrl 7 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..71620bc655
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-telsey-cpva502plus.dts
@@ -0,0 +1,79 @@
+/dts-v1/;
+
+#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 = "CPVA502+:green:phone";
+ gpios = <&pinctrl 0 1>;
+ };
+
+ link_amber {
+ label = "CPVA502+:amber:link";
+ gpios = <&pinctrl 5 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..1358ebe99f
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-telsey-magic.dts
@@ -0,0 +1,91 @@
+/dts-v1/;
+
+#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 = "MAGIC:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+
+ stop {
+ label = "MAGIC:green:stop";
+ gpios = <&pinctrl 1 1>;
+ };
+
+ hpna {
+ label = "MAGIC:green:hpna";
+ gpios = <&pinctrl 4 1>;
+ };
+
+ status {
+ label = "MAGIC:green:adsl";
+ gpios = <&pinctrl 5 1>;
+ };
+
+ voip {
+ label = "MAGIC:green:voip";
+ gpios = <&pinctrl 22 1>;
+ };
+
+ wifi {
+ label = "MAGIC:green:wifi";
+ gpios = <&pinctrl 28 0>;
+ };
+
+ usb {
+ label = "MAGIC:green:usb";
+ gpios = <&pinctrl 35 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..be111edd40
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-tp-link-td-w8900gb.dts
@@ -0,0 +1,91 @@
+/dts-v1/;
+
+#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 = "96348GW-11:green:power";
+ gpios = <&pinctrl 0 1>;
+ default-state = "on";
+ };
+ stop_green {
+ label = "96348GW-11:green:stop";
+ gpios = <&pinctrl 1 1>;
+ };
+ adsl_fail_green {
+ label = "96348GW-11:green:adsl-fail";
+ gpios = <&pinctrl 2 1>;
+ };
+ ppp_green {
+ label = "96348GW-11:green:ppp";
+ gpios = <&pinctrl 3 1>;
+ };
+ ppp_fail_green {
+ label = "96348GW-11:green:ppp-fail";
+ gpios = <&pinctrl 4 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..366eaf3bcd
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348-usrobotics-usr9108.dts
@@ -0,0 +1,64 @@
+/dts-v1/;
+
+#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 = "96348GW-A::usb";
+ gpios = <&pinctrl 0 1>;
+ };
+ dsl {
+ label = "96348GW-A::adsl";
+ gpios = <&pinctrl 3 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6348.dtsi b/target/linux/bcm63xx/dts/bcm6348.dtsi
new file mode 100644
index 0000000000..f3e17be533
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6348.dtsi
@@ -0,0 +1,153 @@
+/ {
+ #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 = "ext_ephy";
+ 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 = "group0", "group1", "group3";
+ };
+ };
+
+ 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 0000000000..22f50d5ada
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-alcatel-rg100a.dts
@@ -0,0 +1,68 @@
+/dts-v1/;
+
+#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 = "96358VW2:green:stop";
+ gpios = <&pinctrl 4 1>;
+ };
+ power_green {
+ label = "96358VW2:green:power";
+ gpios = <&pinctrl 5 1>;
+ default-state = "on";
+ };
+ adsl_green {
+ label = "96358VW2:green:adsl";
+ gpios = <&pinctrl 22 1>;
+ };
+ ppp_fail_green {
+ label = "96358VW2:green:ppp-fail";
+ gpios = <&pinctrl 23 0>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..669d1943f4
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-brcm-bcm96358vw.dts
@@ -0,0 +1,53 @@
+/dts-v1/;
+
+#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 = "96358VW:green:power";
+ gpios = <&pinctrl 4 0>;
+ default-state = "on";
+ };
+ stop_green {
+ label = "96358VW:green:stop";
+ gpios = <&pinctrl 5 0>;
+ };
+ adsl_fail_green {
+ label = "96358VW:green:adsl-fail";
+ gpios = <&pinctrl 15 1>;
+ };
+ ppp_green {
+ label = "96358VW:green:ppp";
+ gpios = <&pinctrl 22 1>;
+ };
+ ppp_fail_green {
+ label = "96358VW:green:ppp-fail";
+ gpios = <&pinctrl 23 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..a4a977e73d
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-brcm-bcm96358vw2.dts
@@ -0,0 +1,49 @@
+/dts-v1/;
+
+#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 = "96358VW2:green:stop";
+ gpios = <&pinctrl 4 1>;
+ };
+ power_green {
+ label = "96358VW2:green:power";
+ gpios = <&pinctrl 5 1>;
+ default-state = "on";
+ };
+ adsl_green {
+ label = "96358VW2:green:adsl";
+ gpios = <&pinctrl 22 1>;
+ };
+ ppp_fail_green {
+ label = "96358VW2:green:ppp-fail";
+ gpios = <&pinctrl 23 0>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..351b2945d3
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-bt-home-hub-2-a.dts
@@ -0,0 +1,171 @@
+/dts-v1/;
+
+#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";
+
+ 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 = "ok";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_serial_led>;
+
+ led@0 {
+ reg = <0>;
+ active-low;
+ label = "HOMEHUB2A:red:power";
+ };
+
+ led@1 {
+ reg = <0>;
+ active-low;
+ label = "HOMEHUB2A:green:power";
+ default-state = "on";
+ };
+
+ led@2 {
+ reg = <2>;
+ active-low;
+ label = "HOMEHUB2A:blue:power";
+ };
+
+ led@3 {
+ reg = <3>;
+ active-low;
+ label = "HOMEHUB2A:red:broadband";
+ };
+
+ led@4 {
+ reg = <4>;
+ active-low;
+ label = "HOMEHUB2A:green:broadband";
+ };
+
+ led@5 {
+ reg = <5>;
+ active-low;
+ label = "HOMEHUB2A:blue:broadband";
+ };
+
+ led@6 {
+ reg = <6>;
+ active-low;
+ label = "HOMEHUB2A:red:wireless";
+ };
+
+ led@7 {
+ reg = <7>;
+ active-low;
+ label = "HOMEHUB2A:green:wireless";
+ };
+
+ led@8 {
+ reg = <8>;
+ active-low;
+ label = "HOMEHUB2A:blue:wireless";
+ };
+
+ led@9 {
+ reg = <9>;
+ active-low;
+ label = "HOMEHUB2A:red:phone";
+ };
+
+ led@10 {
+ reg = <10>;
+ active-low;
+ label = "HOMEHUB2A:green:phone";
+ };
+
+ led@11 {
+ reg = <11>;
+ active-low;
+ label = "HOMEHUB2A:blue:phone";
+ };
+
+ led@12 {
+ reg = <12>;
+ active-low;
+ label = "HOMEHUB2A:red:upgrading";
+ };
+
+ led@13 {
+ reg = <13>;
+ active-low;
+ label = "HOMEHUB2A:green:upgrading";
+ };
+
+ led@14 {
+ reg = <14>;
+ active-low;
+ label = "HOMEHUB2A:blue:upgrading";
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..c5e38ba6f6
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-comtrend-ct-6373.dts
@@ -0,0 +1,109 @@
+/dts-v1/;
+
+#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 = "CT6373-1:green:power";
+ gpios = <&pinctrl 0 0>;
+ default-state = "on";
+ };
+ usb_green {
+ label = "CT6373-1:green:usb";
+ gpios = <&pinctrl 3 1>;
+ };
+ wlan_green {
+ label = "CT6373-1:green:wlan";
+ gpios = <&pinctrl 9 1>;
+ };
+ };
+};
+
+&leds {
+ status = "ok";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_serial_led>;
+
+ led@0 {
+ reg = <0>;
+ active-low;
+ label = "CT6373-1:green:adsl";
+ };
+
+ led@1 {
+ reg = <1>;
+ active-low;
+ label = "CT6373-1:green:line";
+ };
+
+ led@2 {
+ reg = <2>;
+ active-low;
+ label = "CT6373-1:green:fxs1";
+ };
+
+ led@3 {
+ reg = <3>;
+ active-low;
+ label = "CT6373-1:green:fxs2";
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..c2dad26b12
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-d-link-dsl-2650u.dts
@@ -0,0 +1,68 @@
+/dts-v1/;
+
+#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 = "96358VW2:green:stop";
+ gpios = <&pinctrl 4 1>;
+ };
+ power_green {
+ label = "96358VW2:green:power";
+ gpios = <&pinctrl 5 1>;
+ default-state = "on";
+ };
+ adsl_green {
+ label = "96358VW2:green:adsl";
+ gpios = <&pinctrl 22 1>;
+ };
+ ppp_fail_green {
+ label = "96358VW2:green:ppp-fail";
+ gpios = <&pinctrl 23 0>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..6897378fe8
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-d-link-dsl-274xb-c2.dts
@@ -0,0 +1,86 @@
+/dts-v1/;
+
+#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";
+
+ 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 = "dsl-274xb:green:internet";
+ gpios = <&pinctrl 2 0>;
+ };
+ power_red {
+ label = "dsl-274xb:red:power";
+ gpios = <&pinctrl 4 1>;
+ };
+ power_green {
+ label = "dsl-274xb:green:power";
+ gpios = <&pinctrl 5 1>;
+ default-state = "on";
+ };
+ dsl_green {
+ label = "dsl-274xb:green:adsl";
+ gpios = <&pinctrl 9 1>;
+ };
+ inet_red {
+ label = "dsl-274xb:red:internet";
+ gpios = <&pinctrl 10 0>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..fcf112a7e0
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-d-link-dva-g3810bn-tl.dts
@@ -0,0 +1,86 @@
+/dts-v1/;
+
+#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 = "DVAG3810BN::voip";
+ gpios = <&pinctrl 1 0>;
+ };
+ power {
+ label = "DVAG3810BN::power";
+ gpios = <&pinctrl 4 0>;
+ default-state = "on";
+ };
+ stop {
+ label = "DVAG3810BN::stop";
+ gpios = <&pinctrl 5 0>;
+ };
+ dsl {
+ label = "DVAG3810BN::dsl";
+ gpios = <&pinctrl 22 1>;
+ };
+ inet {
+ label = "DVAG3810BN::internet";
+ gpios = <&pinctrl 23 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..d23066866e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg553.dts
@@ -0,0 +1,109 @@
+/dts-v1/;
+
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Huawei EchoLife HG553";
+ compatible = "huawei,echolife-hg553", "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>;
+
+ 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";
+
+ power_green {
+ label = "HW553:blue:power";
+ gpios = <&pinctrl 4 1>;
+ default-state = "on";
+ };
+ power_red {
+ label = "HW553:red:power";
+ gpios = <&pinctrl 5 1>;
+ };
+ hspa_red {
+ label = "HW553:red:hspa";
+ gpios = <&pinctrl 12 1>;
+ };
+ hspa_blue {
+ label = "HW553:blue:hspa";
+ gpios = <&pinctrl 13 1>;
+ };
+ lan_red {
+ label = "HW553:red:lan";
+ gpios = <&pinctrl 22 1>;
+ };
+ lan_blue {
+ label = "HW553:blue:lan";
+ gpios = <&pinctrl 23 1>;
+ };
+ wifi_red {
+ label = "HW553:red:wifi";
+ gpios = <&pinctrl 25 1>;
+ };
+ dsl_red {
+ label = "HW553:red:adsl";
+ gpios = <&pinctrl 34 1>;
+ };
+ dsl_blue {
+ label = "HW553:blue:adsl";
+ gpios = <&pinctrl 35 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..1827e8e235
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-a.dts
@@ -0,0 +1,146 @@
+/dts-v1/;
+
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Huawei EchoLife HG556a (version A)";
+ compatible = "huawei,echolife-hg556a-a", "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>;
+
+ help {
+ label = "help";
+ gpios = <&pinctrl 8 1>;
+ linux,code = <KEY_HELP>;
+ debounce-interval = <60>;
+ };
+
+ 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>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ message_red {
+ label = "HW556:red:message";
+ gpios = <&pinctrl 0 1>;
+ };
+ hspa_red {
+ label = "HW556:red:hspa";
+ gpios = <&pinctrl 1 1>;
+ };
+ dsl_red {
+ label = "HW556:red:dsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ power_red {
+ label = "HW556:red:power";
+ gpios = <&pinctrl 3 1>;
+ default-state = "on";
+ };
+ all_red {
+ label = "HW556:red:all";
+ gpios = <&pinctrl 6 1>;
+ default-state = "on";
+ };
+ lan1_green {
+ label = "HW556:green:lan1";
+ gpios = <&pinctrl 12 1>;
+ };
+ lan1_red {
+ label = "HW556:red:lan1";
+ gpios = <&pinctrl 13 1>;
+ };
+ lan2_green {
+ label = "HW556:green:lan2";
+ gpios = <&pinctrl 15 1>;
+ };
+ lan2_red {
+ label = "HW556:red:lan2";
+ gpios = <&pinctrl 22 1>;
+ };
+ lan3_green {
+ label = "HW556:green:lan3";
+ gpios = <&pinctrl 23 1>;
+ };
+ lan3_red {
+ label = "HW556:red:lan3";
+ gpios = <&pinctrl 26 1>;
+ };
+ lan4_green {
+ label = "HW556:green:lan4";
+ gpios = <&pinctrl 27 1>;
+ };
+ lan4_red {
+ label = "HW556:red:lan4";
+ gpios = <&pinctrl 28 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..fa804bef9e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-b.dts
@@ -0,0 +1,146 @@
+/dts-v1/;
+
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Huawei EchoLife HG556a (version B)";
+ compatible = "huawei,echolife-hg556a-b", "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>;
+
+ help {
+ label = "help";
+ gpios = <&pinctrl 8 1>;
+ linux,code = <KEY_HELP>;
+ debounce-interval = <60>;
+ };
+
+ 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>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ message_red {
+ label = "HW556:red:message";
+ gpios = <&pinctrl 0 1>;
+ };
+ hspa_red {
+ label = "HW556:red:hspa";
+ gpios = <&pinctrl 1 1>;
+ };
+ dsl_red {
+ label = "HW556:red:dsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ power_red {
+ label = "HW556:red:power";
+ gpios = <&pinctrl 3 1>;
+ default-state = "on";
+ };
+ all_red {
+ label = "HW556:red:all";
+ gpios = <&pinctrl 6 1>;
+ default-state = "on";
+ };
+ lan1_green {
+ label = "HW556:green:lan1";
+ gpios = <&pinctrl 12 1>;
+ };
+ lan1_red {
+ label = "HW556:red:lan1";
+ gpios = <&pinctrl 13 1>;
+ };
+ lan2_green {
+ label = "HW556:green:lan2";
+ gpios = <&pinctrl 15 1>;
+ };
+ lan2_red {
+ label = "HW556:red:lan2";
+ gpios = <&pinctrl 22 1>;
+ };
+ lan3_green {
+ label = "HW556:green:lan3";
+ gpios = <&pinctrl 23 1>;
+ };
+ lan3_red {
+ label = "HW556:red:lan3";
+ gpios = <&pinctrl 26 1>;
+ };
+ lan4_green {
+ label = "HW556:green:lan4";
+ gpios = <&pinctrl 27 1>;
+ };
+ lan4_red {
+ label = "HW556:red:lan4";
+ gpios = <&pinctrl 28 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..5ed847baab
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-huawei-echolife-hg556a-c.dts
@@ -0,0 +1,141 @@
+/dts-v1/;
+
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Huawei EchoLife HG556a (version C)";
+ compatible = "huawei,echolife-hg556a-c", "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>;
+
+ help {
+ label = "help";
+ gpios = <&pinctrl 36 1>;
+ linux,code = <KEY_HELP>;
+ debounce-interval = <60>;
+ };
+
+ 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>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ lan1_green {
+ label = "HW556:green:lan1";
+ gpios = <&pinctrl 0 1>;
+ };
+ lan2_green {
+ label = "HW556:green:lan2";
+ gpios = <&pinctrl 1 1>;
+ };
+ dsl_red {
+ label = "HW556:red:dsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ power_red {
+ label = "HW556:red:power";
+ gpios = <&pinctrl 3 1>;
+ default-state = "on";
+ };
+ message_red {
+ label = "HW556:red:message";
+ gpios = <&pinctrl 12 1>;
+ };
+ lan1_red {
+ label = "HW556:red:lan1";
+ gpios = <&pinctrl 13 1>;
+ };
+ hspa_red {
+ label = "HW556:red:hspa";
+ gpios = <&pinctrl 15 1>;
+ };
+ lan2_red {
+ label = "HW556:red:lan2";
+ gpios = <&pinctrl 22 1>;
+ };
+ lan3_green {
+ label = "HW556:green:lan3";
+ gpios = <&pinctrl 23 1>;
+ };
+ lan3_red {
+ label = "HW556:red:lan3";
+ gpios = <&pinctrl 26 1>;
+ };
+ lan4_green {
+ label = "HW556:green:lan4";
+ gpios = <&pinctrl 27 1>;
+ };
+ lan4_red {
+ label = "HW556:red:lan4";
+ gpios = <&pinctrl 28 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..44e297c08a
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-pirelli-a226g.dts
@@ -0,0 +1,125 @@
+/dts-v1/;
+
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Pirelli A226G";
+ compatible = "pirelli,a226g", "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";
+
+ voip_red {
+ label = "DWV-S0:red:VoIP";
+ gpios = <&pinctrl 0 1>;
+ };
+ eth_red {
+ label = "DWV-S0:red:ethernet";
+ gpios = <&pinctrl 1 1>;
+ };
+ dsl_green {
+ label = "DWV-S0:green:ADSL";
+ gpios = <&pinctrl 2 1>;
+ };
+ usb_green {
+ label = "DWV-S0:green:USB";
+ gpios = <&pinctrl 3 1>;
+ };
+ power_green {
+ label = "DWV-S0:green:power";
+ gpios = <&pinctrl 4 1>;
+ default-state = "on";
+ };
+ power_red {
+ label = "DWV-S0:red:power";
+ gpios = <&pinctrl 5 1>;
+ };
+ inet_red {
+ label = "DWV-S0:red:internet";
+ gpios = <&pinctrl 6 1>;
+ };
+ inet_green {
+ label = "DWV-S0:green:internet";
+ gpios = <&pinctrl 7 1>;
+ };
+ eth_green {
+ label = "DWV-S0:green:ethernet";
+ gpios = <&pinctrl 8 1>;
+ };
+ voip_green {
+ label = "DWV-S0:green:VoIP";
+ gpios = <&pinctrl 9 1>;
+ };
+ wifi_red {
+ label = "DWV-S0:red:wifi";
+ gpios = <&pinctrl 10 1>;
+ };
+ usb_red {
+ label = "DWV-S0:red:USB";
+ gpios = <&pinctrl 11 1>;
+ };
+ dsl_red {
+ label = "DWV-S0:red:ADSL";
+ gpios = <&pinctrl 12 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..bb1cd29359
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-pirelli-a226m-fwb.dts
@@ -0,0 +1,125 @@
+/dts-v1/;
+
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Pirelli A226M-FWB";
+ compatible = "pirelli,a226m-fwb", "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";
+
+ voip_red {
+ label = "DWV-S0:red:VoIP";
+ gpios = <&pinctrl 0 1>;
+ };
+ eth_red {
+ label = "DWV-S0:red:ethernet";
+ gpios = <&pinctrl 1 1>;
+ };
+ dsl_green {
+ label = "DWV-S0:green:ADSL";
+ gpios = <&pinctrl 2 1>;
+ };
+ usb_green {
+ label = "DWV-S0:green:USB";
+ gpios = <&pinctrl 3 1>;
+ };
+ power_green {
+ label = "DWV-S0:green:power";
+ gpios = <&pinctrl 4 1>;
+ default-state = "on";
+ };
+ power_red {
+ label = "DWV-S0:red:power";
+ gpios = <&pinctrl 5 1>;
+ };
+ inet_red {
+ label = "DWV-S0:red:internet";
+ gpios = <&pinctrl 6 1>;
+ };
+ inet_green {
+ label = "DWV-S0:green:internet";
+ gpios = <&pinctrl 7 1>;
+ };
+ eth_green {
+ label = "DWV-S0:green:ethernet";
+ gpios = <&pinctrl 8 1>;
+ };
+ voip_green {
+ label = "DWV-S0:green:VoIP";
+ gpios = <&pinctrl 9 1>;
+ };
+ wifi_red {
+ label = "DWV-S0:red:wifi";
+ gpios = <&pinctrl 10 1>;
+ };
+ usb_red {
+ label = "DWV-S0:red:USB";
+ gpios = <&pinctrl 11 1>;
+ };
+ dsl_red {
+ label = "DWV-S0:red:ADSL";
+ gpios = <&pinctrl 12 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ cfe@0 {
+ label = "CFE";
+ reg = <0x000000 0x020000>;
+ read-only;
+ };
+
+ linux@10000 {
+ label = "linux";
+ reg = <0x010000 0xfc0000>;
+ compatible = "brcm,bcm963xx-imagetag";
+ };
+
+ nvram@7f0000 {
+ label = "nvram";
+ reg = <0xfe0000 0x020000>;
+ };
+ };
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..e0a6b07697
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-pirelli-a226m.dts
@@ -0,0 +1,125 @@
+/dts-v1/;
+
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Pirelli A226M";
+ compatible = "pirelli,a226m", "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";
+
+ voip_red {
+ label = "DWV-S0:red:VoIP";
+ gpios = <&pinctrl 0 1>;
+ };
+ eth_red {
+ label = "DWV-S0:red:ethernet";
+ gpios = <&pinctrl 1 1>;
+ };
+ dsl_green {
+ label = "DWV-S0:green:ADSL";
+ gpios = <&pinctrl 2 1>;
+ };
+ usb_green {
+ label = "DWV-S0:green:USB";
+ gpios = <&pinctrl 3 1>;
+ };
+ power_green {
+ label = "DWV-S0:green:power";
+ gpios = <&pinctrl 4 1>;
+ default-state = "on";
+ };
+ power_red {
+ label = "DWV-S0:red:power";
+ gpios = <&pinctrl 5 1>;
+ };
+ inet_red {
+ label = "DWV-S0:red:internet";
+ gpios = <&pinctrl 6 1>;
+ };
+ inet_green {
+ label = "DWV-S0:green:internet";
+ gpios = <&pinctrl 7 1>;
+ };
+ eth_green {
+ label = "DWV-S0:green:ethernet";
+ gpios = <&pinctrl 8 1>;
+ };
+ voip_green {
+ label = "DWV-S0:green:VoIP";
+ gpios = <&pinctrl 9 1>;
+ };
+ wifi_red {
+ label = "DWV-S0:red:wifi";
+ gpios = <&pinctrl 10 1>;
+ };
+ usb_red {
+ label = "DWV-S0:red:USB";
+ gpios = <&pinctrl 11 1>;
+ };
+ dsl_red {
+ label = "DWV-S0:red:ADSL";
+ gpios = <&pinctrl 12 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..0b9c397719
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-pirelli-agpf-s0.dts
@@ -0,0 +1,129 @@
+/dts-v1/;
+
+#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 = "AGPF-S0:green:power";
+ gpios = <&pinctrl 4 1>;
+ default-state = "on";
+ };
+ power_red {
+ label = "AGPF-S0:red:power";
+ gpios = <&pinctrl 5 1>;
+ };
+ service_green {
+ label = "AGPF-S0:green:service";
+ gpios = <&pinctrl 6 1>;
+ };
+ service_red {
+ label = "AGPF-S0:red:service";
+ gpios = <&pinctrl 7 1>;
+ };
+ dsl_green {
+ label = "AGPF-S0:green:adsl";
+ gpios = <&pinctrl 9 1>;
+ };
+ dsl_red {
+ label = "AGPF-S0:red:adsl";
+ gpios = <&pinctrl 10 1>;
+ };
+ wifi_green {
+ label = "AGPF-S0:green:wifi";
+ gpios = <&pinctrl 22 1>;
+ };
+ wifi_red {
+ label = "AGPF-S0:red:wifi";
+ gpios = <&pinctrl 23 1>;
+ };
+ inet_red {
+ label = "AGPF-S0:red:internet";
+ gpios = <&pinctrl 24 1>;
+ };
+ inet_green {
+ label = "AGPF-S0:green:internet";
+ gpios = <&pinctrl 25 1>;
+ };
+ usr1_green {
+ label = "AGPF-S0:green:usr1";
+ gpios = <&pinctrl 26 1>;
+ };
+ usr1_red {
+ label = "AGPF-S0:red:usr1";
+ gpios = <&pinctrl 27 1>;
+ };
+ usr2_green {
+ label = "AGPF-S0:green:usr2";
+ gpios = <&pinctrl 29 1>;
+ };
+ usr2_red {
+ label = "AGPF-S0:red:usr2";
+ gpios = <&pinctrl 30 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..de22658843
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-sfr-neufbox-4-foxconn-r1.dts
@@ -0,0 +1,118 @@
+/dts-v1/;
+
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "SFR Neufbox 4 (Foxconn)";
+ compatible = "sfr,neufbox-4-foxconn-r1", "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>;
+
+ 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 {
+ compatible = "gpio-leds";
+
+ traffic_white {
+ label = "NB4-FXC-r1:white:traffic";
+ gpios = <&pinctrl 2 0>;
+ };
+ service_blue {
+ label = "NB4-FXC-r1:blue:service";
+ gpios = <&pinctrl 4 0>;
+ };
+ wifi_white {
+ label = "NB4-FXC-r1:white:wifi";
+ gpios = <&pinctrl 15 0>;
+ };
+ service_red {
+ label = "NB4-FXC-r1:red:service";
+ gpios = <&pinctrl 29 0>;
+ };
+ service_green {
+ label = "NB4-FXC-r1:green:service";
+ gpios = <&pinctrl 30 0>;
+ };
+ };
+};
+
+&leds {
+ status = "ok";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_serial_led>;
+
+ led@0 {
+ reg = <0>;
+ active-low;
+ label = "NB4-FXC-r1:white:alarm";
+ };
+
+ led@2 {
+ reg = <2>;
+ active-low;
+ label = "NB4-FXC-r1:white:tv";
+ };
+
+ led@3 {
+ reg = <3>;
+ active-low;
+ label = "NB4-FXC-r1:white:tel";
+ };
+
+ led@4 {
+ reg = <4>;
+ active-low;
+ label = "NB4-FXC-r1:white:adsl";
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..db6c5f3306
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-sfr-neufbox-4-sercomm-r0.dts
@@ -0,0 +1,118 @@
+/dts-v1/;
+
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "SFR Neufbox 4 (Sercomm)";
+ compatible = "sfr,neufbox-4-sercomm-r0", "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>;
+
+ 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 {
+ compatible = "gpio-leds";
+
+ traffic_white {
+ label = "NB4-SER-r0:white:traffic";
+ gpios = <&pinctrl 2 1>;
+ };
+ service_blue {
+ label = "NB4-SER-r0:blue:service";
+ gpios = <&pinctrl 4 1>;
+ };
+ wifi_white {
+ label = "NB4-SER-r0:white:wifi";
+ gpios = <&pinctrl 15 1>;
+ };
+ service_red {
+ label = "NB4-SER-r0:red:service";
+ gpios = <&pinctrl 29 1>;
+ };
+ service_green {
+ label = "NB4-SER-r0:green:service";
+ gpios = <&pinctrl 30 1>;
+ };
+ };
+};
+
+&leds {
+ status = "ok";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_serial_led>;
+
+ led@0 {
+ reg = <0>;
+ active-low;
+ label = "NB4-SER-r0:white:alarm";
+ };
+
+ led@2 {
+ reg = <2>;
+ active-low;
+ label = "NB4-SER-r0:white:tv";
+ };
+
+ led@3 {
+ reg = <3>;
+ active-low;
+ label = "NB4-SER-r0:white:tel";
+ };
+
+ led@4 {
+ reg = <4>;
+ active-low;
+ label = "NB4-SER-r0:white:adsl";
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..4aed5f0eb6
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-t-com-speedport-w-303v.dts
@@ -0,0 +1,97 @@
+/dts-v1/;
+
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "T-Com Speedport W 303V";
+ compatible = "t-com,speedport-w-303v", "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 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 = "spw303v:green:ses";
+ gpios = <&pinctrl 0 1>;
+ };
+ power_adsl_red {
+ label = "spw303v:red:power+adsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ ppp_green {
+ label = "spw303v:green:ppp";
+ gpios = <&pinctrl 5 1>;
+ };
+ power_adsl_green {
+ label = "spw303v:green:power+adsl";
+ gpios = <&pinctrl 22 1>;
+ default-state = "on";
+ };
+ voip_green {
+ label = "spw303v:green:voip";
+ gpios = <&pinctrl 27 1>;
+ };
+ pots_green {
+ label = "spw303v:green:pots";
+ gpios = <&pinctrl 31 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..e422912297
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358-telsey-cpva642.dts
@@ -0,0 +1,113 @@
+/dts-v1/;
+
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Telsey CPVA642-type (CPA-ZNTE60T)";
+ compatible = "telsey,cpva642", "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 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 = "CPVA642:green:ether";
+ gpios = <&pinctrl 1 1>;
+ };
+ phone2_green {
+ label = "CPVA642:green:phone2";
+ gpios = <&pinctrl 2 1>;
+ };
+ usb_green {
+ label = "CPVA642:green:usb";
+ gpios = <&pinctrl 3 1>;
+ };
+ phone1_green {
+ label = "CPVA642:green:phone1";
+ gpios = <&pinctrl 4 1>;
+ };
+ wifi_red {
+ label = "CPVA642:red:wifi";
+ gpios = <&pinctrl 6 1>;
+ };
+ link_red {
+ label = "CPVA642:red:link";
+ gpios = <&pinctrl 9 1>;
+ };
+ link_green {
+ label = "CPVA642:green:link";
+ gpios = <&pinctrl 10 1>;
+ };
+ power_green {
+ label = "CPVA642:green:power";
+ gpios = <&pinctrl 11 1>;
+ default-state = "on";
+ };
+ power_red {
+ label = "CPVA642:red:power";
+ gpios = <&pinctrl 14 1>;
+ };
+ wifi_green {
+ label = "CPVA642:green:wifi";
+ gpios = <&pinctrl 28 0>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6358.dtsi b/target/linux/bcm63xx/dts/bcm6358.dtsi
new file mode 100644
index 0000000000..a78cdef373
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6358.dtsi
@@ -0,0 +1,203 @@
+/ {
+ #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 0000000000..5809b6da4e
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6359-huawei-echolife-hg520v.dts
@@ -0,0 +1,69 @@
+/dts-v1/;
+
+#include "bcm6358.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Huawei EchoLife HG520v";
+ compatible = "huawei,echolife-hg520v", "brcm,bcm6359", "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 37 1>;
+ linux,code = <KEY_RESTART>;
+ debounce-interval = <60>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ inet_green {
+ label = "HW520:green:net";
+ gpios = <&pinctrl 32 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..4498272887
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6361-sfr-neufbox-6-sercomm-r0.dts
@@ -0,0 +1,100 @@
+/dts-v1/;
+
+#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 = "ok";
+
+ 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 = "ok";
+};
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 0000000000..db8ce7318f
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6362-sagem-fast-2504n.dts
@@ -0,0 +1,108 @@
+/dts-v1/;
+
+#include "bcm6362.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Sagem F@st 2504N";
+ compatible = "sagem,fast-2504n", "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>;
+
+ 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 = "fast2504n:orange:power";
+ gpios = <&pinctrl 2 1>;
+ };
+ power_green {
+ label = "fast2504n:green:power";
+ gpios = <&pinctrl 10 1>;
+ default-state = "on";
+ };
+ inet_red {
+ label = "fast2504n:red:internet";
+ gpios = <&pinctrl 26 1>;
+ };
+ ok_green {
+ label = "fast2504n:green:ok";
+ gpios = <&pinctrl 28 1>;
+ };
+ ok_orange {
+ label = "fast2504n:orange:ok";
+ gpios = <&pinctrl 29 1>;
+ };
+ wlan_orangee {
+ label = "fast2504n:orange:wlan";
+ gpios = <&pinctrl 30 1>;
+ };
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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 = "ok";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6362.dtsi b/target/linux/bcm63xx/dts/bcm6362.dtsi
new file mode 100644
index 0000000000..2ff5c52ad7
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6362.dtsi
@@ -0,0 +1,294 @@
+/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "brcm,bcm6362";
+
+ aliases {
+ 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>; */
+ };
+
+ 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 0000000000..05198a1c9a
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-actiontec-r1000h.dts
@@ -0,0 +1,108 @@
+/dts-v1/;
+
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Actiontec R1000H";
+ compatible = "actiontec,r1000h", "brcm,bcm6368";
+
+ 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 = "R1000H:green:inet";
+ gpios = <&pinctrl 5 0>;
+ };
+
+ usb_green {
+ label = "R1000H:green:usb";
+ gpios = <&pinctrl 21 1>;
+ };
+
+ power_green {
+ label = "R1000H:green:power";
+ gpios = <&pinctrl 22 0>;
+ default-state = "on";
+ };
+
+ wps_green {
+ label = "R1000H:green:wps";
+ gpios = <&pinctrl 23 1>;
+ };
+
+ power_red {
+ label = "R1000H:red:power";
+ gpios = <&pinctrl 24 0>;
+ };
+
+ wps_red {
+ label = "R1000H:red:wps";
+ gpios = <&pinctrl 30 1>;
+ };
+
+ inet_red {
+ label = "R1000H:red:inet";
+ gpios = <&pinctrl 31 0>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
+
+&uart1 {
+ status = "ok";
+};
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 0000000000..df9dc718e1
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-adb-av4202n.dts
@@ -0,0 +1,102 @@
+/dts-v1/;
+
+#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";
+
+ 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";
+
+ power_white {
+ label = "AV4202N:white:power";
+ gpios = <&pinctrl 10 GPIO_ACTIVE_LOW>;
+ default-state = "on";
+ };
+ power_red {
+ label = "AV4202N:red:power";
+ gpios = <&pinctrl 11 GPIO_ACTIVE_LOW>;
+ };
+ wan_white {
+ label = "AV4202N:white:wan";
+ gpios = <&pinctrl 26 GPIO_ACTIVE_LOW>;
+ };
+ wan_red {
+ label = "AV4202N:red:wan";
+ gpios = <&pinctrl 27 GPIO_ACTIVE_LOW>;
+ };
+ phone_white {
+ label = "AV4202N:white:phone";
+ gpios = <&pinctrl 24 GPIO_ACTIVE_LOW>;
+ };
+ phone_red {
+ label = "AV4202N:red:phone";
+ gpios = <&pinctrl 25 GPIO_ACTIVE_LOW>;
+ };
+ wifi {
+ label = "AV4202N:blue:wifi";
+ gpios = <&pinctrl 22 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..3df15144e4
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-brcm-bcm96368mvngr.dts
@@ -0,0 +1,58 @@
+/dts-v1/;
+
+#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 = "96368MVNgr:green:adsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ inet_fail_green {
+ label = "96368MVNgr:green:inet-fail";
+ gpios = <&pinctrl 3 0>;
+ };
+ inet_green {
+ label = "96368MVNgr:green:inet";
+ gpios = <&pinctrl 5 0>;
+ };
+ power_green {
+ label = "96368MVNgr:green:power";
+ gpios = <&pinctrl 22 0>;
+ default-state = "on";
+ };
+ wps_green {
+ label = "96368MVNgr:green:wps";
+ gpios = <&pinctrl 23 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+};
+
+&pinctrl {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_pci>;
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..1004f88396
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-brcm-bcm96368mvwg.dts
@@ -0,0 +1,58 @@
+/dts-v1/;
+
+#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 = "96368MVWG:green:adsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ ppp_green {
+ label = "96368MVWG:green:ppp";
+ gpios = <&pinctrl 5 0>;
+ };
+ power_green {
+ label = "96368MVWG:green:power";
+ gpios = <&pinctrl 22 0>;
+ default-state = "on";
+ };
+ wps_green {
+ label = "96368MVWG:green:wps";
+ gpios = <&pinctrl 23 1>;
+ };
+ ppp_fail_red {
+ label = "96368MVWG:red:ppp-fail";
+ gpios = <&pinctrl 31 0>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+};
+
+&pinctrl {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_pci>;
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..248ec1d73d
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3025u.dts
@@ -0,0 +1,92 @@
+/dts-v1/;
+
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Comtrend VR-3025u";
+ compatible = "comtrend,vr-3025u", "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 = "VR-3025u:green:dsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ inet_green {
+ label = "VR-3025u:green:inet";
+ gpios = <&pinctrl 5 0>;
+ };
+ power_green {
+ label = "VR-3025u:green:power";
+ gpios = <&pinctrl 22 0>;
+ default-state = "on";
+ };
+ power_red {
+ label = "VR-3025u:red:power";
+ gpios = <&pinctrl 24 0>;
+ };
+ inet_red {
+ label = "VR-3025u:red:inet";
+ gpios = <&pinctrl 31 0>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..ac1f896434
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3025un.dts
@@ -0,0 +1,92 @@
+/dts-v1/;
+
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Comtrend VR-3025un";
+ compatible = "comtrend,vr-3025un", "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 = "VR-3025un:green:dsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ inet_green {
+ label = "VR-3025un:green:inet";
+ gpios = <&pinctrl 5 0>;
+ };
+ power_green {
+ label = "VR-3025un:green:power";
+ gpios = <&pinctrl 22 0>;
+ default-state = "on";
+ };
+ power_red {
+ label = "VR-3025un:red:power";
+ gpios = <&pinctrl 24 0>;
+ };
+ inet_red {
+ label = "VR-3025un:red:inet";
+ gpios = <&pinctrl 31 0>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..8048d131a2
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-comtrend-vr-3026e.dts
@@ -0,0 +1,92 @@
+/dts-v1/;
+
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Comtrend VR-3026e";
+ compatible = "comtrend,vr-3026e", "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 = "VR-3026e:green:dsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ inet_green {
+ label = "VR-3026e:green:inet";
+ gpios = <&pinctrl 5 0>;
+ };
+ power_green {
+ label = "VR-3026e:green:power";
+ gpios = <&pinctrl 22 0>;
+ default-state = "on";
+ };
+ power_red {
+ label = "VR-3026e:red:power";
+ gpios = <&pinctrl 24 0>;
+ };
+ inet_red {
+ label = "VR-3026e:red:inet";
+ gpios = <&pinctrl 31 0>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..77ecc62abd
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-huawei-echolife-hg622.dts
@@ -0,0 +1,96 @@
+/dts-v1/;
+
+#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 = "HG622:green:dsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ inet_green {
+ label = "HG622:green:inet";
+ gpios = <&pinctrl 5 1>;
+ };
+ usb_green {
+ label = "HG622:green:usb";
+ gpios = <&pinctrl 11 1>;
+ };
+ power_green {
+ label = "HG622:green:power";
+ gpios = <&pinctrl 22 1>;
+ default-state = "on";
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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_pci_gnt0 &pinctrl_pci_req0
+ &pinctrl_pci_intb &pinctrl_pci_gnt1
+ &pinctrl_pci_req1>;
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..3f855bf0c9
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-huawei-echolife-hg655b.dts
@@ -0,0 +1,121 @@
+/dts-v1/;
+
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Huawei EchoLife HG655b";
+ compatible = "huawei,echolife-hg655b", "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>;
+
+ 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 = "HW65x:green:dsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ internet_green {
+ label = "HW65x:green:internet";
+ gpios = <&pinctrl 5 1>;
+ };
+
+ usb_green {
+ label = "HW65x:green:usb";
+ gpios = <&pinctrl 14 1>;
+ };
+ power_green {
+ label = "HW65x:green:power";
+ gpios = <&pinctrl 22 1>;
+ default-state = "on";
+ };
+ voip_green {
+ label = "HW65x:green:voip";
+ gpios = <&pinctrl 25 1>;
+ };
+ wps_green {
+ label = "HW65x:green:wps";
+ gpios = <&pinctrl 27 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..0354d8eddd
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-netgear-dgnd3700-v1.dts
@@ -0,0 +1,185 @@
+/dts-v1/;
+
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Netgear DGND3700v1/DGND3800B";
+ compatible = "netgear,dgnd3700-v1", "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>;
+
+ 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 = "DGND3700v1_3800B:green:dsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ inet_red {
+ label = "DGND3700v1_3800B:red:inet";
+ gpios = <&pinctrl 4 1>;
+ };
+ inet_green {
+ label = "DGND3700v1_3800B:green:inet";
+ gpios = <&pinctrl 5 1>;
+ };
+ wps_green {
+ label = "DGND3700v1_3800B:green:wps";
+ gpios = <&pinctrl 11 1>;
+ };
+ usbfront_green {
+ label = "DGND3700v1_3800B:green:usb-front";
+ gpios = <&pinctrl 13 1>;
+ };
+ usbback_green {
+ label = "DGND3700v1_3800B:green:usb-back";
+ gpios = <&pinctrl 14 1>;
+ };
+ power_red {
+ label = "DGND3700v1_3800B:red:power";
+ gpios = <&pinctrl 22 1>;
+ };
+ lan_green {
+ label = "DGND3700v1_3800B:green:lan";
+ gpios = <&pinctrl 23 1>;
+ };
+ power_green {
+ label = "DGND3700v1_3800B:green:power";
+ gpios = <&pinctrl 24 1>;
+ default-state = "on";
+ };
+ wifi2g_green {
+ label = "DGND3700v1_3800B:green:wifi2g";
+ gpios = <&pinctrl 26 1>;
+ };
+ wifi5g_blue {
+ label = "DGND3700v1_3800B:blue:wifi5g";
+ gpios = <&pinctrl 27 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "lan1";
+ };
+
+ lan@2 {
+ reg = <2>;
+ label = "lan2";
+ };
+
+ lan@3 {
+ reg = <3>;
+ label = "lan3";
+ };
+
+ lan@4 {
+ reg = <4>;
+ label = "lan4";
+ };
+
+ cpu@8 {
+ reg = <8>;
+ label = "cpu";
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+ };
+};
+
+&uart0 {
+ status = "ok";
+};
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 0000000000..48f35b16e7
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-observa-vh4032n.dts
@@ -0,0 +1,118 @@
+/dts-v1/;
+
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Observa VH4032N";
+ compatible = "observa,vh4032n", "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>;
+ };
+
+ wlan {
+ label = "wlan";
+ gpios = <&pinctrl 35 1>;
+ linux,code = <KEY_WLAN>;
+ debounce-interval = <60>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ dsl_blue {
+ label = "VH4032N:blue:dsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ dsl_red {
+ label = "VH4032N:red:dsl";
+ gpios = <&pinctrl 5 1>;
+ };
+ hspa_blue {
+ label = "VH4032N:blue:hspa";
+ gpios = <&pinctrl 11 1>;
+ };
+ hspa_red {
+ label = "VH4032N:red:hspa";
+ gpios = <&pinctrl 12 1>;
+ };
+ power_blue {
+ label = "VH4032N:blue:power";
+ gpios = <&pinctrl 22 0>;
+ default-state = "on";
+ };
+ power_red {
+ label = "VH4032N:red:power";
+ gpios = <&pinctrl 24 0>;
+ };
+ voice_blue {
+ label = "VH4032N:blue:voice";
+ gpios = <&pinctrl 25 1>;
+ };
+ voice_red {
+ label = "VH4032N: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 = "ok";
+
+ 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 = "ok";
+};
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 0000000000..c123832803
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368-zyxel-p870hw-51a-v2.dts
@@ -0,0 +1,98 @@
+/dts-v1/;
+
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Zyxel P870HW-51a v2";
+ compatible = "zyxel,p870hw-51a-v2", "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 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";
+
+ power_green {
+ label = "P870HW-51a:green:power";
+ gpios = <&pinctrl 0 0>;
+ default-state = "on";
+ };
+ dsl_green {
+ label = "P870HW-51a:green:dsl";
+ gpios = <&pinctrl 2 1>;
+ };
+ inet_green {
+ label = "P870HW-51a:green:inet";
+ gpios = <&pinctrl 22 1>;
+ };
+ wps_orange {
+ label = "P870HW-51a:orange:wps";
+ gpios = <&pinctrl 24 1>;
+ };
+ inet_red {
+ label = "P870HW-51a:red:inet";
+ gpios = <&pinctrl 33 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
diff --git a/target/linux/bcm63xx/dts/bcm6368.dtsi b/target/linux/bcm63xx/dts/bcm6368.dtsi
new file mode 100644
index 0000000000..b834f9ef0f
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6368.dtsi
@@ -0,0 +1,319 @@
+/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "brcm,bcm6368";
+
+ 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>; };
+
+ 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";
+ };
+
+ 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 0000000000..c6db2721de
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6369-comtrend-wap-5813n.dts
@@ -0,0 +1,157 @@
+/dts-v1/;
+
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Comtrend WAP-5813n";
+ compatible = "comtrend,wap-5813n", "brcm,bcm6369", "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>;
+
+ 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 = "WAP-5813n:green:inet";
+ gpios = <&pinctrl 5 0>;
+ };
+ power_green {
+ label = "WAP-5813n:green:power";
+ gpios = <&pinctrl 22 0>;
+ default-state = "on";
+ };
+ wps_green {
+ label = "WAP-5813n:green:wps";
+ gpios = <&pinctrl 23 1>;
+ };
+ power_red {
+ label = "WAP-5813n:red:power";
+ gpios = <&pinctrl 24 0>;
+ };
+ inet_red {
+ label = "WAP-5813n:red:inet";
+ gpios = <&pinctrl 31 0>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};
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 0000000000..93d4792740
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6369-netgear-evg2000.dts
@@ -0,0 +1,124 @@
+/dts-v1/;
+
+#include "bcm6368.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Netgear EVG2000";
+ compatible = "netgear,evg2000", "brcm,bcm6369", "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 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 = "EVG2000:green:voip1";
+ gpios = <&pinctrl 14 1>;
+ };
+ voip2_green {
+ label = "EVG2000:green:voip2";
+ gpios = <&pinctrl 2 1>;
+ };
+ inet_red {
+ label = "EVG2000:red:inet";
+ gpios = <&pinctrl 4 1>;
+ };
+ inet_green {
+ label = "EVG2000:green:inet";
+ gpios = <&pinctrl 5 1>;
+ };
+ usb_green {
+ label = "EVG2000:green:usb";
+ gpios = <&pinctrl 15 1>;
+ };
+ power_green {
+ label = "EVG2000:green:power";
+ gpios = <&pinctrl 22 1>;
+ default-state = "on";
+ };
+ power_red {
+ label = "EVG2000:red:power";
+ gpios = <&pinctrl 23 1>;
+ };
+ lan_green {
+ label = "EVG2000:green:lan";
+ gpios = <&pinctrl 24 1>;
+ };
+ wireless_green {
+ label = "EVG2000:green:wireless";
+ gpios = <&pinctrl 26 1>;
+ };
+ wan_green {
+ label = "EVG2000:green:wan";
+ gpios = <&pinctrl 27 1>;
+ };
+ };
+};
+
+&pflash {
+ status = "ok";
+
+ 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 = "ok";
+};