From: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Date: Sat, 15 Aug 2020 15:21:35 +0000 (+0200)
Subject: bcm63xx: reorganize board patches
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=d43b963b3d1172fbe7e3f57f88da11e4d7e54c95;p=openwrt%2Fstaging%2Fxback.git

bcm63xx: reorganize board patches

This renames board patches to make finding devices easier
and reorders them based on their board.

The devices are grouped based on the board/cpu_id. New device
patches should be numbered based on their group.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
---

diff --git a/target/linux/bcm63xx/patches-5.4/369-MIPS-BCM63XX-populate-the-compatible-to-board_info-l.patch b/target/linux/bcm63xx/patches-5.4/369-MIPS-BCM63XX-populate-the-compatible-to-board_info-l.patch
deleted file mode 100644
index 0221e75bfc..0000000000
--- a/target/linux/bcm63xx/patches-5.4/369-MIPS-BCM63XX-populate-the-compatible-to-board_info-l.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From e71eea9953c774dfadb754258824fb1888c279f4 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jogo@openwrt.org>
-Date: Fri, 21 Nov 2014 16:54:06 +0100
-Subject: [PATCH 47/48] MIPS: BCM63XX: populate the compatible to board_info
- list
-
-Populate the compatible to board_info list to allow dtbs to be used
-for known boards.
-
-Signed-off-by: Jonas Gorski <jogo@openwrt.org>
----
- arch/mips/bcm63xx/boards/board_bcm963xx.c |   34 +++++++++++++++++++++++++++++
- 1 file changed, 34 insertions(+)
-
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -693,6 +693,52 @@ static const struct board_info __initcon
- };
- 
- static struct of_device_id const bcm963xx_boards_dt[] = {
-+#ifdef CONFIG_OF
-+#ifdef CONFIG_BCM63XX_CPU_3368
-+	{ .compatible = "netgear,cvg834g", .data = &board_cvg834g, },
-+#endif /* CONFIG_BCM63XX_CPU_3368 */
-+#ifdef CONFIG_BCM63XX_CPU_6318
-+#endif /* CONFIG_BCM63XX_CPU_6318 */
-+#ifdef CONFIG_BCM63XX_CPU_6328
-+	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
-+#endif /* CONFIG_BCM63XX_CPU_6328 */
-+#ifdef CONFIG_BCM63XX_CPU_6338
-+	{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
-+	{ .compatible = "brcm,bcm96338w", .data = &board_96338w, },
-+#endif /* CONFIG_BCM63XX_CPU_6338 */
-+#ifdef CONFIG_BCM63XX_CPU_6345
-+	{ .compatible = "brcm,bcm96345gw2", .data = &board_96345gw2, },
-+#endif /* CONFIG_BCM63XX_CPU_6345 */
-+#ifdef CONFIG_BCM63XX_CPU_6348
-+	{ .compatible = "belkin,f5d7633", .data = &board_96348gw_10, },
-+	{ .compatible = "brcm,bcm96348r", .data = &board_96348r, },
-+	{ .compatible = "brcm,bcm96348gw-10", .data = &board_96348gw_10, },
-+	{ .compatible = "brcm,bcm96348gw-11", .data = &board_96348gw_11, },
-+	{ .compatible = "brcm,bcm96348gw-a", .data = &board_96348gw_a, },
-+	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
-+	{ .compatible = "dynalink,rta1025w", .data = &board_rta1025w_16, },
-+	{ .compatible = "netgear,dg834gt-pn", .data = &board_96348gw_10, },
-+	{ .compatible = "sagem,fast-2404", .data = &board_FAST2404, },
-+	{ .compatible = "tp-link,td-w8900gb", .data = &board_96348gw_11, },
-+	{ .compatible = "usrobotics,usr9108", .data = &board_96348gw_a, },
-+#endif /* CONFIG_BCM63XX_CPU_6348 */
-+#ifdef CONFIG_BCM63XX_CPU_6358
-+	{ .compatible = "alcatel,rg100a", .data = &board_96358vw2, },
-+	{ .compatible = "brcm,bcm96358vw", .data = &board_96358vw, },
-+	{ .compatible = "brcm,bcm96358vw2", .data = &board_96358vw2, },
-+	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
-+	{ .compatible = "pirelli,a226g", .data = &board_DWVS0, },
-+	{ .compatible = "pirelli,a226m", .data = &board_DWVS0, },
-+	{ .compatible = "pirelli,a226m-fwb", .data = &board_DWVS0, },
-+	{ .compatible = "pirelli,agpf-s0", .data = &board_AGPFS0, },
-+#endif /* CONFIG_BCM63XX_CPU_6358 */
-+#ifdef CONFIG_BCM63XX_CPU_6362
-+#endif /* CONFIG_BCM63XX_CPU_6362 */
-+#ifdef CONFIG_BCM63XX_CPU_6368
-+#endif /* CONFIG_BCM63XX_CPU_6368 */
-+#ifdef CONFIG_BCM63XX_CPU_63268
-+#endif /* CONFIG_BCM63XX_CPU_63268 */
-+#endif /* CONFIG_OF */
- 	{ },
- };
- 
diff --git a/target/linux/bcm63xx/patches-5.4/500-MIPS-BCM63XX-populate-the-compatible-to-board_info-l.patch b/target/linux/bcm63xx/patches-5.4/500-MIPS-BCM63XX-populate-the-compatible-to-board_info-l.patch
new file mode 100644
index 0000000000..62f872dd32
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/500-MIPS-BCM63XX-populate-the-compatible-to-board_info-l.patch
@@ -0,0 +1,69 @@
+From e71eea9953c774dfadb754258824fb1888c279f4 Mon Sep 17 00:00:00 2001
+From: Jonas Gorski <jogo@openwrt.org>
+Date: Fri, 21 Nov 2014 16:54:06 +0100
+Subject: [PATCH 47/48] MIPS: BCM63XX: populate the compatible to board_info
+ list
+
+Populate the compatible to board_info list to allow dtbs to be used
+for known boards.
+
+Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+---
+ arch/mips/bcm63xx/boards/board_bcm963xx.c |   34 +++++++++++++++++++++++++++++
+ 1 file changed, 34 insertions(+)
+
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -439,6 +439,52 @@ static const struct board_info __initcon
+ };
+ 
+ static struct of_device_id const bcm963xx_boards_dt[] = {
++#ifdef CONFIG_OF
++#ifdef CONFIG_BCM63XX_CPU_3368
++	{ .compatible = "netgear,cvg834g", .data = &board_cvg834g, },
++#endif /* CONFIG_BCM63XX_CPU_3368 */
++#ifdef CONFIG_BCM63XX_CPU_6318
++#endif /* CONFIG_BCM63XX_CPU_6318 */
++#ifdef CONFIG_BCM63XX_CPU_6328
++	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
++#endif /* CONFIG_BCM63XX_CPU_6328 */
++#ifdef CONFIG_BCM63XX_CPU_6338
++	{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
++	{ .compatible = "brcm,bcm96338w", .data = &board_96338w, },
++#endif /* CONFIG_BCM63XX_CPU_6338 */
++#ifdef CONFIG_BCM63XX_CPU_6345
++	{ .compatible = "brcm,bcm96345gw2", .data = &board_96345gw2, },
++#endif /* CONFIG_BCM63XX_CPU_6345 */
++#ifdef CONFIG_BCM63XX_CPU_6348
++	{ .compatible = "belkin,f5d7633", .data = &board_96348gw_10, },
++	{ .compatible = "brcm,bcm96348r", .data = &board_96348r, },
++	{ .compatible = "brcm,bcm96348gw-10", .data = &board_96348gw_10, },
++	{ .compatible = "brcm,bcm96348gw-11", .data = &board_96348gw_11, },
++	{ .compatible = "brcm,bcm96348gw-a", .data = &board_96348gw_a, },
++	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
++	{ .compatible = "dynalink,rta1025w", .data = &board_rta1025w_16, },
++	{ .compatible = "netgear,dg834gt-pn", .data = &board_96348gw_10, },
++	{ .compatible = "sagem,fast-2404", .data = &board_FAST2404, },
++	{ .compatible = "tp-link,td-w8900gb", .data = &board_96348gw_11, },
++	{ .compatible = "usrobotics,usr9108", .data = &board_96348gw_a, },
++#endif /* CONFIG_BCM63XX_CPU_6348 */
++#ifdef CONFIG_BCM63XX_CPU_6358
++	{ .compatible = "alcatel,rg100a", .data = &board_96358vw2, },
++	{ .compatible = "brcm,bcm96358vw", .data = &board_96358vw, },
++	{ .compatible = "brcm,bcm96358vw2", .data = &board_96358vw2, },
++	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
++	{ .compatible = "pirelli,a226g", .data = &board_DWVS0, },
++	{ .compatible = "pirelli,a226m", .data = &board_DWVS0, },
++	{ .compatible = "pirelli,a226m-fwb", .data = &board_DWVS0, },
++	{ .compatible = "pirelli,agpf-s0", .data = &board_AGPFS0, },
++#endif /* CONFIG_BCM63XX_CPU_6358 */
++#ifdef CONFIG_BCM63XX_CPU_6362
++#endif /* CONFIG_BCM63XX_CPU_6362 */
++#ifdef CONFIG_BCM63XX_CPU_6368
++#endif /* CONFIG_BCM63XX_CPU_6368 */
++#ifdef CONFIG_BCM63XX_CPU_63268
++#endif /* CONFIG_BCM63XX_CPU_63268 */
++#endif /* CONFIG_OF */
+ 	{ },
+ };
+ 
diff --git a/target/linux/bcm63xx/patches-5.4/500-board-D4PW.patch b/target/linux/bcm63xx/patches-5.4/500-board-D4PW.patch
deleted file mode 100644
index 399fda760d..0000000000
--- a/target/linux/bcm63xx/patches-5.4/500-board-D4PW.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -294,6 +294,21 @@ static struct board_info __initdata boar
- 
- 	.has_ohci0 = 1,
- };
-+
-+static struct board_info __initdata board_96348_D4PW = {
-+	.name = "D-4P-W",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pci = 1,
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- 
- /*
-@@ -429,6 +444,7 @@ static const struct board_info __initcon
- 	&board_DV201AMR,
- 	&board_96348gw_a,
- 	&board_rta1025w_16,
-+	&board_96348_D4PW,
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- #ifdef CONFIG_BCM63XX_CPU_6358
- 	&board_96358vw,
-@@ -461,6 +477,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "brcm,bcm96348gw-10", .data = &board_96348gw_10, },
- 	{ .compatible = "brcm,bcm96348gw-11", .data = &board_96348gw_11, },
- 	{ .compatible = "brcm,bcm96348gw-a", .data = &board_96348gw_a, },
-+	{ .compatible = "d-link,dsl-2640b-b", .data = &board_96348_D4PW, },
- 	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
- 	{ .compatible = "dynalink,rta1025w", .data = &board_rta1025w_16, },
- 	{ .compatible = "netgear,dg834gt-pn", .data = &board_96348gw_10, },
diff --git a/target/linux/bcm63xx/patches-5.4/501-board-NB4.patch b/target/linux/bcm63xx/patches-5.4/501-board-NB4.patch
deleted file mode 100644
index 9eb7655d33..0000000000
--- a/target/linux/bcm63xx/patches-5.4/501-board-NB4.patch
+++ /dev/null
@@ -1,77 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -416,6 +416,56 @@ static struct board_info __initdata boar
- 
- 	.has_ohci0			= 1,
- };
-+
-+static struct board_info __initdata board_nb4_ser_r0 = {
-+	.name = "NB4-SER-r0",
-+	.expected_cpu_id = 0x6358,
-+
-+	.has_pccard = 1,
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.use_internal_phy = 1,
-+	},
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
-+
-+static struct board_info __initdata board_nb4_fxc_r1 = {
-+	.name = "NB4-FXC-r1",
-+	.expected_cpu_id = 0x6358,
-+
-+	.has_pccard = 1,
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.use_internal_phy = 1,
-+	},
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- 
- /*
-@@ -451,6 +501,8 @@ static const struct board_info __initcon
- 	&board_96358vw2,
- 	&board_AGPFS0,
- 	&board_DWVS0,
-+	&board_nb4_ser_r0,
-+	&board_nb4_fxc_r1,
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- };
- 
-@@ -494,6 +546,8 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "pirelli,a226m", .data = &board_DWVS0, },
- 	{ .compatible = "pirelli,a226m-fwb", .data = &board_DWVS0, },
- 	{ .compatible = "pirelli,agpf-s0", .data = &board_AGPFS0, },
-+	{ .compatible = "sfr,neufbox-4-sercomm-r0", .data = &board_nb4_ser_r0, },
-+	{ .compatible = "sfr,neufbox-4-foxconn-r1", .data = &board_nb4_fxc_r1, },
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- #ifdef CONFIG_BCM63XX_CPU_6362
- #endif /* CONFIG_BCM63XX_CPU_6362 */
diff --git a/target/linux/bcm63xx/patches-5.4/501-board_bcm6318-brcm-bcm96318ref.patch b/target/linux/bcm63xx/patches-5.4/501-board_bcm6318-brcm-bcm96318ref.patch
new file mode 100644
index 0000000000..0313285eaa
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/501-board_bcm6318-brcm-bcm96318ref.patch
@@ -0,0 +1,74 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -49,6 +49,53 @@ static struct board_info __initdata boar
+ #endif /* CONFIG_BCM63XX_CPU_3368 */
+ 
+ /*
++ * known 6318 boards
++ */
++#ifdef CONFIG_BCM63XX_CPU_6318
++static struct board_info __initdata board_96318ref = {
++	.name = "96318REF",
++	.expected_cpu_id = 0x6318,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_usbd = 1,
++	.usbd = {
++		.use_fullspeed = 0,
++		.port_no = 0,
++	},
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++};
++#endif /* CONFIG_BCM63XX_CPU_6318 */
++
++/*
+  * known 6328 boards
+  */
+ #ifdef CONFIG_BCM63XX_CPU_6328
+@@ -410,6 +457,9 @@ static const struct board_info __initcon
+ #ifdef CONFIG_BCM63XX_CPU_3368
+ 	&board_cvg834g,
+ #endif /* CONFIG_BCM63XX_CPU_3368 */
++#ifdef CONFIG_BCM63XX_CPU_6318
++	&board_96318ref,
++#endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	&board_96328avng,
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+@@ -444,6 +494,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "netgear,cvg834g", .data = &board_cvg834g, },
+ #endif /* CONFIG_BCM63XX_CPU_3368 */
+ #ifdef CONFIG_BCM63XX_CPU_6318
++	{ .compatible = "brcm,bcm96318ref", .data = &board_96318ref, },
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
diff --git a/target/linux/bcm63xx/patches-5.4/502-board-96338W2_E7T.patch b/target/linux/bcm63xx/patches-5.4/502-board-96338W2_E7T.patch
deleted file mode 100644
index ccf9fa5ce4..0000000000
--- a/target/linux/bcm63xx/patches-5.4/502-board-96338W2_E7T.patch
+++ /dev/null
@@ -1,38 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -98,6 +98,19 @@ static struct board_info __initdata boar
- 		.force_duplex_full	= 1,
- 	},
- };
-+
-+static struct board_info __initdata board_96338w2_e7t = {
-+	.name = "96338W2_E7T",
-+	.expected_cpu_id = 0x6338,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6338 */
- 
- /*
-@@ -481,6 +494,7 @@ static const struct board_info __initcon
- #ifdef CONFIG_BCM63XX_CPU_6338
- 	&board_96338gw,
- 	&board_96338w,
-+	&board_96338w2_e7t,
- #endif /* CONFIG_BCM63XX_CPU_6338 */
- #ifdef CONFIG_BCM63XX_CPU_6345
- 	&board_96345gw2,
-@@ -519,6 +533,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_6338
- 	{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
- 	{ .compatible = "brcm,bcm96338w", .data = &board_96338w, },
-+	{ .compatible = "d-link,dsl-2640u", .data = &board_96338w2_e7t, },
- #endif /* CONFIG_BCM63XX_CPU_6338 */
- #ifdef CONFIG_BCM63XX_CPU_6345
- 	{ .compatible = "brcm,bcm96345gw2", .data = &board_96345gw2, },
diff --git a/target/linux/bcm63xx/patches-5.4/502-board_bcm6318-brcm-bcm96318ref-p300.patch b/target/linux/bcm63xx/patches-5.4/502-board_bcm6318-brcm-bcm96318ref-p300.patch
new file mode 100644
index 0000000000..1796d066a5
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/502-board_bcm6318-brcm-bcm96318ref-p300.patch
@@ -0,0 +1,67 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -93,6 +93,48 @@ static struct board_info __initdata boar
+ 		},
+ 	},
+ };
++
++static struct board_info __initdata board_96318ref_p300 = {
++	.name = "96318REF_P300",
++	.expected_cpu_id = 0x6318,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_usbd = 1,
++	.usbd = {
++		.use_fullspeed = 0,
++		.port_no = 0,
++	},
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ 
+ /*
+@@ -459,6 +501,7 @@ static const struct board_info __initcon
+ #endif /* CONFIG_BCM63XX_CPU_3368 */
+ #ifdef CONFIG_BCM63XX_CPU_6318
+ 	&board_96318ref,
++	&board_96318ref_p300,
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	&board_96328avng,
+@@ -495,6 +538,7 @@ static struct of_device_id const bcm963x
+ #endif /* CONFIG_BCM63XX_CPU_3368 */
+ #ifdef CONFIG_BCM63XX_CPU_6318
+ 	{ .compatible = "brcm,bcm96318ref", .data = &board_96318ref, },
++	{ .compatible = "brcm,bcm96318ref-p300", .data = &board_96318ref_p300, },
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
diff --git a/target/linux/bcm63xx/patches-5.4/503-board-CPVA642.patch b/target/linux/bcm63xx/patches-5.4/503-board-CPVA642.patch
deleted file mode 100644
index 26a107c6b5..0000000000
--- a/target/linux/bcm63xx/patches-5.4/503-board-CPVA642.patch
+++ /dev/null
@@ -1,42 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -382,6 +382,23 @@ static struct board_info __initdata boar
- 	.num_usbh_ports			= 2,
- };
- 
-+static struct board_info __initdata board_CPVA642 = {
-+	.name = "CPVA642",
-+	.expected_cpu_id = 0x6358,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+ 	},
-+};
-+
- static struct board_info __initdata board_AGPFS0 = {
- 	.name				= "AGPF-S0",
- 	.expected_cpu_id		= 0x6358,
-@@ -514,6 +531,7 @@ static const struct board_info __initcon
- 	&board_96358vw,
- 	&board_96358vw2,
- 	&board_AGPFS0,
-+	&board_CPVA642,
- 	&board_DWVS0,
- 	&board_nb4_ser_r0,
- 	&board_nb4_fxc_r1,
-@@ -563,6 +581,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "pirelli,agpf-s0", .data = &board_AGPFS0, },
- 	{ .compatible = "sfr,neufbox-4-sercomm-r0", .data = &board_nb4_ser_r0, },
- 	{ .compatible = "sfr,neufbox-4-foxconn-r1", .data = &board_nb4_fxc_r1, },
-+	{ .compatible = "telsey,cpva642", .data = &board_CPVA642, },
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- #ifdef CONFIG_BCM63XX_CPU_6362
- #endif /* CONFIG_BCM63XX_CPU_6362 */
diff --git a/target/linux/bcm63xx/patches-5.4/503-board_bcm6318-d-link-dsl-275xb-d.patch b/target/linux/bcm63xx/patches-5.4/503-board_bcm6318-d-link-dsl-275xb-d.patch
new file mode 100644
index 0000000000..05022aa277
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/503-board_bcm6318-d-link-dsl-275xb-d.patch
@@ -0,0 +1,91 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -135,6 +135,72 @@ static struct board_info __initdata boar
+ 		},
+ 	},
+ };
++
++static struct sprom_fixup __initdata dsl2751b_e1_fixups[] = {
++	{ .offset = 96, .value = 0x2046 },
++	{ .offset = 97, .value = 0xfe9d },
++	{ .offset = 98, .value = 0x1854 },
++	{ .offset = 99, .value = 0xfa59 },
++	{ .offset = 112, .value = 0x2046 },
++	{ .offset = 113, .value = 0xfe79 },
++	{ .offset = 114, .value = 0x17f5 },
++	{ .offset = 115, .value = 0xfa47 },
++	{ .offset = 161, .value = 0x2222 },
++	{ .offset = 162, .value = 0x2222 },
++	{ .offset = 169, .value = 0x2222 },
++	{ .offset = 170, .value = 0x2222 },
++	{ .offset = 171, .value = 0x5555 },
++	{ .offset = 172, .value = 0x5555 },
++	{ .offset = 173, .value = 0x4444 },
++	{ .offset = 174, .value = 0x4444 },
++	{ .offset = 175, .value = 0x5555 },
++	{ .offset = 176, .value = 0x5555 },
++};
++
++static struct board_info __initdata board_dsl_2751b_d1 = {
++	.name = "AW5200B",
++	.expected_cpu_id = 0x6318,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43217,
++		.pci_bus = 1,
++		.pci_dev = 0,
++		.board_fixups = dsl2751b_e1_fixups,
++		.num_board_fixups = ARRAY_SIZE(dsl2751b_e1_fixups),
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ 
+ /*
+@@ -502,6 +568,7 @@ static const struct board_info __initcon
+ #ifdef CONFIG_BCM63XX_CPU_6318
+ 	&board_96318ref,
+ 	&board_96318ref_p300,
++	&board_dsl_2751b_d1,
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	&board_96328avng,
+@@ -539,6 +606,7 @@ static struct of_device_id const bcm963x
+ #ifdef CONFIG_BCM63XX_CPU_6318
+ 	{ .compatible = "brcm,bcm96318ref", .data = &board_96318ref, },
+ 	{ .compatible = "brcm,bcm96318ref-p300", .data = &board_96318ref_p300, },
++	{ .compatible = "d-link,dsl-275xb-d1", .data = &board_dsl_2751b_d1, },
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
diff --git a/target/linux/bcm63xx/patches-5.4/504-board_bcm6318-sagem-fast-2704n.patch b/target/linux/bcm63xx/patches-5.4/504-board_bcm6318-sagem-fast-2704n.patch
new file mode 100644
index 0000000000..2bb1f60241
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/504-board_bcm6318-sagem-fast-2704n.patch
@@ -0,0 +1,68 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -201,6 +201,49 @@ static struct board_info __initdata boar
+ 		.num_board_fixups = ARRAY_SIZE(dsl2751b_e1_fixups),
+ 	},
+ };
++
++static struct board_info __initdata board_FAST2704N = {
++	.name = "F@ST2704N",
++	.expected_cpu_id = 0x6318,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43217,
++		.pci_bus = 1,
++		.pci_dev = 0,
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ 
+ /*
+@@ -569,6 +612,7 @@ static const struct board_info __initcon
+ 	&board_96318ref,
+ 	&board_96318ref_p300,
+ 	&board_dsl_2751b_d1,
++	&board_FAST2704N,
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	&board_96328avng,
+@@ -607,6 +651,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "brcm,bcm96318ref", .data = &board_96318ref, },
+ 	{ .compatible = "brcm,bcm96318ref-p300", .data = &board_96318ref_p300, },
+ 	{ .compatible = "d-link,dsl-275xb-d1", .data = &board_dsl_2751b_d1, },
++	{ .compatible = "sagem,fast-2704n", .data = &board_FAST2704N, },
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
diff --git a/target/linux/bcm63xx/patches-5.4/504-board_dsl_274xb_rev_c.patch b/target/linux/bcm63xx/patches-5.4/504-board_dsl_274xb_rev_c.patch
deleted file mode 100644
index 90ece67f71..0000000000
--- a/target/linux/bcm63xx/patches-5.4/504-board_dsl_274xb_rev_c.patch
+++ /dev/null
@@ -1,41 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -447,6 +447,22 @@ static struct board_info __initdata boar
- 	.has_ohci0			= 1,
- };
- 
-+/* D-Link DSL-274xB revison C2/C3 */
-+static struct board_info __initdata board_dsl_274xb_rev_c = {
-+	.name = "AW4139",
-+	.expected_cpu_id = 0x6358,
-+
-+	.has_pci = 1,
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
-+
- static struct board_info __initdata board_nb4_ser_r0 = {
- 	.name = "NB4-SER-r0",
- 	.expected_cpu_id = 0x6358,
-@@ -533,6 +549,7 @@ static const struct board_info __initcon
- 	&board_AGPFS0,
- 	&board_CPVA642,
- 	&board_DWVS0,
-+	&board_dsl_274xb_rev_c,
- 	&board_nb4_ser_r0,
- 	&board_nb4_fxc_r1,
- #endif /* CONFIG_BCM63XX_CPU_6358 */
-@@ -574,6 +591,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "alcatel,rg100a", .data = &board_96358vw2, },
- 	{ .compatible = "brcm,bcm96358vw", .data = &board_96358vw, },
- 	{ .compatible = "brcm,bcm96358vw2", .data = &board_96358vw2, },
-+	{ .compatible = "d-link,dsl-274xb-c2", .data = &board_dsl_274xb_rev_c, },
- 	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
- 	{ .compatible = "pirelli,a226g", .data = &board_DWVS0, },
- 	{ .compatible = "pirelli,a226m", .data = &board_DWVS0, },
diff --git a/target/linux/bcm63xx/patches-5.4/505-board_bcm6318-comtrend-ar-5315u.patch b/target/linux/bcm63xx/patches-5.4/505-board_bcm6318-comtrend-ar-5315u.patch
new file mode 100644
index 0000000000..dc480f239d
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/505-board_bcm6318-comtrend-ar-5315u.patch
@@ -0,0 +1,84 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -136,6 +136,65 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct sprom_fixup __initdata ar5315u_fixups[] = {
++	{ .offset = 6, .value = 0x1c00 },
++	{ .offset = 65, .value = 0x1255 },
++	{ .offset = 97, .value = 0xfe55 },
++	{ .offset = 98, .value = 0x171d },
++	{ .offset = 99, .value = 0xfa42 },
++	{ .offset = 113, .value = 0xfeb7 },
++	{ .offset = 114, .value = 0x18cd },
++	{ .offset = 115, .value = 0xfa4f },
++	{ .offset = 162, .value = 0x6444 },
++	{ .offset = 170, .value = 0x6444 },
++	{ .offset = 172, .value = 0x6444 },
++};
++
++static struct board_info __initdata board_AR5315u = {
++	.name = "96318A-1441N1",
++	.expected_cpu_id = 0x6318,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "LAN4",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "LAN3",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "LAN2",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "LAN1",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43217,
++		.pci_bus = 1,
++		.pci_dev = 0,
++		.board_fixups = ar5315u_fixups,
++		.num_board_fixups = ARRAY_SIZE(ar5315u_fixups),
++	},
++};
++
+ static struct sprom_fixup __initdata dsl2751b_e1_fixups[] = {
+ 	{ .offset = 96, .value = 0x2046 },
+ 	{ .offset = 97, .value = 0xfe9d },
+@@ -611,6 +670,7 @@ static const struct board_info __initcon
+ #ifdef CONFIG_BCM63XX_CPU_6318
+ 	&board_96318ref,
+ 	&board_96318ref_p300,
++	&board_AR5315u,
+ 	&board_dsl_2751b_d1,
+ 	&board_FAST2704N,
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+@@ -650,6 +710,7 @@ static struct of_device_id const bcm963x
+ #ifdef CONFIG_BCM63XX_CPU_6318
+ 	{ .compatible = "brcm,bcm96318ref", .data = &board_96318ref, },
+ 	{ .compatible = "brcm,bcm96318ref-p300", .data = &board_96318ref_p300, },
++	{ .compatible = "comtrend,ar-5315u", .data = &board_AR5315u, },
+ 	{ .compatible = "d-link,dsl-275xb-d1", .data = &board_dsl_2751b_d1, },
+ 	{ .compatible = "sagem,fast-2704n", .data = &board_FAST2704N, },
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
diff --git a/target/linux/bcm63xx/patches-5.4/505-board_spw500v.patch b/target/linux/bcm63xx/patches-5.4/505-board_spw500v.patch
deleted file mode 100644
index 4f57d441bc..0000000000
--- a/target/linux/bcm63xx/patches-5.4/505-board_spw500v.patch
+++ /dev/null
@@ -1,55 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -322,6 +322,36 @@ static struct board_info __initdata boar
- 		.force_duplex_full = 1,
- 	},
- };
-+
-+static struct sprom_fixup __initdata spw500v_fixups[] = {
-+	{ .offset = 46, .value = 0x3046 },
-+	{ .offset = 47, .value = 0x15a7 },
-+	{ .offset = 48, .value = 0xfa89 },
-+	{ .offset = 49, .value = 0xfe79 },
-+	{ .offset = 57, .value = 0x6a49 },
-+};
-+
-+static struct board_info __initdata board_spw500v = {
-+	.name = "SPW500V",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pci = 1,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.use_internal_phy = 1,
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM4318,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+		.board_fixups = spw500v_fixups,
-+		.num_board_fixups = ARRAY_SIZE(spw500v_fixups),
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- 
- /*
-@@ -542,6 +572,7 @@ static const struct board_info __initcon
- 	&board_96348gw_a,
- 	&board_rta1025w_16,
- 	&board_96348_D4PW,
-+	&board_spw500v,
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- #ifdef CONFIG_BCM63XX_CPU_6358
- 	&board_96358vw,
-@@ -584,6 +615,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "dynalink,rta1025w", .data = &board_rta1025w_16, },
- 	{ .compatible = "netgear,dg834gt-pn", .data = &board_96348gw_10, },
- 	{ .compatible = "sagem,fast-2404", .data = &board_FAST2404, },
-+	{ .compatible = "t-com,speedport-w-500v", .data = &board_spw500v, },
- 	{ .compatible = "tp-link,td-w8900gb", .data = &board_96348gw_11, },
- 	{ .compatible = "usrobotics,usr9108", .data = &board_96348gw_a, },
- #endif /* CONFIG_BCM63XX_CPU_6348 */
diff --git a/target/linux/bcm63xx/patches-5.4/506-board_gw6200_gw6000.patch b/target/linux/bcm63xx/patches-5.4/506-board_gw6200_gw6000.patch
deleted file mode 100644
index 1384ac6b07..0000000000
--- a/target/linux/bcm63xx/patches-5.4/506-board_gw6200_gw6000.patch
+++ /dev/null
@@ -1,67 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -216,6 +216,46 @@ static struct board_info __initdata boar
- 	.has_ohci0 = 1,
- };
- 
-+static struct board_info __initdata board_gw6200 = {
-+	.name = "GW6200",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.use_internal_phy = 1,
-+	},
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
-+
-+static struct board_info __initdata board_gw6000 = {
-+	.name = "GW6000",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.use_internal_phy = 1,
-+	},
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
-+
- static struct board_info __initdata board_FAST2404 = {
- 	.name				= "F@ST2404",
- 	.expected_cpu_id		= 0x6348,
-@@ -565,6 +605,8 @@ static const struct board_info __initcon
- #ifdef CONFIG_BCM63XX_CPU_6348
- 	&board_96348r,
- 	&board_96348gw,
-+	&board_gw6000,
-+	&board_gw6200,
- 	&board_96348gw_10,
- 	&board_96348gw_11,
- 	&board_FAST2404,
-@@ -616,6 +658,8 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "netgear,dg834gt-pn", .data = &board_96348gw_10, },
- 	{ .compatible = "sagem,fast-2404", .data = &board_FAST2404, },
- 	{ .compatible = "t-com,speedport-w-500v", .data = &board_spw500v, },
-+	{ .compatible = "tecom,gw6000", .data = &board_gw6000, },
-+	{ .compatible = "tecom,gw6200", .data = &board_gw6200, },
- 	{ .compatible = "tp-link,td-w8900gb", .data = &board_96348gw_11, },
- 	{ .compatible = "usrobotics,usr9108", .data = &board_96348gw_a, },
- #endif /* CONFIG_BCM63XX_CPU_6348 */
diff --git a/target/linux/bcm63xx/patches-5.4/507-board-MAGIC.patch b/target/linux/bcm63xx/patches-5.4/507-board-MAGIC.patch
deleted file mode 100644
index 58bd2f3983..0000000000
--- a/target/linux/bcm63xx/patches-5.4/507-board-MAGIC.patch
+++ /dev/null
@@ -1,49 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -392,6 +392,30 @@ static struct board_info __initdata boar
- 		.num_board_fixups = ARRAY_SIZE(spw500v_fixups),
- 	},
- };
-+
-+static struct board_info __initdata board_96348sv = {
-+	.name = "MAGIC",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pccard = 1,
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.use_internal_phy = 1,
-+	},
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		/* it has BP_ENET_EXTERNAL_PHY */
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- 
- /*
-@@ -615,6 +639,7 @@ static const struct board_info __initcon
- 	&board_rta1025w_16,
- 	&board_96348_D4PW,
- 	&board_spw500v,
-+	&board_96348sv,
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- #ifdef CONFIG_BCM63XX_CPU_6358
- 	&board_96358vw,
-@@ -660,6 +685,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "t-com,speedport-w-500v", .data = &board_spw500v, },
- 	{ .compatible = "tecom,gw6000", .data = &board_gw6000, },
- 	{ .compatible = "tecom,gw6200", .data = &board_gw6200, },
-+	{ .compatible = "telsey,magic", .data = &board_96348sv, },
- 	{ .compatible = "tp-link,td-w8900gb", .data = &board_96348gw_11, },
- 	{ .compatible = "usrobotics,usr9108", .data = &board_96348gw_a, },
- #endif /* CONFIG_BCM63XX_CPU_6348 */
diff --git a/target/linux/bcm63xx/patches-5.4/508-board_hw553.patch b/target/linux/bcm63xx/patches-5.4/508-board_hw553.patch
deleted file mode 100644
index b03b14f96e..0000000000
--- a/target/linux/bcm63xx/patches-5.4/508-board_hw553.patch
+++ /dev/null
@@ -1,50 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -606,6 +606,31 @@ static struct board_info __initdata boar
- 		.force_duplex_full = 1,
- 	},
- };
-+
-+static struct board_info __initdata board_HW553 = {
-+	.name = "HW553",
-+	.expected_cpu_id = 0x6358,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM4318,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- 
- /*
-@@ -650,6 +675,7 @@ static const struct board_info __initcon
- 	&board_dsl_274xb_rev_c,
- 	&board_nb4_ser_r0,
- 	&board_nb4_fxc_r1,
-+	&board_HW553,
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- };
- 
-@@ -695,6 +721,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "brcm,bcm96358vw2", .data = &board_96358vw2, },
- 	{ .compatible = "d-link,dsl-274xb-c2", .data = &board_dsl_274xb_rev_c, },
- 	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
-+	{ .compatible = "huawei,echolife-hg553", .data = &board_HW553, },
- 	{ .compatible = "pirelli,a226g", .data = &board_DWVS0, },
- 	{ .compatible = "pirelli,a226m", .data = &board_DWVS0, },
- 	{ .compatible = "pirelli,a226m-fwb", .data = &board_DWVS0, },
diff --git a/target/linux/bcm63xx/patches-5.4/509-board_rta1320_16m.patch b/target/linux/bcm63xx/patches-5.4/509-board_rta1320_16m.patch
deleted file mode 100644
index 1cc900baf9..0000000000
--- a/target/linux/bcm63xx/patches-5.4/509-board_rta1320_16m.patch
+++ /dev/null
@@ -1,38 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -111,6 +111,19 @@ static struct board_info __initdata boar
- 		.force_duplex_full = 1,
- 	},
- };
-+
-+static struct board_info __initdata board_rta1320_16m = {
-+	.name = "RTA1320_16M",
-+	.expected_cpu_id = 0x6338,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6338 */
- 
- /*
-@@ -647,6 +660,7 @@ static const struct board_info __initcon
- 	&board_96338gw,
- 	&board_96338w,
- 	&board_96338w2_e7t,
-+	&board_rta1320_16m,
- #endif /* CONFIG_BCM63XX_CPU_6338 */
- #ifdef CONFIG_BCM63XX_CPU_6345
- 	&board_96345gw2,
-@@ -692,6 +706,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_6338
- 	{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
- 	{ .compatible = "brcm,bcm96338w", .data = &board_96338w, },
-+	{ .compatible = "dynalink,rta1320", .data = &board_rta1320_16m, },
- 	{ .compatible = "d-link,dsl-2640u", .data = &board_96338w2_e7t, },
- #endif /* CONFIG_BCM63XX_CPU_6338 */
- #ifdef CONFIG_BCM63XX_CPU_6345
diff --git a/target/linux/bcm63xx/patches-5.4/510-board_spw303v.patch b/target/linux/bcm63xx/patches-5.4/510-board_spw303v.patch
deleted file mode 100644
index 26e99196fd..0000000000
--- a/target/linux/bcm63xx/patches-5.4/510-board_spw303v.patch
+++ /dev/null
@@ -1,39 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -644,6 +644,20 @@ static struct board_info __initdata boar
- 		.pci_dev = 1,
- 	},
- };
-+
-+ /* T-Home Speedport W 303V Typ B */
-+static struct board_info __initdata board_spw303v = {
-+	.name = "96358-502V",
-+	.expected_cpu_id = 0x6358,
-+
-+	.has_pci = 1,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.use_internal_phy = 1,
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- 
- /*
-@@ -690,6 +704,7 @@ static const struct board_info __initcon
- 	&board_nb4_ser_r0,
- 	&board_nb4_fxc_r1,
- 	&board_HW553,
-+	&board_spw303v,
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- };
- 
-@@ -743,6 +758,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "pirelli,agpf-s0", .data = &board_AGPFS0, },
- 	{ .compatible = "sfr,neufbox-4-sercomm-r0", .data = &board_nb4_ser_r0, },
- 	{ .compatible = "sfr,neufbox-4-foxconn-r1", .data = &board_nb4_fxc_r1, },
-+	{ .compatible = "t-com,speedport-w-303v", .data = &board_spw303v, },
- 	{ .compatible = "telsey,cpva642", .data = &board_CPVA642, },
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- #ifdef CONFIG_BCM63XX_CPU_6362
diff --git a/target/linux/bcm63xx/patches-5.4/511-board_V2500V.patch b/target/linux/bcm63xx/patches-5.4/511-board_V2500V.patch
deleted file mode 100644
index e72c208cb3..0000000000
--- a/target/linux/bcm63xx/patches-5.4/511-board_V2500V.patch
+++ /dev/null
@@ -1,93 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -429,6 +429,27 @@ static struct board_info __initdata boar
- 		.force_duplex_full = 1,
- 	},
- };
-+
-+static struct board_info __initdata board_V2500V_BB = {
-+	.name = "V2500V_BB",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pci = 1,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.use_internal_phy = 1,
-+	},
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- 
- /*
-@@ -693,6 +714,7 @@ static const struct board_info __initcon
- 	&board_96348_D4PW,
- 	&board_spw500v,
- 	&board_96348sv,
-+	&board_V2500V_BB,
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- #ifdef CONFIG_BCM63XX_CPU_6358
- 	&board_96358vw,
-@@ -733,6 +755,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "brcm,bcm96348gw-10", .data = &board_96348gw_10, },
- 	{ .compatible = "brcm,bcm96348gw-11", .data = &board_96348gw_11, },
- 	{ .compatible = "brcm,bcm96348gw-a", .data = &board_96348gw_a, },
-+	{ .compatible = "bt,voyager-2500v-bb", .data = &board_V2500V_BB, },
- 	{ .compatible = "d-link,dsl-2640b-b", .data = &board_96348_D4PW, },
- 	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
- 	{ .compatible = "dynalink,rta1025w", .data = &board_rta1025w_16, },
-@@ -794,6 +817,22 @@ void __init board_bcm963xx_init(void)
- 		val &= MPI_CSBASE_BASE_MASK;
- 	}
- 	boot_addr = (u8 *)KSEG1ADDR(val);
-+	pr_info("Boot address 0x%08x\n",(unsigned int)boot_addr);
-+
-+	/* BT Voyager 2500V (RTA1046VW PCB) has 8 Meg flash used as two */
-+	/* banks of 4 Meg. The byte at 0xBF800000 identifies the back to use.*/
-+	/* Loading firmware from the CFE Prompt always loads to Bank 0 */
-+	/* Do an early check of CFE and then select bank 0 */
-+
-+	if (boot_addr == (u8 *)0xbf800000) {
-+		u8 *tmp_boot_addr = (u8*)0xbfc00000;
-+
-+		bcm63xx_nvram_init(tmp_boot_addr + BCM963XX_NVRAM_OFFSET);
-+		if (!strcmp(bcm63xx_nvram_get_name(), "V2500V_BB")) {
-+			pr_info("V2500V: nvram bank 0\n");
-+			boot_addr = tmp_boot_addr;
-+		}
-+	}
- 
- 	/* dump cfe version */
- 	cfe = boot_addr + BCM963XX_CFE_VERSION_OFFSET;
---- a/arch/mips/bcm63xx/dev-flash.c
-+++ b/arch/mips/bcm63xx/dev-flash.c
-@@ -21,6 +21,7 @@
- #include <linux/spi/spi.h>
- #include <linux/spi/flash.h>
- 
-+#include <bcm63xx_board.h>
- #include <bcm63xx_cpu.h>
- #include <bcm63xx_dev_flash.h>
- #include <bcm63xx_regs.h>
-@@ -256,6 +257,13 @@ int __init bcm63xx_flash_register(void)
- 			val = bcm_mpi_readl(MPI_CSBASE_REG(0));
- 			val &= MPI_CSBASE_BASE_MASK;
- 
-+			/* BT Voyager 2500V has 8 Meg flash in two 4 Meg banks */
-+			/* Loading from CFE always uses Bank 0 */
-+			if (!strcmp(board_get_name(), "V2500V_BB")) {
-+				pr_info("V2500V: Start in Bank 0\n");
-+				val = val + 0x400000; // Select Bank 0 start address
-+			}
-+
- 			mtd_resources[0].start = val;
- 			mtd_resources[0].end = 0x1FFFFFFF;
- 		}
diff --git a/target/linux/bcm63xx/patches-5.4/512-board_BTV2110.patch b/target/linux/bcm63xx/patches-5.4/512-board_BTV2110.patch
deleted file mode 100644
index 03246b6378..0000000000
--- a/target/linux/bcm63xx/patches-5.4/512-board_BTV2110.patch
+++ /dev/null
@@ -1,41 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -206,6 +206,22 @@ static struct board_info __initdata boar
- 	.has_ehci0 = 1,
- };
- 
-+/* BT Voyager 2110 */
-+static struct board_info __initdata board_V2110 = {
-+	.name = "V2110",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pci = 1,
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
-+
- static struct board_info __initdata board_96348gw = {
- 	.name				= "96348GW",
- 	.expected_cpu_id		= 0x6348,
-@@ -715,6 +731,7 @@ static const struct board_info __initcon
- 	&board_spw500v,
- 	&board_96348sv,
- 	&board_V2500V_BB,
-+	&board_V2110,
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- #ifdef CONFIG_BCM63XX_CPU_6358
- 	&board_96358vw,
-@@ -755,6 +772,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "brcm,bcm96348gw-10", .data = &board_96348gw_10, },
- 	{ .compatible = "brcm,bcm96348gw-11", .data = &board_96348gw_11, },
- 	{ .compatible = "brcm,bcm96348gw-a", .data = &board_96348gw_a, },
-+	{ .compatible = "bt,voyager-2110", .data = &board_V2110, },
- 	{ .compatible = "bt,voyager-2500v-bb", .data = &board_V2500V_BB, },
- 	{ .compatible = "d-link,dsl-2640b-b", .data = &board_96348_D4PW, },
- 	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
diff --git a/target/linux/bcm63xx/patches-5.4/513-MIPS-BCM63XX-add-inventel-Livebox-support.patch b/target/linux/bcm63xx/patches-5.4/513-MIPS-BCM63XX-add-inventel-Livebox-support.patch
deleted file mode 100644
index 0035cee7e9..0000000000
--- a/target/linux/bcm63xx/patches-5.4/513-MIPS-BCM63XX-add-inventel-Livebox-support.patch
+++ /dev/null
@@ -1,214 +0,0 @@
-From e796582b499f0ba6acaa1ac3a10c09cceaab7702 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jogo@openwrt.org>
-Date: Sun, 9 Mar 2014 04:55:52 +0100
-Subject: [PATCH] MIPS: BCM63XX: add inventel Livebox support
-
----
- arch/mips/bcm63xx/boards/Kconfig         |    6 +
- arch/mips/bcm63xx/boards/Makefile        |    1 +
- arch/mips/bcm63xx/boards/board_common.c  |    2 +-
- arch/mips/bcm63xx/boards/board_common.h  |    6 +
- arch/mips/bcm63xx/boards/board_livebox.c |  215 ++++++++++++++++++++++++++++++
- 5 files changed, 229 insertions(+), 1 deletion(-)
- create mode 100644 arch/mips/bcm63xx/boards/board_livebox.c
-
---- a/arch/mips/bcm63xx/boards/Kconfig
-+++ b/arch/mips/bcm63xx/boards/Kconfig
-@@ -12,4 +12,10 @@ config BOARD_BCM963XX
- 	select BCMA
- 	default y
- 
-+config BOARD_LIVEBOX
-+	bool "Inventel Livebox(es) boards"
-+	select SSB
-+	help
-+	  Inventel Livebox boards using the RedBoot bootloader.
-+
- endmenu
---- a/arch/mips/bcm63xx/boards/Makefile
-+++ b/arch/mips/bcm63xx/boards/Makefile
-@@ -1,3 +1,4 @@
- # SPDX-License-Identifier: GPL-2.0-only
- obj-y					+= board_common.o
- obj-$(CONFIG_BOARD_BCM963XX)		+= board_bcm963xx.o
-+obj-$(CONFIG_BOARD_LIVEBOX)		+= board_livebox.o
---- a/arch/mips/bcm63xx/boards/board_common.c
-+++ b/arch/mips/bcm63xx/boards/board_common.c
-@@ -54,7 +54,7 @@ void __init board_prom_init(void)
- 	if (fw_arg3 == CFE_EPTSEAL)
- 		board_bcm963xx_init();
- 	else
--		panic("unsupported bootloader detected");
-+		board_livebox_init();
- }
- 
- static int (*board_get_mac_address)(u8 mac[ETH_ALEN]);
---- a/arch/mips/bcm63xx/boards/board_common.h
-+++ b/arch/mips/bcm63xx/boards/board_common.h
-@@ -24,4 +24,10 @@ static inline void board_of_device_prese
- }
- #endif
- 
-+#if defined(CONFIG_BOARD_LIVEBOX)
-+void board_livebox_init(void);
-+#else
-+static inline void board_livebox_init(void) { }
-+#endif
-+
- #endif /* __BOARD_COMMON_H */
---- /dev/null
-+++ b/arch/mips/bcm63xx/boards/board_livebox.c
-@@ -0,0 +1,153 @@
-+/*
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file "COPYING" in the main directory of this archive
-+ * for more details.
-+ *
-+ * Copyright (C) 2008 Florian Fainelli <florian@openwrt.org>
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/string.h>
-+#include <linux/input.h>
-+#include <asm/addrspace.h>
-+#include <bcm63xx_board.h>
-+#include <bcm63xx_cpu.h>
-+#include <bcm63xx_regs.h>
-+#include <bcm63xx_io.h>
-+#include <bcm63xx_dev_flash.h>
-+#include <board_bcm963xx.h>
-+
-+#include "board_common.h"
-+
-+#define PFX	"board_livebox: "
-+
-+static unsigned int mac_addr_used = 0;
-+
-+/*
-+ * known 6348 boards
-+ */
-+#ifdef CONFIG_BCM63XX_CPU_6348
-+static struct board_info __initdata board_livebox_blue5g = {
-+	.name = "Livebox-blue-5g",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pccard = 1,
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.ephy_reset_gpio = 6,
-+	.ephy_reset_gpio_flags = GPIO_ACTIVE_LOW,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.use_internal_phy = 1,
-+	},
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 31,
-+	},
-+};
-+#endif
-+
-+/*
-+ * all boards
-+ */
-+static const struct board_info __initdata *bcm963xx_boards[] = {
-+#ifdef CONFIG_BCM63XX_CPU_6348
-+	&board_livebox_blue5g
-+#endif /* CONFIG_BCM63XX_CPU_6348 */
-+};
-+
-+static struct of_device_id const livebox_boards_dt[] = {
-+	{ .compatible = "inventel,livebox-1", .data = &board_livebox_blue5g, },
-+	{ }
-+};
-+
-+/*
-+ * register & return a new board mac address
-+ */
-+static int livebox_get_mac_address(u8 *mac)
-+{
-+	u8 *p;
-+	int count;
-+
-+	memcpy(mac, (u8 *)0xBEBFF377, ETH_ALEN);
-+
-+	p = mac + ETH_ALEN - 1;
-+	count = mac_addr_used;
-+
-+	while (count--) {
-+		do {
-+			(*p)++;
-+			if (*p != 0)
-+				break;
-+			p--;
-+		} while (p != mac);
-+	}
-+
-+	if (p == mac) {
-+		printk(KERN_ERR PFX "unable to fetch mac address\n");
-+		return -ENODEV;
-+	}
-+	mac_addr_used++;
-+
-+	return 0;
-+}
-+
-+/*
-+ * early init callback
-+ */
-+#define LIVEBOX_GPIO_DETECT_MASK	0x000000ff
-+#define LIVEBOX_BOOT_ADDR		0x1e400000
-+
-+#define LIVEBOX_HW_BLUE5G_9		0x90
-+
-+void __init board_livebox_init(void)
-+{
-+	u32 val;
-+	u8 hw_version;
-+	const struct board_info *board;
-+	const struct of_device_id *board_match;
-+
-+	/* find board by compat */
-+	board_match = bcm63xx_match_board(livebox_boards_dt);
-+	if (board_match) {
-+		board = board_match->data;
-+	} else {
-+		/* Get hardware version */
-+		val = bcm_gpio_readl(GPIO_CTL_LO_REG);
-+		val &= ~LIVEBOX_GPIO_DETECT_MASK;
-+		bcm_gpio_writel(val, GPIO_CTL_LO_REG);
-+
-+		hw_version = bcm_gpio_readl(GPIO_DATA_LO_REG);
-+		hw_version &= LIVEBOX_GPIO_DETECT_MASK;
-+
-+		switch (hw_version) {
-+		case LIVEBOX_HW_BLUE5G_9:
-+			printk(KERN_INFO PFX "Livebox BLUE5G.9\n");
-+			board = bcm963xx_boards[0];
-+			break;
-+		default:
-+			printk(KERN_INFO PFX "Unknown livebox version: %02x\n",
-+			       hw_version);
-+			/* use default livebox configuration */
-+			board = bcm963xx_boards[0];
-+			break;
-+		}
-+	}
-+
-+	/* use default livebox configuration */
-+	board_early_setup(board, livebox_get_mac_address);
-+
-+	/* read base address of boot chip select (0) */
-+	val = bcm_mpi_readl(MPI_CSBASE_REG(0));
-+	val &= MPI_CSBASE_BASE_MASK;
-+	if (val != LIVEBOX_BOOT_ADDR) {
-+		printk(KERN_NOTICE PFX "flash address is: 0x%08x, forcing to: 0x%08x\n",
-+			val, LIVEBOX_BOOT_ADDR);
-+		bcm63xx_flash_force_phys_base_address(LIVEBOX_BOOT_ADDR, 0x1ebfffff);
-+	}
-+}
diff --git a/target/linux/bcm63xx/patches-5.4/514-board_ct536_ct5621.patch b/target/linux/bcm63xx/patches-5.4/514-board_ct536_ct5621.patch
deleted file mode 100644
index b653702b49..0000000000
--- a/target/linux/bcm63xx/patches-5.4/514-board_ct536_ct5621.patch
+++ /dev/null
@@ -1,50 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -222,6 +222,30 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_ct536_ct5621 = {
-+	.name = "CT536_CT5621",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pccard = 1,
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM4318,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+	},
-+};
-+
- static struct board_info __initdata board_96348gw = {
- 	.name				= "96348GW",
- 	.expected_cpu_id		= 0x6348,
-@@ -732,6 +756,7 @@ static const struct board_info __initcon
- 	&board_96348sv,
- 	&board_V2500V_BB,
- 	&board_V2110,
-+	&board_ct536_ct5621,
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- #ifdef CONFIG_BCM63XX_CPU_6358
- 	&board_96358vw,
-@@ -774,6 +799,8 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "brcm,bcm96348gw-a", .data = &board_96348gw_a, },
- 	{ .compatible = "bt,voyager-2110", .data = &board_V2110, },
- 	{ .compatible = "bt,voyager-2500v-bb", .data = &board_V2500V_BB, },
-+	{ .compatible = "comtrend,ct-536plus", .data = &board_ct536_ct5621, },
-+	{ .compatible = "comtrend,ct-5621", .data = &board_ct536_ct5621, },
- 	{ .compatible = "d-link,dsl-2640b-b", .data = &board_96348_D4PW, },
- 	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
- 	{ .compatible = "dynalink,rta1025w", .data = &board_rta1025w_16, },
diff --git a/target/linux/bcm63xx/patches-5.4/515-board_DWV-S0_fixes.patch b/target/linux/bcm63xx/patches-5.4/515-board_DWV-S0_fixes.patch
deleted file mode 100644
index 1460256e8c..0000000000
--- a/target/linux/bcm63xx/patches-5.4/515-board_DWV-S0_fixes.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -613,6 +613,7 @@ static struct board_info __initdata boar
- 	},
- 
- 	.has_ohci0			= 1,
-+	.has_ehci0			= 1,
- };
- 
- /* D-Link DSL-274xB revison C2/C3 */
diff --git a/target/linux/bcm63xx/patches-5.4/516-board_96348A-122.patch b/target/linux/bcm63xx/patches-5.4/516-board_96348A-122.patch
deleted file mode 100644
index fe1a7e2e0c..0000000000
--- a/target/linux/bcm63xx/patches-5.4/516-board_96348A-122.patch
+++ /dev/null
@@ -1,48 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -246,6 +246,29 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_96348A_122 = {
-+	.name = "96348A-122",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM4318,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+	},
-+};
-+
- static struct board_info __initdata board_96348gw = {
- 	.name				= "96348GW",
- 	.expected_cpu_id		= 0x6348,
-@@ -758,6 +781,7 @@ static const struct board_info __initcon
- 	&board_V2500V_BB,
- 	&board_V2110,
- 	&board_ct536_ct5621,
-+	&board_96348A_122,
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- #ifdef CONFIG_BCM63XX_CPU_6358
- 	&board_96358vw,
-@@ -801,6 +825,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "bt,voyager-2110", .data = &board_V2110, },
- 	{ .compatible = "bt,voyager-2500v-bb", .data = &board_V2500V_BB, },
- 	{ .compatible = "comtrend,ct-536plus", .data = &board_ct536_ct5621, },
-+	{ .compatible = "comtrend,ct-5365", .data = &board_96348A_122, },
- 	{ .compatible = "comtrend,ct-5621", .data = &board_ct536_ct5621, },
- 	{ .compatible = "d-link,dsl-2640b-b", .data = &board_96348_D4PW, },
- 	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
diff --git a/target/linux/bcm63xx/patches-5.4/517_board_CPVA502plus.patch b/target/linux/bcm63xx/patches-5.4/517_board_CPVA502plus.patch
deleted file mode 100644
index 980be2952c..0000000000
--- a/target/linux/bcm63xx/patches-5.4/517_board_CPVA502plus.patch
+++ /dev/null
@@ -1,53 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -222,6 +222,34 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_CPVA502plus = {
-+	.name = "CPVA502+",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pci = 1,
-+	.ephy_reset_gpio = 4,
-+	.ephy_reset_gpio_flags = GPIO_ACTIVE_LOW,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.use_internal_phy = 1,
-+	},
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM4318,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+	},
-+};
-+
- static struct board_info __initdata board_ct536_ct5621 = {
- 	.name = "CT536_CT5621",
- 	.expected_cpu_id = 0x6348,
-@@ -782,6 +810,7 @@ static const struct board_info __initcon
- 	&board_V2110,
- 	&board_ct536_ct5621,
- 	&board_96348A_122,
-+	&board_CPVA502plus,
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- #ifdef CONFIG_BCM63XX_CPU_6358
- 	&board_96358vw,
-@@ -835,6 +864,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "t-com,speedport-w-500v", .data = &board_spw500v, },
- 	{ .compatible = "tecom,gw6000", .data = &board_gw6000, },
- 	{ .compatible = "tecom,gw6200", .data = &board_gw6200, },
-+	{ .compatible = "telsey,cpva502plus", .data = &board_CPVA502plus, },
- 	{ .compatible = "telsey,magic", .data = &board_96348sv, },
- 	{ .compatible = "tp-link,td-w8900gb", .data = &board_96348gw_11, },
- 	{ .compatible = "usrobotics,usr9108", .data = &board_96348gw_a, },
diff --git a/target/linux/bcm63xx/patches-5.4/518-bcm63xx-add-support-for-96368MVWG-board.patch b/target/linux/bcm63xx/patches-5.4/518-bcm63xx-add-support-for-96368MVWG-board.patch
deleted file mode 100644
index 7aac2a5d71..0000000000
--- a/target/linux/bcm63xx/patches-5.4/518-bcm63xx-add-support-for-96368MVWG-board.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From eeacc2529942051504bc957726aa178671344421 Mon Sep 17 00:00:00 2001
-From: Maxime Bizon <mbizon@freebox.fr>
-Date: Wed, 20 Jan 2010 16:21:30 +0100
-Subject: [PATCH 32/63] bcm63xx: add support for 96368MVWG board.
-
----
- arch/mips/bcm63xx/boards/board_bcm963xx.c          |   95 ++++++++++++++++++++
- .../mips/include/asm/mach-bcm63xx/board_bcm963xx.h |    2 +
- 2 files changed, 97 insertions(+), 0 deletions(-)
-
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -774,6 +774,52 @@ static struct board_info __initdata boar
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- 
- /*
-+ * known 6368 boards
-+ */
-+#ifdef CONFIG_BCM63XX_CPU_6368
-+static struct board_info __initdata board_96368mvwg = {
-+	.name = "96368MVWG",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+
-+	.has_usbd = 1,
-+	.usbd = {
-+		.use_fullspeed = 0,
-+		.port_no = 0,
-+	},
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "port1",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "port2",
-+			},
-+			[4] = {
-+				.used = 1,
-+				.phy_id = 0x12,
-+				.name = "port0",
-+			},
-+			[5] = {
-+				.used = 1,
-+				.phy_id = 0x11,
-+				.name = "port3",
-+			},
-+		},
-+	},
-+};
-+#endif /* CONFIG_BCM63XX_CPU_6368 */
-+
-+/*
-  * all boards
-  */
- static const struct board_info __initconst *bcm963xx_boards[] = {
-@@ -824,6 +870,9 @@ static const struct board_info __initcon
- 	&board_HW553,
- 	&board_spw303v,
- #endif /* CONFIG_BCM63XX_CPU_6358 */
-+#ifdef CONFIG_BCM63XX_CPU_6368
-+	&board_96368mvwg,
-+#endif /* CONFIG_BCM63XX_CPU_6368 */
- };
- 
- static struct of_device_id const bcm963xx_boards_dt[] = {
-@@ -888,6 +937,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_6362
- #endif /* CONFIG_BCM63XX_CPU_6362 */
- #ifdef CONFIG_BCM63XX_CPU_6368
-+	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
- #endif /* CONFIG_BCM63XX_CPU_63268 */
---- a/arch/mips/bcm63xx/boards/board_common.c
-+++ b/arch/mips/bcm63xx/boards/board_common.c
-@@ -81,12 +81,25 @@ void __init board_early_setup(const stru
- 		bcm63xx_pci_enabled = 1;
- 		if (BCMCPU_IS_6348())
- 			val |= GPIO_MODE_6348_G2_PCI;
-+
-+		if (BCMCPU_IS_6368())
-+			val |= GPIO_MODE_6368_PCI_REQ1 |
-+				GPIO_MODE_6368_PCI_GNT1 |
-+				GPIO_MODE_6368_PCI_INTB |
-+				GPIO_MODE_6368_PCI_REQ0 |
-+				GPIO_MODE_6368_PCI_GNT0;
- 	}
- #endif
- 
- 	if (board.has_pccard) {
- 		if (BCMCPU_IS_6348())
- 			val |= GPIO_MODE_6348_G1_MII_PCCARD;
-+
-+		if (BCMCPU_IS_6368())
-+			val |= GPIO_MODE_6368_PCMCIA_CD1 |
-+				GPIO_MODE_6368_PCMCIA_CD2 |
-+				GPIO_MODE_6368_PCMCIA_VS1 |
-+				GPIO_MODE_6368_PCMCIA_VS2;
- 	}
- 
- 	if (board.has_enet0 && !board.enet0.use_internal_phy) {
diff --git a/target/linux/bcm63xx/patches-5.4/519-bcm63xx-add-support-for-96368MVNgr-board.patch b/target/linux/bcm63xx/patches-5.4/519-bcm63xx-add-support-for-96368MVNgr-board.patch
deleted file mode 100644
index f123fa663c..0000000000
--- a/target/linux/bcm63xx/patches-5.4/519-bcm63xx-add-support-for-96368MVNgr-board.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From f457fc2eb9bb915b5a4d251c7c68d4694cf07b01 Mon Sep 17 00:00:00 2001
-From: Maxime Bizon <mbizon@freebox.fr>
-Date: Fri, 4 Nov 2011 12:33:48 +0100
-Subject: [PATCH 33/63] bcm63xx: add support for 96368MVNgr board.
-
----
- arch/mips/bcm63xx/boards/board_bcm963xx.c |   67 +++++++++++++++++++++++++++++
- 1 files changed, 67 insertions(+), 0 deletions(-)
-
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -817,6 +817,41 @@ static struct board_info __initdata boar
- 		},
- 	},
- };
-+
-+static struct board_info __initdata board_96368mvngr = {
-+	.name = "96368MVNgr",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "port1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "port2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "port3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "port4",
-+			},
-+		},
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- 
- /*
-@@ -872,6 +907,7 @@ static const struct board_info __initcon
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- #ifdef CONFIG_BCM63XX_CPU_6368
- 	&board_96368mvwg,
-+	&board_96368mvngr,
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- };
- 
-@@ -937,6 +973,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_6362
- #endif /* CONFIG_BCM63XX_CPU_6362 */
- #ifdef CONFIG_BCM63XX_CPU_6368
-+	{ .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
- 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
diff --git a/target/linux/bcm63xx/patches-5.4/520-MIPS-BCM63XX-add-96328avng-reference-board.patch b/target/linux/bcm63xx/patches-5.4/520-MIPS-BCM63XX-add-96328avng-reference-board.patch
deleted file mode 100644
index 6c2c5aa2c9..0000000000
--- a/target/linux/bcm63xx/patches-5.4/520-MIPS-BCM63XX-add-96328avng-reference-board.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From c93c2bbf0cc96da5a47d77f01daf6c983cfe4216 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jonas.gorski@gmail.com>
-Date: Tue, 29 May 2012 10:52:25 +0200
-Subject: [PATCH] MIPS: BCM63XX: add 96328avng reference board
-
----
- arch/mips/bcm63xx/boards/board_bcm963xx.c |   77 +++++++++++++++++++++++++++++
- 1 files changed, 77 insertions(+), 0 deletions(-)
-
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -64,6 +64,32 @@ static struct board_info __initdata boar
- 		.use_fullspeed		= 0,
- 		.port_no		= 0,
- 	},
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
- };
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- 
diff --git a/target/linux/bcm63xx/patches-5.4/521-MIPS-BCM63XX-add-963281TAN-reference-board.patch b/target/linux/bcm63xx/patches-5.4/521-MIPS-BCM63XX-add-963281TAN-reference-board.patch
deleted file mode 100644
index cdcc1c0aa7..0000000000
--- a/target/linux/bcm63xx/patches-5.4/521-MIPS-BCM63XX-add-963281TAN-reference-board.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From f0649f7b7c672cf452a1796a1422bf615e1973f8 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jonas.gorski@gmail.com>
-Date: Tue, 29 May 2012 11:01:12 +0200
-Subject: [PATCH] MIPS: BCM63XX: add 963281TAN reference board
-
----
- arch/mips/bcm63xx/boards/board_bcm963xx.c |   71 +++++++++++++++++++++++++++++
- 1 files changed, 71 insertions(+), 0 deletions(-)
-
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -91,6 +91,39 @@ static struct board_info __initdata boar
- 		},
- 	},
- };
-+
-+static struct board_info __initdata board_963281TAN = {
-+	.name = "963281TAN",
-+	.expected_cpu_id = 0x6328,
-+
-+	.has_pci = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- 
- /*
-@@ -889,6 +922,7 @@ static const struct board_info __initcon
- #endif /* CONFIG_BCM63XX_CPU_3368 */
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	&board_96328avng,
-+	&board_963281TAN,
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- #ifdef CONFIG_BCM63XX_CPU_6338
- 	&board_96338gw,
-@@ -945,6 +979,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_6318
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- #ifdef CONFIG_BCM63XX_CPU_6328
-+	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
- 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- #ifdef CONFIG_BCM63XX_CPU_6338
diff --git a/target/linux/bcm63xx/patches-5.4/521-MIPS-BCM63XX-add-96328avng-reference-board.patch b/target/linux/bcm63xx/patches-5.4/521-MIPS-BCM63XX-add-96328avng-reference-board.patch
new file mode 100644
index 0000000000..43ad569e1e
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/521-MIPS-BCM63XX-add-96328avng-reference-board.patch
@@ -0,0 +1,44 @@
+From c93c2bbf0cc96da5a47d77f01daf6c983cfe4216 Mon Sep 17 00:00:00 2001
+From: Jonas Gorski <jonas.gorski@gmail.com>
+Date: Tue, 29 May 2012 10:52:25 +0200
+Subject: [PATCH] MIPS: BCM63XX: add 96328avng reference board
+
+---
+ arch/mips/bcm63xx/boards/board_bcm963xx.c |   77 +++++++++++++++++++++++++++++
+ 1 files changed, 77 insertions(+), 0 deletions(-)
+
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -321,6 +321,32 @@ static struct board_info __initdata boar
+ 		.use_fullspeed		= 0,
+ 		.port_no		= 0,
+ 	},
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
+ };
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ 
diff --git a/target/linux/bcm63xx/patches-5.4/522-MIPS-BCM63XX-add-963281TAN-reference-board.patch b/target/linux/bcm63xx/patches-5.4/522-MIPS-BCM63XX-add-963281TAN-reference-board.patch
new file mode 100644
index 0000000000..a6f4a84336
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/522-MIPS-BCM63XX-add-963281TAN-reference-board.patch
@@ -0,0 +1,67 @@
+From f0649f7b7c672cf452a1796a1422bf615e1973f8 Mon Sep 17 00:00:00 2001
+From: Jonas Gorski <jonas.gorski@gmail.com>
+Date: Tue, 29 May 2012 11:01:12 +0200
+Subject: [PATCH] MIPS: BCM63XX: add 963281TAN reference board
+
+---
+ arch/mips/bcm63xx/boards/board_bcm963xx.c |   71 +++++++++++++++++++++++++++++
+ 1 files changed, 71 insertions(+), 0 deletions(-)
+
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -348,6 +348,39 @@ static struct board_info __initdata boar
+ 		},
+ 	},
+ };
++
++static struct board_info __initdata board_963281TAN = {
++	.name = "963281TAN",
++	.expected_cpu_id = 0x6328,
++
++	.has_pci = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ 
+ /*
+@@ -702,6 +735,7 @@ static const struct board_info __initcon
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	&board_96328avng,
++	&board_963281TAN,
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ #ifdef CONFIG_BCM63XX_CPU_6338
+ 	&board_96338gw,
+@@ -741,6 +775,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "sagem,fast-2704n", .data = &board_FAST2704N, },
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
++	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
+ 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ #ifdef CONFIG_BCM63XX_CPU_6338
diff --git a/target/linux/bcm63xx/patches-5.4/522-board_dsl_274xb_rev_f.patch b/target/linux/bcm63xx/patches-5.4/522-board_dsl_274xb_rev_f.patch
deleted file mode 100644
index 25362e3123..0000000000
--- a/target/linux/bcm63xx/patches-5.4/522-board_dsl_274xb_rev_f.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 66808f706b3dcd83a9f5157997ff478a880a2906 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jonas.gorski@gmail.com>
-Date: Mon, 30 Apr 2012 09:10:51 +0200
-Subject: [PATCH 70/79] MIPS: BCM63XX: Add board definition for D-Link
- DSL-274xB rev F1
-
----
- arch/mips/bcm63xx/boards/board_bcm963xx.c |  104 +++++++++++++++++++++++++++++
- 1 files changed, 104 insertions(+), 0 deletions(-)
-
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -124,6 +124,50 @@ static struct board_info __initdata boar
- 		},
- 	},
- };
-+
-+static struct board_info __initdata board_dsl_274xb_f1 = {
-+	.name = "AW4339U",
-+	.expected_cpu_id = 0x6328,
-+
-+	.has_pci = 1,
-+
-+	.has_caldata = 1,
-+	.caldata = {
-+		{
-+			.vendor = PCI_VENDOR_ID_ATHEROS,
-+			.caldata_offset = 0x7d1000,
-+			.slot = 0,
-+			.led_pin = -1,
-+			.led_active_high = 1,
-+		},
-+	},
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 4",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 3",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 2",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 1",
-+			},
-+		},
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- 
- /*
-@@ -923,6 +967,7 @@ static const struct board_info __initcon
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	&board_96328avng,
- 	&board_963281TAN,
-+	&board_dsl_274xb_f1,
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- #ifdef CONFIG_BCM63XX_CPU_6338
- 	&board_96338gw,
-@@ -981,6 +1026,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
- 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
-+	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- #ifdef CONFIG_BCM63XX_CPU_6338
- 	{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
diff --git a/target/linux/bcm63xx/patches-5.4/523-board_96348w3.patch b/target/linux/bcm63xx/patches-5.4/523-board_96348w3.patch
deleted file mode 100644
index 6e61744189..0000000000
--- a/target/linux/bcm63xx/patches-5.4/523-board_96348w3.patch
+++ /dev/null
@@ -1,42 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -555,6 +555,23 @@ static struct board_info __initdata boar
- 	.has_ohci0 = 1,
- };
- 
-+/* NetGear DG834G v4 */
-+static struct board_info __initdata board_96348W3 = {
-+ 	.name = "96348W3",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
-+
- static struct board_info __initdata board_96348_D4PW = {
- 	.name = "D-4P-W",
- 	.expected_cpu_id = 0x6348,
-@@ -997,6 +1014,7 @@ static const struct board_info __initcon
- 	&board_ct536_ct5621,
- 	&board_96348A_122,
- 	&board_CPVA502plus,
-+	&board_96348W3,
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- #ifdef CONFIG_BCM63XX_CPU_6358
- 	&board_96358vw,
-@@ -1052,6 +1070,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
- 	{ .compatible = "dynalink,rta1025w", .data = &board_rta1025w_16, },
- 	{ .compatible = "netgear,dg834gt-pn", .data = &board_96348gw_10, },
-+ 	{ .compatible = "netgear,dg834g-v4", .data = &board_96348W3, },
- 	{ .compatible = "sagem,fast-2404", .data = &board_FAST2404, },
- 	{ .compatible = "t-com,speedport-w-500v", .data = &board_spw500v, },
- 	{ .compatible = "tecom,gw6000", .data = &board_gw6000, },
diff --git a/target/linux/bcm63xx/patches-5.4/523-board_bcm6328-d-link-dsl-274xb-f.patch b/target/linux/bcm63xx/patches-5.4/523-board_bcm6328-d-link-dsl-274xb-f.patch
new file mode 100644
index 0000000000..97f71e115a
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/523-board_bcm6328-d-link-dsl-274xb-f.patch
@@ -0,0 +1,79 @@
+From 66808f706b3dcd83a9f5157997ff478a880a2906 Mon Sep 17 00:00:00 2001
+From: Jonas Gorski <jonas.gorski@gmail.com>
+Date: Mon, 30 Apr 2012 09:10:51 +0200
+Subject: [PATCH 70/79] MIPS: BCM63XX: Add board definition for D-Link
+ DSL-274xB rev F1
+
+---
+ arch/mips/bcm63xx/boards/board_bcm963xx.c |  104 +++++++++++++++++++++++++++++
+ 1 files changed, 104 insertions(+), 0 deletions(-)
+
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -381,6 +381,50 @@ static struct board_info __initdata boar
+ 		},
+ 	},
+ };
++
++static struct board_info __initdata board_dsl_274xb_f1 = {
++	.name = "AW4339U",
++	.expected_cpu_id = 0x6328,
++
++	.has_pci = 1,
++
++	.has_caldata = 1,
++	.caldata = {
++		{
++			.vendor = PCI_VENDOR_ID_ATHEROS,
++			.caldata_offset = 0x7d1000,
++			.slot = 0,
++			.led_pin = -1,
++			.led_active_high = 1,
++		},
++	},
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 4",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 3",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 2",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 1",
++			},
++		},
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ 
+ /*
+@@ -736,6 +780,7 @@ static const struct board_info __initcon
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	&board_96328avng,
+ 	&board_963281TAN,
++	&board_dsl_274xb_f1,
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ #ifdef CONFIG_BCM63XX_CPU_6338
+ 	&board_96338gw,
+@@ -777,6 +822,7 @@ static struct of_device_id const bcm963x
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
+ 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
++	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ #ifdef CONFIG_BCM63XX_CPU_6338
+ 	{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
diff --git a/target/linux/bcm63xx/patches-5.4/524-board_CT6373-1.patch b/target/linux/bcm63xx/patches-5.4/524-board_CT6373-1.patch
deleted file mode 100644
index 4a6280dcab..0000000000
--- a/target/linux/bcm63xx/patches-5.4/524-board_CT6373-1.patch
+++ /dev/null
@@ -1,49 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -853,6 +853,30 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_ct6373_1 = {
-+	.name = "CT6373-1",
-+	.expected_cpu_id = 0x6358,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM4318,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+	},
-+};
-+
- static struct board_info __initdata board_HW553 = {
- 	.name = "HW553",
- 	.expected_cpu_id = 0x6358,
-@@ -1025,6 +1049,7 @@ static const struct board_info __initcon
- 	&board_dsl_274xb_rev_c,
- 	&board_nb4_ser_r0,
- 	&board_nb4_fxc_r1,
-+	&board_ct6373_1,
- 	&board_HW553,
- 	&board_spw303v,
- #endif /* CONFIG_BCM63XX_CPU_6358 */
-@@ -1084,6 +1109,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "alcatel,rg100a", .data = &board_96358vw2, },
- 	{ .compatible = "brcm,bcm96358vw", .data = &board_96358vw, },
- 	{ .compatible = "brcm,bcm96358vw2", .data = &board_96358vw2, },
-+	{ .compatible = "comtrend,ct-6373", .data = &board_ct6373_1, },
- 	{ .compatible = "d-link,dsl-274xb-c2", .data = &board_dsl_274xb_rev_c, },
- 	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
- 	{ .compatible = "huawei,echolife-hg553", .data = &board_HW553, },
diff --git a/target/linux/bcm63xx/patches-5.4/524-board_bcm6328-adb-a4001n1.patch b/target/linux/bcm63xx/patches-5.4/524-board_bcm6328-adb-a4001n1.patch
new file mode 100644
index 0000000000..065f2df164
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/524-board_bcm6328-adb-a4001n1.patch
@@ -0,0 +1,68 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -382,6 +382,49 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_A4001N1 = {
++	.name = "963281T_TEF",
++	.expected_cpu_id = 0x6328,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43225,
++		.pci_bus = 1,
++		.pci_dev = 0,
++	},
++};
++
+ static struct board_info __initdata board_dsl_274xb_f1 = {
+ 	.name = "AW4339U",
+ 	.expected_cpu_id = 0x6328,
+@@ -780,6 +823,7 @@ static const struct board_info __initcon
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	&board_96328avng,
+ 	&board_963281TAN,
++	&board_A4001N1,
+ 	&board_dsl_274xb_f1,
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ #ifdef CONFIG_BCM63XX_CPU_6338
+@@ -820,6 +864,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "sagem,fast-2704n", .data = &board_FAST2704N, },
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
++	{ .compatible = "adb,a4001n1", .data = &board_A4001N1, },
+ 	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
+ 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
+ 	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
diff --git a/target/linux/bcm63xx/patches-5.4/525-board_bcm6328-comtrend-ar-5387un.patch b/target/linux/bcm63xx/patches-5.4/525-board_bcm6328-comtrend-ar-5387un.patch
new file mode 100644
index 0000000000..99a026f9d5
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/525-board_bcm6328-comtrend-ar-5387un.patch
@@ -0,0 +1,97 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -349,6 +349,78 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct sprom_fixup __initdata ar5387un_fixups[] = {
++	{ .offset = 2, .value = 0x05bb },
++	{ .offset = 65, .value = 0x1204 },
++	{ .offset = 78, .value = 0x0303 },
++	{ .offset = 79, .value = 0x0202 },
++	{ .offset = 80, .value = 0xff02 },
++	{ .offset = 87, .value = 0x0315 },
++	{ .offset = 88, .value = 0x0315 },
++	{ .offset = 96, .value = 0x2048 },
++	{ .offset = 97, .value = 0xff11 },
++	{ .offset = 98, .value = 0x1567 },
++	{ .offset = 99, .value = 0xfb24 },
++	{ .offset = 100, .value = 0x3e3c },
++	{ .offset = 101, .value = 0x4038 },
++	{ .offset = 102, .value = 0xfe7f },
++	{ .offset = 103, .value = 0x1279 },
++	{ .offset = 112, .value = 0x2048 },
++	{ .offset = 113, .value = 0xff03 },
++	{ .offset = 114, .value = 0x154c },
++	{ .offset = 115, .value = 0xfb27 },
++	{ .offset = 116, .value = 0x3e3c },
++	{ .offset = 117, .value = 0x4038 },
++	{ .offset = 118, .value = 0xfe87 },
++	{ .offset = 119, .value = 0x1233 },
++	{ .offset = 203, .value = 0x2226 },
++};
++
++static struct board_info __initdata board_AR5387un = {
++	.name = "96328A-1441N1",
++	.expected_cpu_id = 0x6328,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43225,
++		.pci_bus = 1,
++		.pci_dev = 0,
++		.board_fixups = ar5387un_fixups,
++		.num_board_fixups = ARRAY_SIZE(ar5387un_fixups),
++	},
++};
++
+ static struct board_info __initdata board_963281TAN = {
+ 	.name = "963281TAN",
+ 	.expected_cpu_id = 0x6328,
+@@ -822,6 +894,7 @@ static const struct board_info __initcon
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	&board_96328avng,
++	&board_AR5387un,
+ 	&board_963281TAN,
+ 	&board_A4001N1,
+ 	&board_dsl_274xb_f1,
+@@ -867,6 +940,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "adb,a4001n1", .data = &board_A4001N1, },
+ 	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
+ 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
++	{ .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, },
+ 	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ #ifdef CONFIG_BCM63XX_CPU_6338
diff --git a/target/linux/bcm63xx/patches-5.4/525-board_dva-g3810bn-tl-1.patch b/target/linux/bcm63xx/patches-5.4/525-board_dva-g3810bn-tl-1.patch
deleted file mode 100644
index afa9cf2002..0000000000
--- a/target/linux/bcm63xx/patches-5.4/525-board_dva-g3810bn-tl-1.patch
+++ /dev/null
@@ -1,50 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -915,6 +915,31 @@ static struct board_info __initdata boar
- 		.use_internal_phy = 1,
- 	},
- };
-+
-+/* D-Link DVA-G3810BN/TL */
-+static struct board_info __initdata board_DVAG3810BN = {
-+	.name = "DVAG3810BN",
-+	.expected_cpu_id = 0x6358,
-+
-+	.has_pccard = 1,
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.use_internal_phy = 1,
-+	},
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- 
- /*
-@@ -1052,6 +1077,7 @@ static const struct board_info __initcon
- 	&board_ct6373_1,
- 	&board_HW553,
- 	&board_spw303v,
-+	&board_DVAG3810BN,
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- #ifdef CONFIG_BCM63XX_CPU_6368
- 	&board_96368mvwg,
-@@ -1112,6 +1138,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "comtrend,ct-6373", .data = &board_ct6373_1, },
- 	{ .compatible = "d-link,dsl-274xb-c2", .data = &board_dsl_274xb_rev_c, },
- 	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
-+	{ .compatible = "d-link,dva-g3810bn-tl", .data = &board_DVAG3810BN, },
- 	{ .compatible = "huawei,echolife-hg553", .data = &board_HW553, },
- 	{ .compatible = "pirelli,a226g", .data = &board_DWVS0, },
- 	{ .compatible = "pirelli,a226m", .data = &board_DWVS0, },
diff --git a/target/linux/bcm63xx/patches-5.4/526-board_bcm6328-comtrend-ar-5381u.patch b/target/linux/bcm63xx/patches-5.4/526-board_bcm6328-comtrend-ar-5381u.patch
new file mode 100644
index 0000000000..8ed555490b
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/526-board_bcm6328-comtrend-ar-5381u.patch
@@ -0,0 +1,79 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -349,6 +349,60 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct sprom_fixup __initdata ar5381u_fixups[] = {
++	{ .offset = 97, .value = 0xfee5 },
++	{ .offset = 98, .value = 0x157c },
++	{ .offset = 99, .value = 0xfae7 },
++	{ .offset = 113, .value = 0xfefa },
++	{ .offset = 114, .value = 0x15d6 },
++	{ .offset = 115, .value = 0xfaf8 },
++};
++
++static struct board_info __initdata board_AR5381u = {
++	.name = "96328A-1241N",
++	.expected_cpu_id = 0x6328,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43225,
++		.pci_bus = 1,
++		.pci_dev = 0,
++		.board_fixups = ar5381u_fixups,
++		.num_board_fixups = ARRAY_SIZE(ar5381u_fixups),
++	},
++};
++
+ static struct sprom_fixup __initdata ar5387un_fixups[] = {
+ 	{ .offset = 2, .value = 0x05bb },
+ 	{ .offset = 65, .value = 0x1204 },
+@@ -894,6 +948,7 @@ static const struct board_info __initcon
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	&board_96328avng,
++	&board_AR5381u,
+ 	&board_AR5387un,
+ 	&board_963281TAN,
+ 	&board_A4001N1,
+@@ -940,6 +995,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "adb,a4001n1", .data = &board_A4001N1, },
+ 	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
+ 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
++	{ .compatible = "comtrend,ar-5381u", .data = &board_AR5381u, },
+ 	{ .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, },
+ 	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
diff --git a/target/linux/bcm63xx/patches-5.4/526-board_nb6.patch b/target/linux/bcm63xx/patches-5.4/526-board_nb6.patch
deleted file mode 100644
index ed0115470a..0000000000
--- a/target/linux/bcm63xx/patches-5.4/526-board_nb6.patch
+++ /dev/null
@@ -1,52 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -942,6 +942,31 @@ static struct board_info __initdata boar
- };
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- 
-+#ifdef CONFIG_BCM63XX_CPU_6362
-+static struct board_info __initdata board_nb6 = {
-+	.name = "NB6",
-+	.expected_cpu_id = 0x6362,
-+
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[4] = {
-+				.used = 1,
-+				.phy_id = 0xff,
-+				.bypass_link = 1,
-+				.force_speed = 1000,
-+				.force_duplex_full = 1,
-+				.name = "RGMII",
-+			},
-+		},
-+	},
-+};
-+#endif /* CONFIG_BCM63XX_CPU_6362 */
-+
- /*
-  * known 6368 boards
-  */
-@@ -1079,6 +1104,9 @@ static const struct board_info __initcon
- 	&board_spw303v,
- 	&board_DVAG3810BN,
- #endif /* CONFIG_BCM63XX_CPU_6358 */
-+#ifdef CONFIG_BCM63XX_CPU_6362
-+	&board_nb6,
-+#endif /* CONFIG_BCM63XX_CPU_6362 */
- #ifdef CONFIG_BCM63XX_CPU_6368
- 	&board_96368mvwg,
- 	&board_96368mvngr,
-@@ -1150,6 +1178,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "telsey,cpva642", .data = &board_CPVA642, },
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- #ifdef CONFIG_BCM63XX_CPU_6362
-+	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
- #endif /* CONFIG_BCM63XX_CPU_6362 */
- #ifdef CONFIG_BCM63XX_CPU_6368
- 	{ .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
diff --git a/target/linux/bcm63xx/patches-5.4/527-board_bcm6328-sagem-fast-2704-v2.patch b/target/linux/bcm63xx/patches-5.4/527-board_bcm6328-sagem-fast-2704-v2.patch
new file mode 100644
index 0000000000..4828c8e50c
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/527-board_bcm6328-sagem-fast-2704-v2.patch
@@ -0,0 +1,73 @@
+From: Marcin Jurkowski <marcin1j@gmail.com>
+Date: Thu, 31 Oct 2013 22:33:10 +0000
+Subject: [PATCH] bcm63xx: Add kernel support for Sagemcom F@ST2704V2 ADSL
+ router
+
+This adds kernel support support for Sagemcom F@st 2704 wireless ADSL
+router.
+It's a BCM6328-based 802.11n wireless router with USB port and ADSL2+
+modem equipped with 64 MiB RAM and 8 MiB flash.
+
+Signed-off-by: Marcin Jurkowski <marcin1j@gmail.com>
+---
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -594,6 +594,42 @@ static struct board_info __initdata boar
+ 		},
+ 	},
+ };
++
++static struct board_info __initdata board_FAST2704V2 = {
++	.name = "F@ST2704V2",
++	.expected_cpu_id = 0x6328,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.has_usbd = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ 
+ /*
+@@ -953,6 +989,7 @@ static const struct board_info __initcon
+ 	&board_963281TAN,
+ 	&board_A4001N1,
+ 	&board_dsl_274xb_f1,
++	&board_FAST2704V2,
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ #ifdef CONFIG_BCM63XX_CPU_6338
+ 	&board_96338gw,
+@@ -998,6 +1035,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "comtrend,ar-5381u", .data = &board_AR5381u, },
+ 	{ .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, },
+ 	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
++	{ .compatible = "sagem,fast-2704-v2", .data = &board_FAST2704V2, },
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ #ifdef CONFIG_BCM63XX_CPU_6338
+ 	{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
diff --git a/target/linux/bcm63xx/patches-5.4/527-board_fast2604.patch b/target/linux/bcm63xx/patches-5.4/527-board_fast2604.patch
deleted file mode 100644
index 733d745def..0000000000
--- a/target/linux/bcm63xx/patches-5.4/527-board_fast2604.patch
+++ /dev/null
@@ -1,41 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -489,6 +489,22 @@ static struct board_info __initdata boar
- 	.has_ehci0			= 1,
- };
- 
-+static struct board_info __initdata board_FAST2604 = {
-+	.name = "F@ST2604",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
-+
- static struct board_info __initdata board_rta1025w_16 = {
- 	.name				= "RTA1025W_16",
- 	.expected_cpu_id		= 0x6348,
-@@ -1077,6 +1093,7 @@ static const struct board_info __initcon
- 	&board_96348gw_10,
- 	&board_96348gw_11,
- 	&board_FAST2404,
-+	&board_FAST2604,
- 	&board_DV201AMR,
- 	&board_96348gw_a,
- 	&board_rta1025w_16,
-@@ -1151,6 +1168,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "netgear,dg834gt-pn", .data = &board_96348gw_10, },
-  	{ .compatible = "netgear,dg834g-v4", .data = &board_96348W3, },
- 	{ .compatible = "sagem,fast-2404", .data = &board_FAST2404, },
-+ 	{ .compatible = "sagem,fast-2604", .data = &board_FAST2604, },
- 	{ .compatible = "t-com,speedport-w-500v", .data = &board_spw500v, },
- 	{ .compatible = "tecom,gw6000", .data = &board_gw6000, },
- 	{ .compatible = "tecom,gw6200", .data = &board_gw6200, },
diff --git a/target/linux/bcm63xx/patches-5.4/528-board_A4001N1.patch b/target/linux/bcm63xx/patches-5.4/528-board_A4001N1.patch
deleted file mode 100644
index 209fbde002..0000000000
--- a/target/linux/bcm63xx/patches-5.4/528-board_A4001N1.patch
+++ /dev/null
@@ -1,68 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -125,6 +125,49 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_A4001N1 = {
-+	.name = "963281T_TEF",
-+	.expected_cpu_id = 0x6328,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43225,
-+		.pci_bus = 1,
-+		.pci_dev = 0,
-+	},
-+};
-+
- static struct board_info __initdata board_dsl_274xb_f1 = {
- 	.name = "AW4339U",
- 	.expected_cpu_id = 0x6328,
-@@ -1074,6 +1117,7 @@ static const struct board_info __initcon
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	&board_96328avng,
- 	&board_963281TAN,
-+	&board_A4001N1,
- 	&board_dsl_274xb_f1,
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- #ifdef CONFIG_BCM63XX_CPU_6338
-@@ -1138,6 +1182,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_6318
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- #ifdef CONFIG_BCM63XX_CPU_6328
-+	{ .compatible = "adb,a4001n1", .data = &board_A4001N1, },
- 	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
- 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
- 	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
diff --git a/target/linux/bcm63xx/patches-5.4/528-board_bcm6328-adb-a4001n.patch b/target/linux/bcm63xx/patches-5.4/528-board_bcm6328-adb-a4001n.patch
new file mode 100644
index 0000000000..da2200652e
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/528-board_bcm6328-adb-a4001n.patch
@@ -0,0 +1,68 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -508,6 +508,49 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_A4001N = {
++	.name = "96328dg2x2",
++	.expected_cpu_id = 0x6328,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43225,
++		.pci_bus = 1,
++		.pci_dev = 0,
++	},
++};
++
+ static struct board_info __initdata board_A4001N1 = {
+ 	.name = "963281T_TEF",
+ 	.expected_cpu_id = 0x6328,
+@@ -987,6 +1030,7 @@ static const struct board_info __initcon
+ 	&board_AR5381u,
+ 	&board_AR5387un,
+ 	&board_963281TAN,
++	&board_A4001N,
+ 	&board_A4001N1,
+ 	&board_dsl_274xb_f1,
+ 	&board_FAST2704V2,
+@@ -1029,6 +1073,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "sagem,fast-2704n", .data = &board_FAST2704N, },
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
++	{ .compatible = "adb,a4001n", .data = &board_A4001N, },
+ 	{ .compatible = "adb,a4001n1", .data = &board_A4001N1, },
+ 	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
+ 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
diff --git a/target/linux/bcm63xx/patches-5.4/529-board_AR-5387un.patch b/target/linux/bcm63xx/patches-5.4/529-board_AR-5387un.patch
deleted file mode 100644
index d5d93eeb1f..0000000000
--- a/target/linux/bcm63xx/patches-5.4/529-board_AR-5387un.patch
+++ /dev/null
@@ -1,97 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -92,6 +92,78 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct sprom_fixup __initdata ar5387un_fixups[] = {
-+	{ .offset = 2, .value = 0x05bb },
-+	{ .offset = 65, .value = 0x1204 },
-+	{ .offset = 78, .value = 0x0303 },
-+	{ .offset = 79, .value = 0x0202 },
-+	{ .offset = 80, .value = 0xff02 },
-+	{ .offset = 87, .value = 0x0315 },
-+	{ .offset = 88, .value = 0x0315 },
-+	{ .offset = 96, .value = 0x2048 },
-+	{ .offset = 97, .value = 0xff11 },
-+	{ .offset = 98, .value = 0x1567 },
-+	{ .offset = 99, .value = 0xfb24 },
-+	{ .offset = 100, .value = 0x3e3c },
-+	{ .offset = 101, .value = 0x4038 },
-+	{ .offset = 102, .value = 0xfe7f },
-+	{ .offset = 103, .value = 0x1279 },
-+	{ .offset = 112, .value = 0x2048 },
-+	{ .offset = 113, .value = 0xff03 },
-+	{ .offset = 114, .value = 0x154c },
-+	{ .offset = 115, .value = 0xfb27 },
-+	{ .offset = 116, .value = 0x3e3c },
-+	{ .offset = 117, .value = 0x4038 },
-+	{ .offset = 118, .value = 0xfe87 },
-+	{ .offset = 119, .value = 0x1233 },
-+	{ .offset = 203, .value = 0x2226 },
-+};
-+
-+static struct board_info __initdata board_AR5387un = {
-+	.name = "96328A-1441N1",
-+	.expected_cpu_id = 0x6328,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43225,
-+		.pci_bus = 1,
-+		.pci_dev = 0,
-+		.board_fixups = ar5387un_fixups,
-+		.num_board_fixups = ARRAY_SIZE(ar5387un_fixups),
-+	},
-+};
-+
- static struct board_info __initdata board_963281TAN = {
- 	.name = "963281TAN",
- 	.expected_cpu_id = 0x6328,
-@@ -1116,6 +1188,7 @@ static const struct board_info __initcon
- #endif /* CONFIG_BCM63XX_CPU_3368 */
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	&board_96328avng,
-+	&board_AR5387un,
- 	&board_963281TAN,
- 	&board_A4001N1,
- 	&board_dsl_274xb_f1,
-@@ -1185,6 +1258,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "adb,a4001n1", .data = &board_A4001N1, },
- 	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
- 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
-+	{ .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, },
- 	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- #ifdef CONFIG_BCM63XX_CPU_6338
diff --git a/target/linux/bcm63xx/patches-5.4/529-board_bcm6328-nucom-r5010un-v2.patch b/target/linux/bcm63xx/patches-5.4/529-board_bcm6328-nucom-r5010un-v2.patch
new file mode 100644
index 0000000000..4f63f23cda
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/529-board_bcm6328-nucom-r5010un-v2.patch
@@ -0,0 +1,69 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -673,6 +673,50 @@ static struct board_info __initdata boar
+ 		},
+ 	},
+ };
++
++static struct board_info __initdata board_R5010UNV2 = {
++	.name = "96328ang",
++	.expected_cpu_id = 0x6328,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43217,
++		.pci_bus = 1,
++		.pci_dev = 0,
++	},
++};
++
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ 
+ /*
+@@ -1034,6 +1078,7 @@ static const struct board_info __initcon
+ 	&board_A4001N1,
+ 	&board_dsl_274xb_f1,
+ 	&board_FAST2704V2,
++	&board_R5010UNV2,
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ #ifdef CONFIG_BCM63XX_CPU_6338
+ 	&board_96338gw,
+@@ -1080,6 +1125,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "comtrend,ar-5381u", .data = &board_AR5381u, },
+ 	{ .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, },
+ 	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
++	{ .compatible = "nucom,r5010un-v2", .data = &board_R5010UNV2, },
+ 	{ .compatible = "sagem,fast-2704-v2", .data = &board_FAST2704V2, },
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ #ifdef CONFIG_BCM63XX_CPU_6338
diff --git a/target/linux/bcm63xx/patches-5.4/530-board_AR-5381u.patch b/target/linux/bcm63xx/patches-5.4/530-board_AR-5381u.patch
deleted file mode 100644
index 9f4facadbc..0000000000
--- a/target/linux/bcm63xx/patches-5.4/530-board_AR-5381u.patch
+++ /dev/null
@@ -1,79 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -92,6 +92,60 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct sprom_fixup __initdata ar5381u_fixups[] = {
-+	{ .offset = 97, .value = 0xfee5 },
-+	{ .offset = 98, .value = 0x157c },
-+	{ .offset = 99, .value = 0xfae7 },
-+	{ .offset = 113, .value = 0xfefa },
-+	{ .offset = 114, .value = 0x15d6 },
-+	{ .offset = 115, .value = 0xfaf8 },
-+};
-+
-+static struct board_info __initdata board_AR5381u = {
-+	.name = "96328A-1241N",
-+	.expected_cpu_id = 0x6328,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43225,
-+		.pci_bus = 1,
-+		.pci_dev = 0,
-+		.board_fixups = ar5381u_fixups,
-+		.num_board_fixups = ARRAY_SIZE(ar5381u_fixups),
-+	},
-+};
-+
- static struct sprom_fixup __initdata ar5387un_fixups[] = {
- 	{ .offset = 2, .value = 0x05bb },
- 	{ .offset = 65, .value = 0x1204 },
-@@ -1188,6 +1242,7 @@ static const struct board_info __initcon
- #endif /* CONFIG_BCM63XX_CPU_3368 */
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	&board_96328avng,
-+	&board_AR5381u,
- 	&board_AR5387un,
- 	&board_963281TAN,
- 	&board_A4001N1,
-@@ -1258,6 +1313,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "adb,a4001n1", .data = &board_A4001N1, },
- 	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
- 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
-+	{ .compatible = "comtrend,ar-5381u", .data = &board_AR5381u, },
- 	{ .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, },
- 	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
- #endif /* CONFIG_BCM63XX_CPU_6328 */
diff --git a/target/linux/bcm63xx/patches-5.4/530-board_bcm6328-sercomm-ad1018.patch b/target/linux/bcm63xx/patches-5.4/530-board_bcm6328-sercomm-ad1018.patch
new file mode 100644
index 0000000000..409f3d8e26
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/530-board_bcm6328-sercomm-ad1018.patch
@@ -0,0 +1,91 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -349,6 +349,71 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct sprom_fixup __initdata ad1018_fixups[] = {
++	{ .offset = 6, .value = 0x1c00 },
++	{ .offset = 65, .value = 0x1256 },
++	{ .offset = 96, .value = 0x2046 },
++	{ .offset = 97, .value = 0xfe69 },
++	{ .offset = 98, .value = 0x1726 },
++	{ .offset = 99, .value = 0xfa5c },
++	{ .offset = 112, .value = 0x2046 },
++	{ .offset = 113, .value = 0xfea8 },
++	{ .offset = 114, .value = 0x1978 },
++	{ .offset = 115, .value = 0xfa26 },
++	{ .offset = 161, .value = 0x2222 },
++	{ .offset = 169, .value = 0x2222 },
++	{ .offset = 171, .value = 0x2222 },
++	{ .offset = 173, .value = 0x2222 },
++	{ .offset = 174, .value = 0x4444 },
++	{ .offset = 175, .value = 0x2222 },
++	{ .offset = 176, .value = 0x4444 },
++};
++
++static struct board_info __initdata board_AD1018 = {
++	.name = "96328avngr",
++	.expected_cpu_id = 0x6328,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "FIBRE",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "LAN3",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "LAN2",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "LAN1",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43217,
++		.pci_bus = 1,
++		.pci_dev = 0,
++		.board_fixups = ad1018_fixups,
++		.num_board_fixups = ARRAY_SIZE(ad1018_fixups),
++	},
++};
++
+ static struct sprom_fixup __initdata ar5381u_fixups[] = {
+ 	{ .offset = 97, .value = 0xfee5 },
+ 	{ .offset = 98, .value = 0x157c },
+@@ -1071,6 +1136,7 @@ static const struct board_info __initcon
+ #endif /* CONFIG_BCM63XX_CPU_6318 */
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	&board_96328avng,
++	&board_AD1018,
+ 	&board_AR5381u,
+ 	&board_AR5387un,
+ 	&board_963281TAN,
+@@ -1127,6 +1193,8 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
+ 	{ .compatible = "nucom,r5010un-v2", .data = &board_R5010UNV2, },
+ 	{ .compatible = "sagem,fast-2704-v2", .data = &board_FAST2704V2, },
++	{ .compatible = "sercomm,ad1018", .data = &board_AD1018, },
++	{ .compatible = "sercomm,ad1018-nor", .data = &board_AD1018, },
+ #endif /* CONFIG_BCM63XX_CPU_6328 */
+ #ifdef CONFIG_BCM63XX_CPU_6338
+ 	{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
diff --git a/target/linux/bcm63xx/patches-5.4/531-board-bcm6328-adb-pdg-a4001n-a-000-1a1-ax.patch b/target/linux/bcm63xx/patches-5.4/531-board-bcm6328-adb-pdg-a4001n-a-000-1a1-ax.patch
new file mode 100644
index 0000000000..3b08649bbc
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/531-board-bcm6328-adb-pdg-a4001n-a-000-1a1-ax.patch
@@ -0,0 +1,68 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -616,6 +616,49 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_PDG_A4001N_A_000_1A1_AX = {
++	.name = "96328avng",
++	.expected_cpu_id = 0x6328,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43225,
++		.pci_bus = 1,
++		.pci_dev = 0,
++	},
++};
++
+ static struct board_info __initdata board_A4001N1 = {
+ 	.name = "963281T_TEF",
+ 	.expected_cpu_id = 0x6328,
+@@ -1141,6 +1184,7 @@ static const struct board_info __initcon
+ 	&board_AR5387un,
+ 	&board_963281TAN,
+ 	&board_A4001N,
++	&board_PDG_A4001N_A_000_1A1_AX,
+ 	&board_A4001N1,
+ 	&board_dsl_274xb_f1,
+ 	&board_FAST2704V2,
+@@ -1186,6 +1230,7 @@ static struct of_device_id const bcm963x
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ 	{ .compatible = "adb,a4001n", .data = &board_A4001N, },
+ 	{ .compatible = "adb,a4001n1", .data = &board_A4001N1, },
++	{ .compatible = "adb,pdg-a4001n-a-000-1a1-ax", .data = &board_PDG_A4001N_A_000_1A1_AX, },
+ 	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
+ 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
+ 	{ .compatible = "comtrend,ar-5381u", .data = &board_AR5381u, },
diff --git a/target/linux/bcm63xx/patches-5.4/531-board_rta770bw_rta770w.patch b/target/linux/bcm63xx/patches-5.4/531-board_rta770bw_rta770w.patch
deleted file mode 100644
index aa01f153db..0000000000
--- a/target/linux/bcm63xx/patches-5.4/531-board_rta770bw_rta770w.patch
+++ /dev/null
@@ -1,39 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -406,6 +406,19 @@ static struct board_info __initdata boar
- 	.name				= "96345GW2",
- 	.expected_cpu_id		= 0x6345,
- };
-+
-+static struct board_info __initdata board_rta770w = {
-+	.name = "RTA770BW",
-+	.expected_cpu_id = 0x6345,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6345 */
- 
- /*
-@@ -1256,6 +1269,7 @@ static const struct board_info __initcon
- #endif /* CONFIG_BCM63XX_CPU_6338 */
- #ifdef CONFIG_BCM63XX_CPU_6345
- 	&board_96345gw2,
-+	&board_rta770w,
- #endif /* CONFIG_BCM63XX_CPU_6345 */
- #ifdef CONFIG_BCM63XX_CPU_6348
- 	&board_96348r,
-@@ -1325,6 +1339,8 @@ static struct of_device_id const bcm963x
- #endif /* CONFIG_BCM63XX_CPU_6338 */
- #ifdef CONFIG_BCM63XX_CPU_6345
- 	{ .compatible = "brcm,bcm96345gw2", .data = &board_96345gw2, },
-+	{ .compatible = "dynalink,rta770bw", .data = &board_rta770w, },
-+	{ .compatible = "dynalink,rta770w", .data = &board_rta770w, },
- #endif /* CONFIG_BCM63XX_CPU_6345 */
- #ifdef CONFIG_BCM63XX_CPU_6348
- 	{ .compatible = "belkin,f5d7633", .data = &board_96348gw_10, },
diff --git a/target/linux/bcm63xx/patches-5.4/532-board_hw556.patch b/target/linux/bcm63xx/patches-5.4/532-board_hw556.patch
deleted file mode 100644
index 890e2e01d5..0000000000
--- a/target/linux/bcm63xx/patches-5.4/532-board_hw556.patch
+++ /dev/null
@@ -1,125 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -12,6 +12,7 @@
- #include <linux/init.h>
- #include <linux/kernel.h>
- #include <linux/string.h>
-+#include <linux/pci_ids.h>
- #include <asm/addrspace.h>
- #include <bcm63xx_board.h>
- #include <bcm63xx_cpu.h>
-@@ -1100,6 +1101,94 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_HW556_A = {
-+	.name = "HW556_A",
-+	.expected_cpu_id = 0x6358,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_caldata = 1,
-+	.caldata = {
-+		{
-+			.vendor = PCI_VENDOR_ID_ATHEROS,
-+			.caldata_offset = 0xf7e000,
-+			.slot = 1,
-+			.endian_check = 1,
-+			.led_pin = 2,
-+			.led_active_high = 1,
-+		},
-+	},
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
-+
-+static struct board_info __initdata board_HW556_B = {
-+	.name = "HW556_B",
-+	.expected_cpu_id = 0x6358,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_caldata = 1,
-+	.caldata = {
-+		{
-+			.vendor = PCI_VENDOR_ID_ATHEROS,
-+			.caldata_offset = 0xefe000,
-+			.slot = 1,
-+			.endian_check = 1,
-+			.led_pin = 2,
-+			.led_active_high = 1,
-+		},
-+	},
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
-+
-+static struct board_info __initdata board_HW556_C = {
-+	.name = "HW556_C",
-+	.expected_cpu_id = 0x6358,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_caldata = 1,
-+	.caldata = {
-+		{
-+			.vendor = PCI_VENDOR_ID_RALINK,
-+			.caldata_offset = 0xeffe00,
-+			.slot = 1,
-+			.eeprom = "rt2x00.eeprom",
-+		},
-+	},
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
-+
-  /* T-Home Speedport W 303V Typ B */
- static struct board_info __initdata board_spw303v = {
- 	.name = "96358-502V",
-@@ -1304,6 +1393,9 @@ static const struct board_info __initcon
- 	&board_nb4_fxc_r1,
- 	&board_ct6373_1,
- 	&board_HW553,
-+	&board_HW556_A,
-+	&board_HW556_B,
-+	&board_HW556_C,
- 	&board_spw303v,
- 	&board_DVAG3810BN,
- #endif /* CONFIG_BCM63XX_CPU_6358 */
-@@ -1377,6 +1469,9 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
- 	{ .compatible = "d-link,dva-g3810bn-tl", .data = &board_DVAG3810BN, },
- 	{ .compatible = "huawei,echolife-hg553", .data = &board_HW553, },
-+	{ .compatible = "huawei,echolife-hg556a-a", .data = &board_HW556_A, },
-+	{ .compatible = "huawei,echolife-hg556a-b", .data = &board_HW556_B, },
-+	{ .compatible = "huawei,echolife-hg556a-c", .data = &board_HW556_C, },
- 	{ .compatible = "pirelli,a226g", .data = &board_DWVS0, },
- 	{ .compatible = "pirelli,a226m", .data = &board_DWVS0, },
- 	{ .compatible = "pirelli,a226m-fwb", .data = &board_DWVS0, },
diff --git a/target/linux/bcm63xx/patches-5.4/534-board_fast2704.patch b/target/linux/bcm63xx/patches-5.4/534-board_fast2704.patch
deleted file mode 100644
index 8edbc57101..0000000000
--- a/target/linux/bcm63xx/patches-5.4/534-board_fast2704.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From: Marcin Jurkowski <marcin1j@gmail.com>
-Date: Thu, 31 Oct 2013 22:33:10 +0000
-Subject: [PATCH] bcm63xx: Add kernel support for Sagemcom F@ST2704V2 ADSL
- router
-
-This adds kernel support support for Sagemcom F@st 2704 wireless ADSL
-router.
-It's a BCM6328-based 802.11n wireless router with USB port and ADSL2+
-modem equipped with 64 MiB RAM and 8 MiB flash.
-
-Signed-off-by: Marcin Jurkowski <marcin1j@gmail.com>
----
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -338,6 +338,42 @@ static struct board_info __initdata boar
- 		},
- 	},
- };
-+
-+static struct board_info __initdata board_FAST2704V2 = {
-+	.name = "F@ST2704V2",
-+	.expected_cpu_id = 0x6328,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.has_usbd = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- 
- /*
-@@ -1349,6 +1385,7 @@ static const struct board_info __initcon
- 	&board_963281TAN,
- 	&board_A4001N1,
- 	&board_dsl_274xb_f1,
-+	&board_FAST2704V2,
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- #ifdef CONFIG_BCM63XX_CPU_6338
- 	&board_96338gw,
-@@ -1422,6 +1459,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "comtrend,ar-5381u", .data = &board_AR5381u, },
- 	{ .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, },
- 	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
-+	{ .compatible = "sagem,fast-2704-v2", .data = &board_FAST2704V2, },
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- #ifdef CONFIG_BCM63XX_CPU_6338
- 	{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
diff --git a/target/linux/bcm63xx/patches-5.4/535-board_fast2504n.patch b/target/linux/bcm63xx/patches-5.4/535-board_fast2504n.patch
deleted file mode 100644
index ab5b61880f..0000000000
--- a/target/linux/bcm63xx/patches-5.4/535-board_fast2504n.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From: Max Staudt <openwrt.max@enpas.org>
-Date: Wed, 15 Jan 2014 18:51:13 +0000
-Subject: [PATCH] bcm63xx: F@ST2504n board support (Linux-3.10.26)
-
-Signed-off-by: Max Staudt <openwrt.max@enpas.org>
----
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1288,6 +1288,37 @@ static struct board_info __initdata boar
- 		},
- 	},
- };
-+
-+static struct board_info __initdata board_fast2504n = {
-+	.name = "F@ST2504n",
-+	.expected_cpu_id = 0x6362,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6362 */
- 
- /*
-@@ -1438,6 +1469,7 @@ static const struct board_info __initcon
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- #ifdef CONFIG_BCM63XX_CPU_6362
- 	&board_nb6,
-+	&board_fast2504n,
- #endif /* CONFIG_BCM63XX_CPU_6362 */
- #ifdef CONFIG_BCM63XX_CPU_6368
- 	&board_96368mvwg,
-@@ -1520,6 +1552,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "telsey,cpva642", .data = &board_CPVA642, },
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- #ifdef CONFIG_BCM63XX_CPU_6362
-+	{ .compatible = "sagem,fast-2504n", .data = &board_fast2504n, },
- 	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
- #endif /* CONFIG_BCM63XX_CPU_6362 */
- #ifdef CONFIG_BCM63XX_CPU_6368
diff --git a/target/linux/bcm63xx/patches-5.4/536-board_96318ref.patch b/target/linux/bcm63xx/patches-5.4/536-board_96318ref.patch
deleted file mode 100644
index dee7659d20..0000000000
--- a/target/linux/bcm63xx/patches-5.4/536-board_96318ref.patch
+++ /dev/null
@@ -1,74 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -50,6 +50,53 @@ static struct board_info __initdata boar
- #endif /* CONFIG_BCM63XX_CPU_3368 */
- 
- /*
-+ * known 6318 boards
-+ */
-+#ifdef CONFIG_BCM63XX_CPU_6318
-+static struct board_info __initdata board_96318ref = {
-+	.name = "96318REF",
-+	.expected_cpu_id = 0x6318,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_usbd = 1,
-+	.usbd = {
-+		.use_fullspeed = 0,
-+		.port_no = 0,
-+	},
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+};
-+#endif /* CONFIG_BCM63XX_CPU_6318 */
-+
-+/*
-  * known 6328 boards
-  */
- #ifdef CONFIG_BCM63XX_CPU_6328
-@@ -1409,6 +1456,9 @@ static const struct board_info __initcon
- #ifdef CONFIG_BCM63XX_CPU_3368
- 	&board_cvg834g,
- #endif /* CONFIG_BCM63XX_CPU_3368 */
-+#ifdef CONFIG_BCM63XX_CPU_6318
-+	&board_96318ref,
-+#endif /* CONFIG_BCM63XX_CPU_6318 */
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	&board_96328avng,
- 	&board_AR5381u,
-@@ -1483,6 +1533,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "netgear,cvg834g", .data = &board_cvg834g, },
- #endif /* CONFIG_BCM63XX_CPU_3368 */
- #ifdef CONFIG_BCM63XX_CPU_6318
-+	{ .compatible = "brcm,bcm96318ref", .data = &board_96318ref, },
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	{ .compatible = "adb,a4001n1", .data = &board_A4001N1, },
diff --git a/target/linux/bcm63xx/patches-5.4/537-board_96318ref_p300.patch b/target/linux/bcm63xx/patches-5.4/537-board_96318ref_p300.patch
deleted file mode 100644
index 337d30114d..0000000000
--- a/target/linux/bcm63xx/patches-5.4/537-board_96318ref_p300.patch
+++ /dev/null
@@ -1,67 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -94,6 +94,48 @@ static struct board_info __initdata boar
- 		},
- 	},
- };
-+
-+static struct board_info __initdata board_96318ref_p300 = {
-+	.name = "96318REF_P300",
-+	.expected_cpu_id = 0x6318,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_usbd = 1,
-+	.usbd = {
-+		.use_fullspeed = 0,
-+		.port_no = 0,
-+	},
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- 
- /*
-@@ -1458,6 +1500,7 @@ static const struct board_info __initcon
- #endif /* CONFIG_BCM63XX_CPU_3368 */
- #ifdef CONFIG_BCM63XX_CPU_6318
- 	&board_96318ref,
-+	&board_96318ref_p300,
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	&board_96328avng,
-@@ -1534,6 +1577,7 @@ static struct of_device_id const bcm963x
- #endif /* CONFIG_BCM63XX_CPU_3368 */
- #ifdef CONFIG_BCM63XX_CPU_6318
- 	{ .compatible = "brcm,bcm96318ref", .data = &board_96318ref, },
-+	{ .compatible = "brcm,bcm96318ref-p300", .data = &board_96318ref_p300, },
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	{ .compatible = "adb,a4001n1", .data = &board_A4001N1, },
diff --git a/target/linux/bcm63xx/patches-5.4/538-board_bcm963269bhr.patch b/target/linux/bcm63xx/patches-5.4/538-board_bcm963269bhr.patch
deleted file mode 100644
index c1125f00ed..0000000000
--- a/target/linux/bcm63xx/patches-5.4/538-board_bcm963269bhr.patch
+++ /dev/null
@@ -1,67 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1492,6 +1492,46 @@ static struct board_info __initdata boar
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- 
- /*
-+ * known 63268/63269 boards
-+ */
-+#ifdef CONFIG_BCM63XX_CPU_63268
-+static struct board_info __initdata board_963269bhr = {
-+	.name = "963269BHR",
-+	.expected_cpu_id = 0x63268,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "port1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "port2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "port3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "port4",
-+			},
-+		},
-+	},
-+};
-+#endif /* CONFIG_BCM63XX_CPU_63268 */
-+
-+/*
-  * all boards
-  */
- static const struct board_info __initconst *bcm963xx_boards[] = {
-@@ -1568,6 +1608,9 @@ static const struct board_info __initcon
- 	&board_96368mvwg,
- 	&board_96368mvngr,
- #endif /* CONFIG_BCM63XX_CPU_6368 */
-+#ifdef CONFIG_BCM63XX_CPU_63268
-+	&board_963269bhr,
-+#endif /* CONFIG_BCM63XX_CPU_63268 */
- };
- 
- static struct of_device_id const bcm963xx_boards_dt[] = {
-@@ -1655,6 +1698,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
-+	{ .compatible = "brcm,bcm963269bhr", .data = &board_963269bhr, },
- #endif /* CONFIG_BCM63XX_CPU_63268 */
- #endif /* CONFIG_OF */
- 	{ },
diff --git a/target/linux/bcm63xx/patches-5.4/539-board_AR1004G.patch b/target/linux/bcm63xx/patches-5.4/539-board_AR1004G.patch
deleted file mode 100644
index cc16adf402..0000000000
--- a/target/linux/bcm63xx/patches-5.4/539-board_AR1004G.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From: "mexit@o2.pl" <mexit@o2.pl>
-Date: Sun, 24 Nov 2013 21:33:38 +0000
-Subject: [PATCH 4/5] bcm63xx: add support for Asmax AR 1004g router
-
-Support for Asmax AR 1004g router
-
-Signed-off-by: Adrian Feliks <mexit@o2.pl>
----
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -617,6 +617,21 @@ static struct board_info __initdata boar
- 	.has_ehci0 = 1,
- };
- 
-+static struct board_info __initdata board_96348gw_10_AR1004G = {
-+	.name = "AR1004G",
-+	.expected_cpu_id = 0x6348,
-+
-+	.has_pci = 1,
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+};
-+
- /* BT Voyager 2110 */
- static struct board_info __initdata board_V2110 = {
- 	.name = "V2110",
-@@ -1582,6 +1597,7 @@ static const struct board_info __initcon
- 	&board_96348A_122,
- 	&board_CPVA502plus,
- 	&board_96348W3,
-+	&board_96348gw_10_AR1004G,
- #endif /* CONFIG_BCM63XX_CPU_6348 */
- #ifdef CONFIG_BCM63XX_CPU_6358
- 	&board_96358vw,
-@@ -1643,6 +1659,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "dynalink,rta770w", .data = &board_rta770w, },
- #endif /* CONFIG_BCM63XX_CPU_6345 */
- #ifdef CONFIG_BCM63XX_CPU_6348
-+	{ .compatible = "asmax,ar-1004g", .data = &board_96348gw_10_AR1004G, },
- 	{ .compatible = "belkin,f5d7633", .data = &board_96348gw_10, },
- 	{ .compatible = "brcm,bcm96348r", .data = &board_96348r, },
- 	{ .compatible = "brcm,bcm96348gw-10", .data = &board_96348gw_10, },
diff --git a/target/linux/bcm63xx/patches-5.4/540-board_vw6339gu.patch b/target/linux/bcm63xx/patches-5.4/540-board_vw6339gu.patch
deleted file mode 100644
index f582780ed4..0000000000
--- a/target/linux/bcm63xx/patches-5.4/540-board_vw6339gu.patch
+++ /dev/null
@@ -1,67 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1544,6 +1544,48 @@ static struct board_info __initdata boar
- 		},
- 	},
- };
-+
-+static struct board_info __initdata board_vw6339gu = {
-+	.name = "VW6339GU",
-+	.expected_cpu_id = 0x63268,
-+
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "LAN2",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "LAN3",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "LAN4",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "LAN1",
-+			},
-+			[4] = {
-+				.used = 1,
-+				.phy_id = 7,
-+				.name = "WAN",
-+				.mii_override = 1,
-+				.timing_sel = 1,
-+			},
-+		},
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_63268 */
- 
- /*
-@@ -1626,6 +1668,7 @@ static const struct board_info __initcon
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
- 	&board_963269bhr,
-+	&board_vw6339gu,
- #endif /* CONFIG_BCM63XX_CPU_63268 */
- };
- 
-@@ -1716,6 +1759,7 @@ static struct of_device_id const bcm963x
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
- 	{ .compatible = "brcm,bcm963269bhr", .data = &board_963269bhr, },
-+	{ .compatible = "inteno,vg50", .data = &board_vw6339gu, },
- #endif /* CONFIG_BCM63XX_CPU_63268 */
- #endif /* CONFIG_OF */
- 	{ },
diff --git a/target/linux/bcm63xx/patches-5.4/541-board-bcm6338-d-link-dsl-2640u.patch b/target/linux/bcm63xx/patches-5.4/541-board-bcm6338-d-link-dsl-2640u.patch
new file mode 100644
index 0000000000..2c6a4950bb
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/541-board-bcm6338-d-link-dsl-2640u.patch
@@ -0,0 +1,38 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -858,6 +858,19 @@ static struct board_info __initdata boar
+ 		.force_duplex_full	= 1,
+ 	},
+ };
++
++static struct board_info __initdata board_96338w2_e7t = {
++	.name = "96338W2_E7T",
++	.expected_cpu_id = 0x6338,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6338 */
+ 
+ /*
+@@ -1193,6 +1206,7 @@ static const struct board_info __initcon
+ #ifdef CONFIG_BCM63XX_CPU_6338
+ 	&board_96338gw,
+ 	&board_96338w,
++	&board_96338w2_e7t,
+ #endif /* CONFIG_BCM63XX_CPU_6338 */
+ #ifdef CONFIG_BCM63XX_CPU_6345
+ 	&board_96345gw2,
+@@ -1244,6 +1258,7 @@ static struct of_device_id const bcm963x
+ #ifdef CONFIG_BCM63XX_CPU_6338
+ 	{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
+ 	{ .compatible = "brcm,bcm96338w", .data = &board_96338w, },
++	{ .compatible = "d-link,dsl-2640u", .data = &board_96338w2_e7t, },
+ #endif /* CONFIG_BCM63XX_CPU_6338 */
+ #ifdef CONFIG_BCM63XX_CPU_6345
+ 	{ .compatible = "brcm,bcm96345gw2", .data = &board_96345gw2, },
diff --git a/target/linux/bcm63xx/patches-5.4/541-board_963268gu_p300.patch b/target/linux/bcm63xx/patches-5.4/541-board_963268gu_p300.patch
deleted file mode 100644
index 00c69a907b..0000000000
--- a/target/linux/bcm63xx/patches-5.4/541-board_963268gu_p300.patch
+++ /dev/null
@@ -1,84 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1510,6 +1510,65 @@ static struct board_info __initdata boar
-  * known 63268/63269 boards
-  */
- #ifdef CONFIG_BCM63XX_CPU_63268
-+static struct board_info __initdata board_963268bu_p300 = {
-+	.name = "963268BU_P300",
-+	.expected_cpu_id = 0x63268,
-+
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_usbd = 1,
-+	.usbd = {
-+		.use_fullspeed = 0,
-+		.port_no = 0,
-+	},
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 17,
-+				.name = "FE1",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "GbE2",
-+			},
-+			[4] = {
-+				.used = 1,
-+				.phy_id = 0,
-+				.name = "GbE3",
-+				.mii_override = 1,
-+				.timing_sel = 1,
-+			},
-+			[5] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "GbE1",
-+				.mii_override = 1,
-+				.timing_sel = 1,
-+			},
-+			[6] = {
-+				.used = 1,
-+				.phy_id = 24,
-+				.name = "GbE4",
-+				.mii_override = 1,
-+				.timing_sel = 1,
-+			},
-+			[7] = {
-+				.used = 1,
-+				.phy_id = 25,
-+				.name = "GbE5",
-+				.mii_override = 1,
-+				.timing_sel = 1,
-+			},
-+		},
-+	},
-+};
-+
- static struct board_info __initdata board_963269bhr = {
- 	.name = "963269BHR",
- 	.expected_cpu_id = 0x63268,
-@@ -1667,6 +1726,7 @@ static const struct board_info __initcon
- 	&board_96368mvngr,
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
-+	&board_963268bu_p300,
- 	&board_963269bhr,
- 	&board_vw6339gu,
- #endif /* CONFIG_BCM63XX_CPU_63268 */
-@@ -1758,6 +1818,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
-+	{ .compatible = "brcm,bcm963268bu-p300", .data = &board_963268bu_p300, },
- 	{ .compatible = "brcm,bcm963269bhr", .data = &board_963269bhr, },
- 	{ .compatible = "inteno,vg50", .data = &board_vw6339gu, },
- #endif /* CONFIG_BCM63XX_CPU_63268 */
diff --git a/target/linux/bcm63xx/patches-5.4/542-board_WAP-5813n.patch b/target/linux/bcm63xx/patches-5.4/542-board_WAP-5813n.patch
deleted file mode 100644
index 168e0c6ef2..0000000000
--- a/target/linux/bcm63xx/patches-5.4/542-board_WAP-5813n.patch
+++ /dev/null
@@ -1,75 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -13,6 +13,8 @@
- #include <linux/kernel.h>
- #include <linux/string.h>
- #include <linux/pci_ids.h>
-+#include <linux/platform_data/b53.h>
-+#include <linux/spi/spi.h>
- #include <asm/addrspace.h>
- #include <bcm63xx_board.h>
- #include <bcm63xx_cpu.h>
-@@ -1504,6 +1506,47 @@ static struct board_info __initdata boar
- 		},
- 	},
- };
-+
-+static struct sprom_fixup __initdata wap5813n_fixups[] = {
-+	{ .offset = 97, .value = 0xfeed },
-+	{ .offset = 98, .value = 0x15d1 },
-+	{ .offset = 99, .value = 0xfb0d },
-+	{ .offset = 113, .value = 0xfef7 },
-+	{ .offset = 114, .value = 0x15f7 },
-+	{ .offset = 115, .value = 0xfb1a },
-+};
-+
-+static struct board_info __initdata board_WAP5813n = {
-+	.name = "96369R-1231N",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[4] = {
-+				.used = 1,
-+				.phy_id = 0xff,
-+				.bypass_link = 1,
-+				.force_speed = 1000,
-+				.force_duplex_full = 1,
-+				.name = "RGMII",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43222,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+		.board_fixups = wap5813n_fixups,
-+		.num_board_fixups = ARRAY_SIZE(wap5813n_fixups),
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- 
- /*
-@@ -1724,6 +1767,7 @@ static const struct board_info __initcon
- #ifdef CONFIG_BCM63XX_CPU_6368
- 	&board_96368mvwg,
- 	&board_96368mvngr,
-+	&board_WAP5813n,
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
- 	&board_963268bu_p300,
-@@ -1816,6 +1860,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_6368
- 	{ .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
- 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
-+	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
- 	{ .compatible = "brcm,bcm963268bu-p300", .data = &board_963268bu_p300, },
diff --git a/target/linux/bcm63xx/patches-5.4/542-board_bcm6338-dynalink-rta1320.patch b/target/linux/bcm63xx/patches-5.4/542-board_bcm6338-dynalink-rta1320.patch
new file mode 100644
index 0000000000..d3b048a6ac
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/542-board_bcm6338-dynalink-rta1320.patch
@@ -0,0 +1,38 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -871,6 +871,19 @@ static struct board_info __initdata boar
+ 		.force_duplex_full = 1,
+ 	},
+ };
++
++static struct board_info __initdata board_rta1320_16m = {
++	.name = "RTA1320_16M",
++	.expected_cpu_id = 0x6338,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6338 */
+ 
+ /*
+@@ -1207,6 +1220,7 @@ static const struct board_info __initcon
+ 	&board_96338gw,
+ 	&board_96338w,
+ 	&board_96338w2_e7t,
++	&board_rta1320_16m,
+ #endif /* CONFIG_BCM63XX_CPU_6338 */
+ #ifdef CONFIG_BCM63XX_CPU_6345
+ 	&board_96345gw2,
+@@ -1258,6 +1272,7 @@ static struct of_device_id const bcm963x
+ #ifdef CONFIG_BCM63XX_CPU_6338
+ 	{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
+ 	{ .compatible = "brcm,bcm96338w", .data = &board_96338w, },
++	{ .compatible = "dynalink,rta1320", .data = &board_rta1320_16m, },
+ 	{ .compatible = "d-link,dsl-2640u", .data = &board_96338w2_e7t, },
+ #endif /* CONFIG_BCM63XX_CPU_6338 */
+ #ifdef CONFIG_BCM63XX_CPU_6345
diff --git a/target/linux/bcm63xx/patches-5.4/543-board_VR-3025u.patch b/target/linux/bcm63xx/patches-5.4/543-board_VR-3025u.patch
deleted file mode 100644
index 55e4ec02dd..0000000000
--- a/target/linux/bcm63xx/patches-5.4/543-board_VR-3025u.patch
+++ /dev/null
@@ -1,78 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1507,6 +1507,59 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct sprom_fixup __initdata vr3025u_fixups[] = {
-+	{ .offset = 97, .value = 0xfeb3 },
-+	{ .offset = 98, .value = 0x1618 },
-+	{ .offset = 99, .value = 0xfab0 },
-+	{ .offset = 113, .value = 0xfed1 },
-+	{ .offset = 114, .value = 0x1609 },
-+	{ .offset = 115, .value = 0xfad9 },
-+};
-+
-+static struct board_info __initdata board_VR3025u = {
-+	.name = "96368M-1541N",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "port1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "port2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "port3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "port4",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43222,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+		.board_fixups = vr3025u_fixups,
-+		.num_board_fixups = ARRAY_SIZE(vr3025u_fixups),
-+	},
-+};
-+
- static struct sprom_fixup __initdata wap5813n_fixups[] = {
- 	{ .offset = 97, .value = 0xfeed },
- 	{ .offset = 98, .value = 0x15d1 },
-@@ -1767,6 +1820,7 @@ static const struct board_info __initcon
- #ifdef CONFIG_BCM63XX_CPU_6368
- 	&board_96368mvwg,
- 	&board_96368mvngr,
-+	&board_VR3025u,
- 	&board_WAP5813n,
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
-@@ -1860,6 +1914,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_6368
- 	{ .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
- 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
-+	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
- 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
diff --git a/target/linux/bcm63xx/patches-5.4/544-board_VR-3025un.patch b/target/linux/bcm63xx/patches-5.4/544-board_VR-3025un.patch
deleted file mode 100644
index 45293c8291..0000000000
--- a/target/linux/bcm63xx/patches-5.4/544-board_VR-3025un.patch
+++ /dev/null
@@ -1,78 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1560,6 +1560,59 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct sprom_fixup __initdata vr3025un_fixups[] = {
-+	{ .offset = 97, .value = 0xfeb3 },
-+	{ .offset = 98, .value = 0x1618 },
-+	{ .offset = 99, .value = 0xfab0 },
-+	{ .offset = 113, .value = 0xfed1 },
-+	{ .offset = 114, .value = 0x1609 },
-+	{ .offset = 115, .value = 0xfad9 },
-+};
-+
-+static struct board_info __initdata board_VR3025un = {
-+	.name = "96368M-1341N",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "port1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "port2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "port3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "port4",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43222,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+		.board_fixups = vr3025un_fixups,
-+		.num_board_fixups = ARRAY_SIZE(vr3025un_fixups),
-+	},
-+};
-+
- static struct sprom_fixup __initdata wap5813n_fixups[] = {
- 	{ .offset = 97, .value = 0xfeed },
- 	{ .offset = 98, .value = 0x15d1 },
-@@ -1821,6 +1874,7 @@ static const struct board_info __initcon
- 	&board_96368mvwg,
- 	&board_96368mvngr,
- 	&board_VR3025u,
-+	&board_VR3025un,
- 	&board_WAP5813n,
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
-@@ -1915,6 +1969,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
- 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
- 	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
-+	{ .compatible = "comtrend,vr-3025un", .data = &board_VR3025un, },
- 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
diff --git a/target/linux/bcm63xx/patches-5.4/545-board_P870HW-51a_v2.patch b/target/linux/bcm63xx/patches-5.4/545-board_P870HW-51a_v2.patch
deleted file mode 100644
index ce76703d88..0000000000
--- a/target/linux/bcm63xx/patches-5.4/545-board_P870HW-51a_v2.patch
+++ /dev/null
@@ -1,67 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1516,6 +1516,48 @@ static struct sprom_fixup __initdata vr3
- 	{ .offset = 115, .value = 0xfad9 },
- };
- 
-+static struct board_info __initdata board_P870HW51A_V2 = {
-+	.name = "P870HW-51a_v2",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "port1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "port2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "port3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "port4",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM4318,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+	},
-+};
-+
- static struct board_info __initdata board_VR3025u = {
- 	.name = "96368M-1541N",
- 	.expected_cpu_id = 0x6368,
-@@ -1873,6 +1915,7 @@ static const struct board_info __initcon
- #ifdef CONFIG_BCM63XX_CPU_6368
- 	&board_96368mvwg,
- 	&board_96368mvngr,
-+	&board_P870HW51A_V2,
- 	&board_VR3025u,
- 	&board_VR3025un,
- 	&board_WAP5813n,
-@@ -1971,6 +2014,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
- 	{ .compatible = "comtrend,vr-3025un", .data = &board_VR3025un, },
- 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
-+	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
- 	{ .compatible = "brcm,bcm963268bu-p300", .data = &board_963268bu_p300, },
diff --git a/target/linux/bcm63xx/patches-5.4/546-board_hw520.patch b/target/linux/bcm63xx/patches-5.4/546-board_hw520.patch
deleted file mode 100644
index a29f9bd573..0000000000
--- a/target/linux/bcm63xx/patches-5.4/546-board_hw520.patch
+++ /dev/null
@@ -1,55 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1218,6 +1218,36 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_HW520 = {
-+	.name = "HW6358GW_B",
-+	.expected_cpu_id = 0x6358,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+
-+	.has_enet0 = 1,
-+	.enet0 = {
-+		.has_phy = 1,
-+		.use_internal_phy = 1,
-+	},
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM4318,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+	},
-+};
-+
- static struct board_info __initdata board_HW553 = {
- 	.name = "HW553",
- 	.expected_cpu_id = 0x6358,
-@@ -1901,6 +1931,7 @@ static const struct board_info __initcon
- 	&board_nb4_ser_r0,
- 	&board_nb4_fxc_r1,
- 	&board_ct6373_1,
-+	&board_HW520,
- 	&board_HW553,
- 	&board_HW556_A,
- 	&board_HW556_B,
-@@ -1991,6 +2022,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "d-link,dsl-274xb-c2", .data = &board_dsl_274xb_rev_c, },
- 	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
- 	{ .compatible = "d-link,dva-g3810bn-tl", .data = &board_DVAG3810BN, },
-+	{ .compatible = "huawei,echolife-hg520v", .data = &board_HW520, },
- 	{ .compatible = "huawei,echolife-hg553", .data = &board_HW553, },
- 	{ .compatible = "huawei,echolife-hg556a-a", .data = &board_HW556_A, },
- 	{ .compatible = "huawei,echolife-hg556a-b", .data = &board_HW556_B, },
diff --git a/target/linux/bcm63xx/patches-5.4/547-board_A4001N.patch b/target/linux/bcm63xx/patches-5.4/547-board_A4001N.patch
deleted file mode 100644
index ec5313bb01..0000000000
--- a/target/linux/bcm63xx/patches-5.4/547-board_A4001N.patch
+++ /dev/null
@@ -1,68 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -343,6 +343,49 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_A4001N = {
-+	.name = "96328dg2x2",
-+	.expected_cpu_id = 0x6328,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43225,
-+		.pci_bus = 1,
-+		.pci_dev = 0,
-+	},
-+};
-+
- static struct board_info __initdata board_A4001N1 = {
- 	.name = "963281T_TEF",
- 	.expected_cpu_id = 0x6328,
-@@ -1884,6 +1927,7 @@ static const struct board_info __initcon
- 	&board_AR5381u,
- 	&board_AR5387un,
- 	&board_963281TAN,
-+	&board_A4001N,
- 	&board_A4001N1,
- 	&board_dsl_274xb_f1,
- 	&board_FAST2704V2,
-@@ -1968,6 +2012,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "brcm,bcm96318ref-p300", .data = &board_96318ref_p300, },
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- #ifdef CONFIG_BCM63XX_CPU_6328
-+	{ .compatible = "adb,a4001n", .data = &board_A4001N, },
- 	{ .compatible = "adb,a4001n1", .data = &board_A4001N1, },
- 	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
- 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
diff --git a/target/linux/bcm63xx/patches-5.4/548-board_dsl-2751b_e1.patch b/target/linux/bcm63xx/patches-5.4/548-board_dsl-2751b_e1.patch
deleted file mode 100644
index a7beec0ac9..0000000000
--- a/target/linux/bcm63xx/patches-5.4/548-board_dsl-2751b_e1.patch
+++ /dev/null
@@ -1,91 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -138,6 +138,72 @@ static struct board_info __initdata boar
- 		},
- 	},
- };
-+
-+static struct sprom_fixup __initdata dsl2751b_e1_fixups[] = {
-+	{ .offset = 96, .value = 0x2046 },
-+	{ .offset = 97, .value = 0xfe9d },
-+	{ .offset = 98, .value = 0x1854 },
-+	{ .offset = 99, .value = 0xfa59 },
-+	{ .offset = 112, .value = 0x2046 },
-+	{ .offset = 113, .value = 0xfe79 },
-+	{ .offset = 114, .value = 0x17f5 },
-+	{ .offset = 115, .value = 0xfa47 },
-+	{ .offset = 161, .value = 0x2222 },
-+	{ .offset = 162, .value = 0x2222 },
-+	{ .offset = 169, .value = 0x2222 },
-+	{ .offset = 170, .value = 0x2222 },
-+	{ .offset = 171, .value = 0x5555 },
-+	{ .offset = 172, .value = 0x5555 },
-+	{ .offset = 173, .value = 0x4444 },
-+	{ .offset = 174, .value = 0x4444 },
-+	{ .offset = 175, .value = 0x5555 },
-+	{ .offset = 176, .value = 0x5555 },
-+};
-+
-+static struct board_info __initdata board_dsl_2751b_d1 = {
-+	.name = "AW5200B",
-+	.expected_cpu_id = 0x6318,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43217,
-+		.pci_bus = 1,
-+		.pci_dev = 0,
-+		.board_fixups = dsl2751b_e1_fixups,
-+		.num_board_fixups = ARRAY_SIZE(dsl2751b_e1_fixups),
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- 
- /*
-@@ -1921,6 +1987,7 @@ static const struct board_info __initcon
- #ifdef CONFIG_BCM63XX_CPU_6318
- 	&board_96318ref,
- 	&board_96318ref_p300,
-+	&board_dsl_2751b_d1,
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	&board_96328avng,
-@@ -2010,6 +2077,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_6318
- 	{ .compatible = "brcm,bcm96318ref", .data = &board_96318ref, },
- 	{ .compatible = "brcm,bcm96318ref-p300", .data = &board_96318ref_p300, },
-+	{ .compatible = "d-link,dsl-275xb-d1", .data = &board_dsl_2751b_d1, },
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	{ .compatible = "adb,a4001n", .data = &board_A4001N, },
diff --git a/target/linux/bcm63xx/patches-5.4/549-board_DGND3700v1_3800B.patch b/target/linux/bcm63xx/patches-5.4/549-board_DGND3700v1_3800B.patch
deleted file mode 100644
index a09cac1d53..0000000000
--- a/target/linux/bcm63xx/patches-5.4/549-board_DGND3700v1_3800B.patch
+++ /dev/null
@@ -1,49 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1646,6 +1646,30 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_DGND3700v1_3800B = {
-+	.name = "DGND3700v1_3800B",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[5] = {
-+				.used = 1,
-+				.phy_id = 0xff,
-+				.bypass_link = 1,
-+				.force_speed = 1000,
-+				.force_duplex_full = 1,
-+				.name = "RGMII",
-+			},
-+		},
-+	},
-+};
-+
- static struct sprom_fixup __initdata vr3025u_fixups[] = {
- 	{ .offset = 97, .value = 0xfeb3 },
- 	{ .offset = 98, .value = 0x1618 },
-@@ -2057,6 +2081,7 @@ static const struct board_info __initcon
- #ifdef CONFIG_BCM63XX_CPU_6368
- 	&board_96368mvwg,
- 	&board_96368mvngr,
-+	&board_DGND3700v1_3800B,
- 	&board_P870HW51A_V2,
- 	&board_VR3025u,
- 	&board_VR3025un,
-@@ -2159,6 +2184,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
- 	{ .compatible = "comtrend,vr-3025un", .data = &board_VR3025un, },
- 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
-+	{ .compatible = "netgear,dgnd3700-v1", .data = &board_DGND3700v1_3800B, },
- 	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
diff --git a/target/linux/bcm63xx/patches-5.4/550-board_homehub2a.patch b/target/linux/bcm63xx/patches-5.4/550-board_homehub2a.patch
deleted file mode 100644
index dc81ea6b73..0000000000
--- a/target/linux/bcm63xx/patches-5.4/550-board_homehub2a.patch
+++ /dev/null
@@ -1,50 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1327,6 +1327,31 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_homehub2a = {
-+	.name = "HOMEHUB2A",
-+	.expected_cpu_id = 0x6358,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_enet1 = 1,
-+	.enet1 = {
-+		.has_phy = 1,
-+		.phy_id = 0,
-+		.force_speed_100 = 1,
-+		.force_duplex_full = 1,
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM4322,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+	},
-+};
-+
- static struct board_info __initdata board_HW520 = {
- 	.name = "HW6358GW_B",
- 	.expected_cpu_id = 0x6358,
-@@ -2066,6 +2091,7 @@ static const struct board_info __initcon
- 	&board_nb4_ser_r0,
- 	&board_nb4_fxc_r1,
- 	&board_ct6373_1,
-+	&board_homehub2a,
- 	&board_HW520,
- 	&board_HW553,
- 	&board_HW556_A,
-@@ -2173,6 +2199,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "sfr,neufbox-4-foxconn-r1", .data = &board_nb4_fxc_r1, },
- 	{ .compatible = "t-com,speedport-w-303v", .data = &board_spw303v, },
- 	{ .compatible = "telsey,cpva642", .data = &board_CPVA642, },
-+	{ .compatible = "bt,home-hub-2-a", .data = &board_homehub2a, },
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- #ifdef CONFIG_BCM63XX_CPU_6362
- 	{ .compatible = "sagem,fast-2504n", .data = &board_fast2504n, },
diff --git a/target/linux/bcm63xx/patches-5.4/551-board_HG655b.patch b/target/linux/bcm63xx/patches-5.4/551-board_HG655b.patch
deleted file mode 100644
index 24a7e08f83..0000000000
--- a/target/linux/bcm63xx/patches-5.4/551-board_HG655b.patch
+++ /dev/null
@@ -1,71 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1695,6 +1695,52 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_HG655b = {
-+	.name = "HW65x",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_caldata = 1,
-+	.caldata = {
-+		{
-+			.vendor = PCI_VENDOR_ID_RALINK,
-+			.caldata_offset = 0x7c0000,
-+			.slot = 1,
-+			.eeprom = "rt2x00.eeprom",
-+		},
-+	},
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "port1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "port2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "port3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "port4",
-+			},
-+		},
-+	},
-+};
-+
- static struct sprom_fixup __initdata vr3025u_fixups[] = {
- 	{ .offset = 97, .value = 0xfeb3 },
- 	{ .offset = 98, .value = 0x1618 },
-@@ -2108,6 +2154,7 @@ static const struct board_info __initcon
- 	&board_96368mvwg,
- 	&board_96368mvngr,
- 	&board_DGND3700v1_3800B,
-+	&board_HG655b,
- 	&board_P870HW51A_V2,
- 	&board_VR3025u,
- 	&board_VR3025un,
-@@ -2211,6 +2258,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
- 	{ .compatible = "comtrend,vr-3025un", .data = &board_VR3025un, },
- 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
-+	{ .compatible = "huawei,echolife-hg655b", .data = &board_HG655b, },
- 	{ .compatible = "netgear,dgnd3700-v1", .data = &board_DGND3700v1_3800B, },
- 	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
- #endif /* CONFIG_BCM63XX_CPU_6368 */
diff --git a/target/linux/bcm63xx/patches-5.4/551-board_bcm6345-dynalink-rta770bw-rta770w.patch b/target/linux/bcm63xx/patches-5.4/551-board_bcm6345-dynalink-rta770bw-rta770w.patch
new file mode 100644
index 0000000000..225c754924
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/551-board_bcm6345-dynalink-rta770bw-rta770w.patch
@@ -0,0 +1,39 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -894,6 +894,19 @@ static struct board_info __initdata boar
+ 	.name				= "96345GW2",
+ 	.expected_cpu_id		= 0x6345,
+ };
++
++static struct board_info __initdata board_rta770w = {
++	.name = "RTA770BW",
++	.expected_cpu_id = 0x6345,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6345 */
+ 
+ /*
+@@ -1224,6 +1237,7 @@ static const struct board_info __initcon
+ #endif /* CONFIG_BCM63XX_CPU_6338 */
+ #ifdef CONFIG_BCM63XX_CPU_6345
+ 	&board_96345gw2,
++	&board_rta770w,
+ #endif /* CONFIG_BCM63XX_CPU_6345 */
+ #ifdef CONFIG_BCM63XX_CPU_6348
+ 	&board_96348r,
+@@ -1277,6 +1291,8 @@ static struct of_device_id const bcm963x
+ #endif /* CONFIG_BCM63XX_CPU_6338 */
+ #ifdef CONFIG_BCM63XX_CPU_6345
+ 	{ .compatible = "brcm,bcm96345gw2", .data = &board_96345gw2, },
++	{ .compatible = "dynalink,rta770bw", .data = &board_rta770w, },
++	{ .compatible = "dynalink,rta770w", .data = &board_rta770w, },
+ #endif /* CONFIG_BCM63XX_CPU_6345 */
+ #ifdef CONFIG_BCM63XX_CPU_6348
+ 	{ .compatible = "belkin,f5d7633", .data = &board_96348gw_10, },
diff --git a/target/linux/bcm63xx/patches-5.4/552-board_fast2704n.patch b/target/linux/bcm63xx/patches-5.4/552-board_fast2704n.patch
deleted file mode 100644
index 5cf5cfafd2..0000000000
--- a/target/linux/bcm63xx/patches-5.4/552-board_fast2704n.patch
+++ /dev/null
@@ -1,68 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -204,6 +204,49 @@ static struct board_info __initdata boar
- 		.num_board_fixups = ARRAY_SIZE(dsl2751b_e1_fixups),
- 	},
- };
-+
-+static struct board_info __initdata board_FAST2704N = {
-+	.name = "F@ST2704N",
-+	.expected_cpu_id = 0x6318,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43217,
-+		.pci_bus = 1,
-+		.pci_dev = 0,
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- 
- /*
-@@ -2083,6 +2126,7 @@ static const struct board_info __initcon
- 	&board_96318ref,
- 	&board_96318ref_p300,
- 	&board_dsl_2751b_d1,
-+	&board_FAST2704N,
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	&board_96328avng,
-@@ -2176,6 +2220,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "brcm,bcm96318ref", .data = &board_96318ref, },
- 	{ .compatible = "brcm,bcm96318ref-p300", .data = &board_96318ref_p300, },
- 	{ .compatible = "d-link,dsl-275xb-d1", .data = &board_dsl_2751b_d1, },
-+	{ .compatible = "sagem,fast-2704n", .data = &board_FAST2704N, },
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	{ .compatible = "adb,a4001n", .data = &board_A4001N, },
diff --git a/target/linux/bcm63xx/patches-5.4/553-board_VR-3026e.patch b/target/linux/bcm63xx/patches-5.4/553-board_VR-3026e.patch
deleted file mode 100644
index 5b9973932b..0000000000
--- a/target/linux/bcm63xx/patches-5.4/553-board_VR-3026e.patch
+++ /dev/null
@@ -1,78 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1932,6 +1932,59 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct sprom_fixup __initdata vr3026e_fixups[] = {
-+	{ .offset = 97, .value = 0xfeb3 },
-+	{ .offset = 98, .value = 0x1618 },
-+	{ .offset = 99, .value = 0xfab0 },
-+	{ .offset = 113, .value = 0xfed1 },
-+	{ .offset = 114, .value = 0x1609 },
-+	{ .offset = 115, .value = 0xfad9 },
-+};
-+
-+static struct board_info __initdata board_VR3026e = {
-+	.name = "96368MT-1341N1",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "port1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "port2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "port3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "port4",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43222,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+		.board_fixups = vr3026e_fixups,
-+		.num_board_fixups = ARRAY_SIZE(vr3026e_fixups),
-+	},
-+};
-+
- static struct sprom_fixup __initdata wap5813n_fixups[] = {
- 	{ .offset = 97, .value = 0xfeed },
- 	{ .offset = 98, .value = 0x15d1 },
-@@ -2202,6 +2255,7 @@ static const struct board_info __initcon
- 	&board_P870HW51A_V2,
- 	&board_VR3025u,
- 	&board_VR3025un,
-+	&board_VR3026e,
- 	&board_WAP5813n,
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
-@@ -2302,6 +2356,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
- 	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
- 	{ .compatible = "comtrend,vr-3025un", .data = &board_VR3025un, },
-+	{ .compatible = "comtrend,vr-3026e", .data = &board_VR3026e, },
- 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
- 	{ .compatible = "huawei,echolife-hg655b", .data = &board_HG655b, },
- 	{ .compatible = "netgear,dgnd3700-v1", .data = &board_DGND3700v1_3800B, },
diff --git a/target/linux/bcm63xx/patches-5.4/554-board_R5010UNv2.patch b/target/linux/bcm63xx/patches-5.4/554-board_R5010UNv2.patch
deleted file mode 100644
index fb99620823..0000000000
--- a/target/linux/bcm63xx/patches-5.4/554-board_R5010UNv2.patch
+++ /dev/null
@@ -1,69 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -617,6 +617,50 @@ static struct board_info __initdata boar
- 		},
- 	},
- };
-+
-+static struct board_info __initdata board_R5010UNV2 = {
-+	.name = "96328ang",
-+	.expected_cpu_id = 0x6328,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43217,
-+		.pci_bus = 1,
-+		.pci_dev = 0,
-+	},
-+};
-+
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- 
- /*
-@@ -2190,6 +2234,7 @@ static const struct board_info __initcon
- 	&board_A4001N1,
- 	&board_dsl_274xb_f1,
- 	&board_FAST2704V2,
-+	&board_R5010UNV2,
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- #ifdef CONFIG_BCM63XX_CPU_6338
- 	&board_96338gw,
-@@ -2284,6 +2329,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "comtrend,ar-5381u", .data = &board_AR5381u, },
- 	{ .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, },
- 	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
-+	{ .compatible = "nucom,r5010un-v2", .data = &board_R5010UNV2, },
- 	{ .compatible = "sagem,fast-2704-v2", .data = &board_FAST2704V2, },
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- #ifdef CONFIG_BCM63XX_CPU_6338
diff --git a/target/linux/bcm63xx/patches-5.4/555-board_HG622.patch b/target/linux/bcm63xx/patches-5.4/555-board_HG622.patch
deleted file mode 100644
index 13b26fc35e..0000000000
--- a/target/linux/bcm63xx/patches-5.4/555-board_HG622.patch
+++ /dev/null
@@ -1,71 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1828,6 +1828,52 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_HG622 = {
-+	.name = "96368MVWG_hg622",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_caldata = 1,
-+	.caldata = {
-+		{
-+			.vendor = PCI_VENDOR_ID_RALINK,
-+			.caldata_offset = 0xfa0000,
-+			.slot = 1,
-+			.eeprom = "rt2x00.eeprom",
-+		},
-+	},
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "port1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "port2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "port3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "port4",
-+			},
-+		},
-+	},
-+};
-+
- static struct sprom_fixup __initdata vr3025u_fixups[] = {
- 	{ .offset = 97, .value = 0xfeb3 },
- 	{ .offset = 98, .value = 0x1618 },
-@@ -2296,6 +2342,7 @@ static const struct board_info __initcon
- 	&board_96368mvwg,
- 	&board_96368mvngr,
- 	&board_DGND3700v1_3800B,
-+	&board_HG622,
- 	&board_HG655b,
- 	&board_P870HW51A_V2,
- 	&board_VR3025u,
-@@ -2404,6 +2451,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "comtrend,vr-3025un", .data = &board_VR3025un, },
- 	{ .compatible = "comtrend,vr-3026e", .data = &board_VR3026e, },
- 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
-+	{ .compatible = "huawei,echolife-hg622", .data = &board_HG622, },
- 	{ .compatible = "huawei,echolife-hg655b", .data = &board_HG655b, },
- 	{ .compatible = "netgear,dgnd3700-v1", .data = &board_DGND3700v1_3800B, },
- 	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
diff --git a/target/linux/bcm63xx/patches-5.4/556-board_EVG2000.patch b/target/linux/bcm63xx/patches-5.4/556-board_EVG2000.patch
deleted file mode 100644
index c42cc61936..0000000000
--- a/target/linux/bcm63xx/patches-5.4/556-board_EVG2000.patch
+++ /dev/null
@@ -1,62 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1782,6 +1782,43 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct sprom_fixup __initdata EVG2000_fixups[] = {
-+  { .offset = 219, .value = 0xec08 },
-+};
-+
-+static struct board_info __initdata board_EVG2000 = {
-+	.name = "96369PVG",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[5] = {
-+				.used = 1,
-+				.phy_id = 0xff,
-+				.bypass_link = 1,
-+				.force_speed = 1000,
-+				.force_duplex_full = 1,
-+				.name = "RGMII",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM4322,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+		.board_fixups = EVG2000_fixups,
-+		.num_board_fixups = ARRAY_SIZE(EVG2000_fixups),
-+	},
-+};
-+
- static struct board_info __initdata board_HG655b = {
- 	.name = "HW65x",
- 	.expected_cpu_id = 0x6368,
-@@ -2342,6 +2379,7 @@ static const struct board_info __initcon
- 	&board_96368mvwg,
- 	&board_96368mvngr,
- 	&board_DGND3700v1_3800B,
-+	&board_EVG2000,
- 	&board_HG622,
- 	&board_HG655b,
- 	&board_P870HW51A_V2,
-@@ -2454,6 +2492,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "huawei,echolife-hg622", .data = &board_HG622, },
- 	{ .compatible = "huawei,echolife-hg655b", .data = &board_HG655b, },
- 	{ .compatible = "netgear,dgnd3700-v1", .data = &board_DGND3700v1_3800B, },
-+	{ .compatible = "netgear,evg2000", .data = &board_EVG2000, },
- 	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
diff --git a/target/linux/bcm63xx/patches-5.4/557-board_AV4202N.patch b/target/linux/bcm63xx/patches-5.4/557-board_AV4202N.patch
deleted file mode 100644
index 10db0ab410..0000000000
--- a/target/linux/bcm63xx/patches-5.4/557-board_AV4202N.patch
+++ /dev/null
@@ -1,68 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1682,6 +1682,49 @@ static struct board_info __initdata boar
-  * known 6368 boards
-  */
- #ifdef CONFIG_BCM63XX_CPU_6368
-+static struct board_info __initdata board_AV4202N = {
-+	.name = "96368_Swiss_S1",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "port1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "port2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "port3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "port4",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM4322,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+	},
-+};
-+
- static struct board_info __initdata board_96368mvwg = {
- 	.name = "96368MVWG",
- 	.expected_cpu_id = 0x6368,
-@@ -2376,6 +2419,7 @@ static const struct board_info __initcon
- 	&board_fast2504n,
- #endif /* CONFIG_BCM63XX_CPU_6362 */
- #ifdef CONFIG_BCM63XX_CPU_6368
-+	&board_AV4202N,
- 	&board_96368mvwg,
- 	&board_96368mvngr,
- 	&board_DGND3700v1_3800B,
-@@ -2483,6 +2527,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
- #endif /* CONFIG_BCM63XX_CPU_6362 */
- #ifdef CONFIG_BCM63XX_CPU_6368
-+	{ .compatible = "adb,av4202n", .data = &board_AV4202N, },
- 	{ .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
- 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
- 	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
diff --git a/target/linux/bcm63xx/patches-5.4/558-board_VH4032N.patch b/target/linux/bcm63xx/patches-5.4/558-board_VH4032N.patch
deleted file mode 100644
index d5be26bc18..0000000000
--- a/target/linux/bcm63xx/patches-5.4/558-board_VH4032N.patch
+++ /dev/null
@@ -1,125 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2155,6 +2155,106 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct sprom_fixup __initdata vh4032n_fixups[] = {
-+	{ .offset = 2, .value = 0x04d2 },
-+	{ .offset = 4, .value = 0x4350 },
-+	{ .offset = 65, .value = 0x1300 },
-+	{ .offset = 68, .value = 0x0402 },
-+	{ .offset = 70, .value = 0x0090 },
-+	{ .offset = 71, .value = 0x4c19 },
-+	{ .offset = 72, .value = 0x2345 },
-+	{ .offset = 87, .value = 0x0315 },
-+	{ .offset = 88, .value = 0x0315 },
-+	{ .offset = 96, .value = 0x2048 },
-+	{ .offset = 97, .value = 0xfed7 },
-+	{ .offset = 98, .value = 0x15a6 },
-+	{ .offset = 99, .value = 0xfaee },
-+	{ .offset = 100, .value = 0x3e3a },
-+	{ .offset = 101, .value = 0x3a36 },
-+	{ .offset = 102, .value = 0xff7f },
-+	{ .offset = 103, .value = 0x11b9 },
-+	{ .offset = 104, .value = 0xfc53 },
-+	{ .offset = 105, .value = 0xffe6 },
-+	{ .offset = 106, .value = 0xfdd2 },
-+	{ .offset = 107, .value = 0xfe49 },
-+	{ .offset = 108, .value = 0xff6a },
-+	{ .offset = 109, .value = 0x136e },
-+	{ .offset = 110, .value = 0xfbed },
-+	{ .offset = 111, .value = 0x0000 },
-+	{ .offset = 112, .value = 0x2048 },
-+	{ .offset = 113, .value = 0xfee2 },
-+	{ .offset = 114, .value = 0x15e5 },
-+	{ .offset = 115, .value = 0xfaed },
-+	{ .offset = 116, .value = 0x3e3a },
-+	{ .offset = 117, .value = 0x3a36 },
-+	{ .offset = 118, .value = 0xffc8 },
-+	{ .offset = 119, .value = 0x12b8 },
-+	{ .offset = 120, .value = 0xfca1 },
-+	{ .offset = 121, .value = 0xff9b },
-+	{ .offset = 122, .value = 0x122a },
-+	{ .offset = 123, .value = 0xfcc8 },
-+	{ .offset = 124, .value = 0xff95 },
-+	{ .offset = 125, .value = 0x146b },
-+	{ .offset = 126, .value = 0xfbba },
-+	{ .offset = 127, .value = 0x0000 },
-+	{ .offset = 161, .value = 0x0000 },
-+	{ .offset = 162, .value = 0x0000 },
-+	{ .offset = 169, .value = 0x0000 },
-+	{ .offset = 170, .value = 0x0000 },
-+	{ .offset = 171, .value = 0x0000 },
-+	{ .offset = 172, .value = 0x0000 },
-+	{ .offset = 173, .value = 0x0000 },
-+	{ .offset = 174, .value = 0x0000 },
-+	{ .offset = 175, .value = 0x0000 },
-+	{ .offset = 176, .value = 0x0000 },
-+	{ .offset = 219, .value = 0x1108 },
-+};
-+
-+static struct board_info __initdata board_VH4032N = {
-+	.name = "VH4032N",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "LAN4",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "LAN3",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "LAN2",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "LAN1",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43222,
-+		.pci_bus = 0,
-+		.pci_dev = 1,
-+		.board_fixups = vh4032n_fixups,
-+		.num_board_fixups = ARRAY_SIZE(vh4032n_fixups),
-+	},
-+};
-+
- static struct sprom_fixup __initdata wap5813n_fixups[] = {
- 	{ .offset = 97, .value = 0xfeed },
- 	{ .offset = 98, .value = 0x15d1 },
-@@ -2427,6 +2527,7 @@ static const struct board_info __initcon
- 	&board_HG622,
- 	&board_HG655b,
- 	&board_P870HW51A_V2,
-+	&board_VH4032N,
- 	&board_VR3025u,
- 	&board_VR3025un,
- 	&board_VR3026e,
-@@ -2538,6 +2639,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "huawei,echolife-hg655b", .data = &board_HG655b, },
- 	{ .compatible = "netgear,dgnd3700-v1", .data = &board_DGND3700v1_3800B, },
- 	{ .compatible = "netgear,evg2000", .data = &board_EVG2000, },
-+	{ .compatible = "observa,vh4032n", .data = &board_VH4032N, },
- 	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
- #endif /* CONFIG_BCM63XX_CPU_6368 */
- #ifdef CONFIG_BCM63XX_CPU_63268
diff --git a/target/linux/bcm63xx/patches-5.4/559-board_R1000H.patch b/target/linux/bcm63xx/patches-5.4/559-board_R1000H.patch
deleted file mode 100644
index 2de40e7cb7..0000000000
--- a/target/linux/bcm63xx/patches-5.4/559-board_R1000H.patch
+++ /dev/null
@@ -1,48 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2005,6 +2005,29 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_R1000H = {
-+	.name = "R1000H",
-+	.expected_cpu_id = 0x6368,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[5] = {
-+				.used = 1,
-+				.phy_id = 0xff,
-+				.bypass_link = 1,
-+				.force_speed = 1000,
-+				.force_duplex_full = 1,
-+				.name = "RGMII",
-+			},
-+		},
-+	},
-+};
-+
- static struct board_info __initdata board_VR3025u = {
- 	.name = "96368M-1541N",
- 	.expected_cpu_id = 0x6368,
-@@ -2527,6 +2550,7 @@ static const struct board_info __initcon
- 	&board_HG622,
- 	&board_HG655b,
- 	&board_P870HW51A_V2,
-+	&board_R1000H,
- 	&board_VH4032N,
- 	&board_VR3025u,
- 	&board_VR3025un,
-@@ -2628,6 +2652,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
- #endif /* CONFIG_BCM63XX_CPU_6362 */
- #ifdef CONFIG_BCM63XX_CPU_6368
-+	{ .compatible = "actiontec,r1000h", .data = &board_R1000H, },
- 	{ .compatible = "adb,av4202n", .data = &board_AV4202N, },
- 	{ .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
- 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
diff --git a/target/linux/bcm63xx/patches-5.4/560-board_AR-5315u.patch b/target/linux/bcm63xx/patches-5.4/560-board_AR-5315u.patch
deleted file mode 100644
index 38ef022e2a..0000000000
--- a/target/linux/bcm63xx/patches-5.4/560-board_AR-5315u.patch
+++ /dev/null
@@ -1,84 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -139,6 +139,65 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct sprom_fixup __initdata ar5315u_fixups[] = {
-+	{ .offset = 6, .value = 0x1c00 },
-+	{ .offset = 65, .value = 0x1255 },
-+	{ .offset = 97, .value = 0xfe55 },
-+	{ .offset = 98, .value = 0x171d },
-+	{ .offset = 99, .value = 0xfa42 },
-+	{ .offset = 113, .value = 0xfeb7 },
-+	{ .offset = 114, .value = 0x18cd },
-+	{ .offset = 115, .value = 0xfa4f },
-+	{ .offset = 162, .value = 0x6444 },
-+	{ .offset = 170, .value = 0x6444 },
-+	{ .offset = 172, .value = 0x6444 },
-+};
-+
-+static struct board_info __initdata board_AR5315u = {
-+	.name = "96318A-1441N1",
-+	.expected_cpu_id = 0x6318,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "LAN4",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "LAN3",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "LAN2",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "LAN1",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43217,
-+		.pci_bus = 1,
-+		.pci_dev = 0,
-+		.board_fixups = ar5315u_fixups,
-+		.num_board_fixups = ARRAY_SIZE(ar5315u_fixups),
-+	},
-+};
-+
- static struct sprom_fixup __initdata dsl2751b_e1_fixups[] = {
- 	{ .offset = 96, .value = 0x2046 },
- 	{ .offset = 97, .value = 0xfe9d },
-@@ -2471,6 +2530,7 @@ static const struct board_info __initcon
- #ifdef CONFIG_BCM63XX_CPU_6318
- 	&board_96318ref,
- 	&board_96318ref_p300,
-+	&board_AR5315u,
- 	&board_dsl_2751b_d1,
- 	&board_FAST2704N,
- #endif /* CONFIG_BCM63XX_CPU_6318 */
-@@ -2572,6 +2632,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_6318
- 	{ .compatible = "brcm,bcm96318ref", .data = &board_96318ref, },
- 	{ .compatible = "brcm,bcm96318ref-p300", .data = &board_96318ref_p300, },
-+	{ .compatible = "comtrend,ar-5315u", .data = &board_AR5315u, },
- 	{ .compatible = "d-link,dsl-275xb-d1", .data = &board_dsl_2751b_d1, },
- 	{ .compatible = "sagem,fast-2704n", .data = &board_FAST2704N, },
- #endif /* CONFIG_BCM63XX_CPU_6318 */
diff --git a/target/linux/bcm63xx/patches-5.4/561-board-bcm6348-D4PW.patch b/target/linux/bcm63xx/patches-5.4/561-board-bcm6348-D4PW.patch
new file mode 100644
index 0000000000..62e8f381c1
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/561-board-bcm6348-D4PW.patch
@@ -0,0 +1,40 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1093,6 +1093,21 @@ static struct board_info __initdata boar
+ 
+ 	.has_ohci0 = 1,
+ };
++
++static struct board_info __initdata board_96348_D4PW = {
++	.name = "D-4P-W",
++	.expected_cpu_id = 0x6348,
++
++	.has_pci = 1,
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ 
+ /*
+@@ -1248,6 +1263,7 @@ static const struct board_info __initcon
+ 	&board_DV201AMR,
+ 	&board_96348gw_a,
+ 	&board_rta1025w_16,
++	&board_96348_D4PW,
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ #ifdef CONFIG_BCM63XX_CPU_6358
+ 	&board_96358vw,
+@@ -1300,6 +1316,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "brcm,bcm96348gw-10", .data = &board_96348gw_10, },
+ 	{ .compatible = "brcm,bcm96348gw-11", .data = &board_96348gw_11, },
+ 	{ .compatible = "brcm,bcm96348gw-a", .data = &board_96348gw_a, },
++	{ .compatible = "d-link,dsl-2640b-b", .data = &board_96348_D4PW, },
+ 	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
+ 	{ .compatible = "dynalink,rta1025w", .data = &board_rta1025w_16, },
+ 	{ .compatible = "netgear,dg834gt-pn", .data = &board_96348gw_10, },
diff --git a/target/linux/bcm63xx/patches-5.4/561-board_AD1018.patch b/target/linux/bcm63xx/patches-5.4/561-board_AD1018.patch
deleted file mode 100644
index ea972ff451..0000000000
--- a/target/linux/bcm63xx/patches-5.4/561-board_AD1018.patch
+++ /dev/null
@@ -1,91 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -352,6 +352,71 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct sprom_fixup __initdata ad1018_fixups[] = {
-+	{ .offset = 6, .value = 0x1c00 },
-+	{ .offset = 65, .value = 0x1256 },
-+	{ .offset = 96, .value = 0x2046 },
-+	{ .offset = 97, .value = 0xfe69 },
-+	{ .offset = 98, .value = 0x1726 },
-+	{ .offset = 99, .value = 0xfa5c },
-+	{ .offset = 112, .value = 0x2046 },
-+	{ .offset = 113, .value = 0xfea8 },
-+	{ .offset = 114, .value = 0x1978 },
-+	{ .offset = 115, .value = 0xfa26 },
-+	{ .offset = 161, .value = 0x2222 },
-+	{ .offset = 169, .value = 0x2222 },
-+	{ .offset = 171, .value = 0x2222 },
-+	{ .offset = 173, .value = 0x2222 },
-+	{ .offset = 174, .value = 0x4444 },
-+	{ .offset = 175, .value = 0x2222 },
-+	{ .offset = 176, .value = 0x4444 },
-+};
-+
-+static struct board_info __initdata board_AD1018 = {
-+	.name = "96328avngr",
-+	.expected_cpu_id = 0x6328,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "FIBRE",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "LAN3",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "LAN2",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "LAN1",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43217,
-+		.pci_bus = 1,
-+		.pci_dev = 0,
-+		.board_fixups = ad1018_fixups,
-+		.num_board_fixups = ARRAY_SIZE(ad1018_fixups),
-+	},
-+};
-+
- static struct sprom_fixup __initdata ar5381u_fixups[] = {
- 	{ .offset = 97, .value = 0xfee5 },
- 	{ .offset = 98, .value = 0x157c },
-@@ -2536,6 +2601,7 @@ static const struct board_info __initcon
- #endif /* CONFIG_BCM63XX_CPU_6318 */
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	&board_96328avng,
-+	&board_AD1018,
- 	&board_AR5381u,
- 	&board_AR5387un,
- 	&board_963281TAN,
-@@ -2646,6 +2712,8 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
- 	{ .compatible = "nucom,r5010un-v2", .data = &board_R5010UNV2, },
- 	{ .compatible = "sagem,fast-2704-v2", .data = &board_FAST2704V2, },
-+	{ .compatible = "sercomm,ad1018", .data = &board_AD1018, },
-+	{ .compatible = "sercomm,ad1018-nor", .data = &board_AD1018, },
- #endif /* CONFIG_BCM63XX_CPU_6328 */
- #ifdef CONFIG_BCM63XX_CPU_6338
- 	{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
diff --git a/target/linux/bcm63xx/patches-5.4/562-board_bcm6348-t-com-speedport-w-500v.patch b/target/linux/bcm63xx/patches-5.4/562-board_bcm6348-t-com-speedport-w-500v.patch
new file mode 100644
index 0000000000..a20047d3d3
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/562-board_bcm6348-t-com-speedport-w-500v.patch
@@ -0,0 +1,55 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1108,6 +1108,36 @@ static struct board_info __initdata boar
+ 		.force_duplex_full = 1,
+ 	},
+ };
++
++static struct sprom_fixup __initdata spw500v_fixups[] = {
++	{ .offset = 46, .value = 0x3046 },
++	{ .offset = 47, .value = 0x15a7 },
++	{ .offset = 48, .value = 0xfa89 },
++	{ .offset = 49, .value = 0xfe79 },
++	{ .offset = 57, .value = 0x6a49 },
++};
++
++static struct board_info __initdata board_spw500v = {
++	.name = "SPW500V",
++	.expected_cpu_id = 0x6348,
++
++	.has_pci = 1,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.use_internal_phy = 1,
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM4318,
++		.pci_bus = 0,
++		.pci_dev = 1,
++		.board_fixups = spw500v_fixups,
++		.num_board_fixups = ARRAY_SIZE(spw500v_fixups),
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ 
+ /*
+@@ -1264,6 +1294,7 @@ static const struct board_info __initcon
+ 	&board_96348gw_a,
+ 	&board_rta1025w_16,
+ 	&board_96348_D4PW,
++	&board_spw500v,
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ #ifdef CONFIG_BCM63XX_CPU_6358
+ 	&board_96358vw,
+@@ -1321,6 +1352,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "dynalink,rta1025w", .data = &board_rta1025w_16, },
+ 	{ .compatible = "netgear,dg834gt-pn", .data = &board_96348gw_10, },
+ 	{ .compatible = "sagem,fast-2404", .data = &board_FAST2404, },
++	{ .compatible = "t-com,speedport-w-500v", .data = &board_spw500v, },
+ 	{ .compatible = "tp-link,td-w8900gb", .data = &board_96348gw_11, },
+ 	{ .compatible = "usrobotics,usr9108", .data = &board_96348gw_a, },
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
diff --git a/target/linux/bcm63xx/patches-5.4/562-board_sr102.patch b/target/linux/bcm63xx/patches-5.4/562-board_sr102.patch
deleted file mode 100644
index 0912c41dd2..0000000000
--- a/target/linux/bcm63xx/patches-5.4/562-board_sr102.patch
+++ /dev/null
@@ -1,61 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2583,6 +2583,42 @@ static struct board_info __initdata boar
- 		},
- 	},
- };
-+
-+static struct board_info __initdata board_BSKYB_63168 = {
-+	.name = "BSKYB_63168",
-+	.expected_cpu_id = 0x63268,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_63268 */
- 
- /*
-@@ -2687,6 +2723,7 @@ static const struct board_info __initcon
- 	&board_963268bu_p300,
- 	&board_963269bhr,
- 	&board_vw6339gu,
-+	&board_BSKYB_63168,
- #endif /* CONFIG_BCM63XX_CPU_63268 */
- };
- 
-@@ -2800,6 +2837,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "brcm,bcm963268bu-p300", .data = &board_963268bu_p300, },
- 	{ .compatible = "brcm,bcm963269bhr", .data = &board_963269bhr, },
- 	{ .compatible = "inteno,vg50", .data = &board_vw6339gu, },
-+	{ .compatible = "sky,sr102", .data = &board_BSKYB_63168, },
- #endif /* CONFIG_BCM63XX_CPU_63268 */
- #endif /* CONFIG_OF */
- 	{ },
diff --git a/target/linux/bcm63xx/patches-5.4/563-board-VR-3032u.patch b/target/linux/bcm63xx/patches-5.4/563-board-VR-3032u.patch
deleted file mode 100644
index 8ac3f5051c..0000000000
--- a/target/linux/bcm63xx/patches-5.4/563-board-VR-3032u.patch
+++ /dev/null
@@ -1,60 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2542,6 +2542,41 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_VR3032u = {
-+	.name = "963168M-1841N1",
-+	.expected_cpu_id = 0x63268,
-+
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "LAN2",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "LAN3",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "LAN4",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "LAN1",
-+			},
-+		},
-+	},
-+};
-+
- static struct board_info __initdata board_vw6339gu = {
- 	.name = "VW6339GU",
- 	.expected_cpu_id = 0x63268,
-@@ -2722,6 +2757,7 @@ static const struct board_info __initcon
- #ifdef CONFIG_BCM63XX_CPU_63268
- 	&board_963268bu_p300,
- 	&board_963269bhr,
-+	&board_VR3032u,
- 	&board_vw6339gu,
- 	&board_BSKYB_63168,
- #endif /* CONFIG_BCM63XX_CPU_63268 */
-@@ -2836,6 +2872,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_63268
- 	{ .compatible = "brcm,bcm963268bu-p300", .data = &board_963268bu_p300, },
- 	{ .compatible = "brcm,bcm963269bhr", .data = &board_963269bhr, },
-+	{ .compatible = "comtrend,vr-3032u", .data = &board_VR3032u, },
- 	{ .compatible = "inteno,vg50", .data = &board_vw6339gu, },
- 	{ .compatible = "sky,sr102", .data = &board_BSKYB_63168, },
- #endif /* CONFIG_BCM63XX_CPU_63268 */
diff --git a/target/linux/bcm63xx/patches-5.4/563-board_bcm6348-tecom-gw6000-gw6200.patch b/target/linux/bcm63xx/patches-5.4/563-board_bcm6348-tecom-gw6000-gw6200.patch
new file mode 100644
index 0000000000..3d9c000803
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/563-board_bcm6348-tecom-gw6000-gw6200.patch
@@ -0,0 +1,67 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1002,6 +1002,46 @@ static struct board_info __initdata boar
+ 	.has_ohci0 = 1,
+ };
+ 
++static struct board_info __initdata board_gw6200 = {
++	.name = "GW6200",
++	.expected_cpu_id = 0x6348,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.use_internal_phy = 1,
++	},
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
++
++static struct board_info __initdata board_gw6000 = {
++	.name = "GW6000",
++	.expected_cpu_id = 0x6348,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.use_internal_phy = 1,
++	},
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
++
+ static struct board_info __initdata board_FAST2404 = {
+ 	.name				= "F@ST2404",
+ 	.expected_cpu_id		= 0x6348,
+@@ -1287,6 +1327,8 @@ static const struct board_info __initcon
+ #ifdef CONFIG_BCM63XX_CPU_6348
+ 	&board_96348r,
+ 	&board_96348gw,
++	&board_gw6000,
++	&board_gw6200,
+ 	&board_96348gw_10,
+ 	&board_96348gw_11,
+ 	&board_FAST2404,
+@@ -1353,6 +1395,8 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "netgear,dg834gt-pn", .data = &board_96348gw_10, },
+ 	{ .compatible = "sagem,fast-2404", .data = &board_FAST2404, },
+ 	{ .compatible = "t-com,speedport-w-500v", .data = &board_spw500v, },
++	{ .compatible = "tecom,gw6000", .data = &board_gw6000, },
++	{ .compatible = "tecom,gw6200", .data = &board_gw6200, },
+ 	{ .compatible = "tp-link,td-w8900gb", .data = &board_96348gw_11, },
+ 	{ .compatible = "usrobotics,usr9108", .data = &board_96348gw_a, },
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
diff --git a/target/linux/bcm63xx/patches-5.4/564-board-DGND3700v2.patch b/target/linux/bcm63xx/patches-5.4/564-board-DGND3700v2.patch
deleted file mode 100644
index 559f00c87a..0000000000
--- a/target/linux/bcm63xx/patches-5.4/564-board-DGND3700v2.patch
+++ /dev/null
@@ -1,49 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1770,6 +1770,30 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_dgnd3700v2 = {
-+	.name = "96362ADVN2xh",
-+	.expected_cpu_id = 0x6362,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[4] = {
-+				.used = 1,
-+				.phy_id = 0xff,
-+				.bypass_link = 1,
-+				.force_speed = 1000,
-+				.force_duplex_full = 1,
-+				.name = "RGMII",
-+			},
-+		},
-+	},
-+};
-+
- static struct board_info __initdata board_fast2504n = {
- 	.name = "F@ST2504n",
- 	.expected_cpu_id = 0x6362,
-@@ -2736,6 +2760,7 @@ static const struct board_info __initcon
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- #ifdef CONFIG_BCM63XX_CPU_6362
- 	&board_nb6,
-+	&board_dgnd3700v2,
- 	&board_fast2504n,
- #endif /* CONFIG_BCM63XX_CPU_6362 */
- #ifdef CONFIG_BCM63XX_CPU_6368
-@@ -2850,6 +2875,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "bt,home-hub-2-a", .data = &board_homehub2a, },
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- #ifdef CONFIG_BCM63XX_CPU_6362
-+	{ .compatible = "netgear,dgnd3700-v2", .data = &board_dgnd3700v2, },
- 	{ .compatible = "sagem,fast-2504n", .data = &board_fast2504n, },
- 	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
- #endif /* CONFIG_BCM63XX_CPU_6362 */
diff --git a/target/linux/bcm63xx/patches-5.4/564-board-bcm6348-telsey-magic.patch b/target/linux/bcm63xx/patches-5.4/564-board-bcm6348-telsey-magic.patch
new file mode 100644
index 0000000000..ba9ee0b4d4
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/564-board-bcm6348-telsey-magic.patch
@@ -0,0 +1,49 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1178,6 +1178,30 @@ static struct board_info __initdata boar
+ 		.num_board_fixups = ARRAY_SIZE(spw500v_fixups),
+ 	},
+ };
++
++static struct board_info __initdata board_96348sv = {
++	.name = "MAGIC",
++	.expected_cpu_id = 0x6348,
++
++	.has_pccard = 1,
++	.has_pci = 1,
++	.has_ohci0 = 1,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.use_internal_phy = 1,
++	},
++
++	.has_enet1 = 1,
++	.enet1 = {
++		/* it has BP_ENET_EXTERNAL_PHY */
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ 
+ /*
+@@ -1337,6 +1361,7 @@ static const struct board_info __initcon
+ 	&board_rta1025w_16,
+ 	&board_96348_D4PW,
+ 	&board_spw500v,
++	&board_96348sv,
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ #ifdef CONFIG_BCM63XX_CPU_6358
+ 	&board_96358vw,
+@@ -1397,6 +1422,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "t-com,speedport-w-500v", .data = &board_spw500v, },
+ 	{ .compatible = "tecom,gw6000", .data = &board_gw6000, },
+ 	{ .compatible = "tecom,gw6200", .data = &board_gw6200, },
++	{ .compatible = "telsey,magic", .data = &board_96348sv, },
+ 	{ .compatible = "tp-link,td-w8900gb", .data = &board_96348gw_11, },
+ 	{ .compatible = "usrobotics,usr9108", .data = &board_96348gw_a, },
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
diff --git a/target/linux/bcm63xx/patches-5.4/565-board-VG-8050.patch b/target/linux/bcm63xx/patches-5.4/565-board-VG-8050.patch
deleted file mode 100644
index fa0cd6aef0..0000000000
--- a/target/linux/bcm63xx/patches-5.4/565-board-VG-8050.patch
+++ /dev/null
@@ -1,50 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2566,6 +2566,31 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_VG8050 = {
-+	.name = "963169P-1861N5",
-+	.expected_cpu_id = 0x63268,
-+
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 2,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[6] = {
-+				.used = 1,
-+				.phy_id = 0xff,
-+				.bypass_link = 1,
-+				.force_speed = 1000,
-+				.force_duplex_full = 1,
-+				.mii_override = 1,
-+				.timing_sel = 1,
-+				.name = "RGMII",
-+			},
-+		},
-+	},
-+};
-+
- static struct board_info __initdata board_VR3032u = {
- 	.name = "963168M-1841N1",
- 	.expected_cpu_id = 0x63268,
-@@ -2782,6 +2807,7 @@ static const struct board_info __initcon
- #ifdef CONFIG_BCM63XX_CPU_63268
- 	&board_963268bu_p300,
- 	&board_963269bhr,
-+	&board_VG8050,
- 	&board_VR3032u,
- 	&board_vw6339gu,
- 	&board_BSKYB_63168,
-@@ -2898,6 +2924,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_63268
- 	{ .compatible = "brcm,bcm963268bu-p300", .data = &board_963268bu_p300, },
- 	{ .compatible = "brcm,bcm963269bhr", .data = &board_963269bhr, },
-+	{ .compatible = "comtrend,vg-8050", .data = &board_VG8050, },
- 	{ .compatible = "comtrend,vr-3032u", .data = &board_VR3032u, },
- 	{ .compatible = "inteno,vg50", .data = &board_vw6339gu, },
- 	{ .compatible = "sky,sr102", .data = &board_BSKYB_63168, },
diff --git a/target/linux/bcm63xx/patches-5.4/565-board_bcm6348-bt-voyager-2500v-bb.patch b/target/linux/bcm63xx/patches-5.4/565-board_bcm6348-bt-voyager-2500v-bb.patch
new file mode 100644
index 0000000000..6536e17798
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/565-board_bcm6348-bt-voyager-2500v-bb.patch
@@ -0,0 +1,93 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1202,6 +1202,27 @@ static struct board_info __initdata boar
+ 		.force_duplex_full = 1,
+ 	},
+ };
++
++static struct board_info __initdata board_V2500V_BB = {
++	.name = "V2500V_BB",
++	.expected_cpu_id = 0x6348,
++
++	.has_pci = 1,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.use_internal_phy = 1,
++	},
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ 
+ /*
+@@ -1362,6 +1383,7 @@ static const struct board_info __initcon
+ 	&board_96348_D4PW,
+ 	&board_spw500v,
+ 	&board_96348sv,
++	&board_V2500V_BB,
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ #ifdef CONFIG_BCM63XX_CPU_6358
+ 	&board_96358vw,
+@@ -1414,6 +1436,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "brcm,bcm96348gw-10", .data = &board_96348gw_10, },
+ 	{ .compatible = "brcm,bcm96348gw-11", .data = &board_96348gw_11, },
+ 	{ .compatible = "brcm,bcm96348gw-a", .data = &board_96348gw_a, },
++	{ .compatible = "bt,voyager-2500v-bb", .data = &board_V2500V_BB, },
+ 	{ .compatible = "d-link,dsl-2640b-b", .data = &board_96348_D4PW, },
+ 	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
+ 	{ .compatible = "dynalink,rta1025w", .data = &board_rta1025w_16, },
+@@ -1469,6 +1492,22 @@ void __init board_bcm963xx_init(void)
+ 		val &= MPI_CSBASE_BASE_MASK;
+ 	}
+ 	boot_addr = (u8 *)KSEG1ADDR(val);
++	pr_info("Boot address 0x%08x\n",(unsigned int)boot_addr);
++
++	/* BT Voyager 2500V (RTA1046VW PCB) has 8 Meg flash used as two */
++	/* banks of 4 Meg. The byte at 0xBF800000 identifies the back to use.*/
++	/* Loading firmware from the CFE Prompt always loads to Bank 0 */
++	/* Do an early check of CFE and then select bank 0 */
++
++	if (boot_addr == (u8 *)0xbf800000) {
++		u8 *tmp_boot_addr = (u8*)0xbfc00000;
++
++		bcm63xx_nvram_init(tmp_boot_addr + BCM963XX_NVRAM_OFFSET);
++		if (!strcmp(bcm63xx_nvram_get_name(), "V2500V_BB")) {
++			pr_info("V2500V: nvram bank 0\n");
++			boot_addr = tmp_boot_addr;
++		}
++	}
+ 
+ 	/* dump cfe version */
+ 	cfe = boot_addr + BCM963XX_CFE_VERSION_OFFSET;
+--- a/arch/mips/bcm63xx/dev-flash.c
++++ b/arch/mips/bcm63xx/dev-flash.c
+@@ -21,6 +21,7 @@
+ #include <linux/spi/spi.h>
+ #include <linux/spi/flash.h>
+ 
++#include <bcm63xx_board.h>
+ #include <bcm63xx_cpu.h>
+ #include <bcm63xx_dev_flash.h>
+ #include <bcm63xx_regs.h>
+@@ -256,6 +257,13 @@ int __init bcm63xx_flash_register(void)
+ 			val = bcm_mpi_readl(MPI_CSBASE_REG(0));
+ 			val &= MPI_CSBASE_BASE_MASK;
+ 
++			/* BT Voyager 2500V has 8 Meg flash in two 4 Meg banks */
++			/* Loading from CFE always uses Bank 0 */
++			if (!strcmp(board_get_name(), "V2500V_BB")) {
++				pr_info("V2500V: Start in Bank 0\n");
++				val = val + 0x400000; // Select Bank 0 start address
++			}
++
+ 			mtd_resources[0].start = val;
+ 			mtd_resources[0].end = 0x1FFFFFFF;
+ 		}
diff --git a/target/linux/bcm63xx/patches-5.4/566-board-HG253s-v2.patch b/target/linux/bcm63xx/patches-5.4/566-board-HG253s-v2.patch
deleted file mode 100644
index 10414fe41c..0000000000
--- a/target/linux/bcm63xx/patches-5.4/566-board-HG253s-v2.patch
+++ /dev/null
@@ -1,56 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1824,6 +1824,37 @@ static struct board_info __initdata boar
- 		},
- 	},
- };
-+
-+static struct board_info __initdata board_hg253s_v2 = {
-+	.name = "hg253s",
-+	.expected_cpu_id = 0x6362,
-+
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[4] = {
-+				.used = 1,
-+				.phy_id = 0xff,
-+				.bypass_link = 1,
-+				.force_speed = 1000,
-+				.force_duplex_full = 1,
-+				.timing_sel = 1,
-+				.name = "RGMII",
-+			},
-+
-+			[5] = {
-+				.used = 1,
-+				.phy_id = 24,
-+				.timing_sel = 1,
-+				.name = "WAN",
-+			},
-+		},
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_6362 */
- 
- /*
-@@ -2787,6 +2818,7 @@ static const struct board_info __initcon
- 	&board_nb6,
- 	&board_dgnd3700v2,
- 	&board_fast2504n,
-+	&board_hg253s_v2,
- #endif /* CONFIG_BCM63XX_CPU_6362 */
- #ifdef CONFIG_BCM63XX_CPU_6368
- 	&board_AV4202N,
-@@ -2901,6 +2933,7 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "bt,home-hub-2-a", .data = &board_homehub2a, },
- #endif /* CONFIG_BCM63XX_CPU_6358 */
- #ifdef CONFIG_BCM63XX_CPU_6362
-+	{ .compatible = "huawei,hg253s-v2", .data = &board_hg253s_v2, },
- 	{ .compatible = "netgear,dgnd3700-v2", .data = &board_dgnd3700v2, },
- 	{ .compatible = "sagem,fast-2504n", .data = &board_fast2504n, },
- 	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
diff --git a/target/linux/bcm63xx/patches-5.4/566-board_bcm6348-bt-voyager-2110.patch b/target/linux/bcm63xx/patches-5.4/566-board_bcm6348-bt-voyager-2110.patch
new file mode 100644
index 0000000000..c51b28854b
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/566-board_bcm6348-bt-voyager-2110.patch
@@ -0,0 +1,41 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -979,6 +979,22 @@ static struct board_info __initdata boar
+ 	.has_ehci0 = 1,
+ };
+ 
++/* BT Voyager 2110 */
++static struct board_info __initdata board_V2110 = {
++	.name = "V2110",
++	.expected_cpu_id = 0x6348,
++
++	.has_pci = 1,
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
++
+ static struct board_info __initdata board_96348gw = {
+ 	.name				= "96348GW",
+ 	.expected_cpu_id		= 0x6348,
+@@ -1384,6 +1400,7 @@ static const struct board_info __initcon
+ 	&board_spw500v,
+ 	&board_96348sv,
+ 	&board_V2500V_BB,
++	&board_V2110,
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ #ifdef CONFIG_BCM63XX_CPU_6358
+ 	&board_96358vw,
+@@ -1436,6 +1453,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "brcm,bcm96348gw-10", .data = &board_96348gw_10, },
+ 	{ .compatible = "brcm,bcm96348gw-11", .data = &board_96348gw_11, },
+ 	{ .compatible = "brcm,bcm96348gw-a", .data = &board_96348gw_a, },
++	{ .compatible = "bt,voyager-2110", .data = &board_V2110, },
+ 	{ .compatible = "bt,voyager-2500v-bb", .data = &board_V2500V_BB, },
+ 	{ .compatible = "d-link,dsl-2640b-b", .data = &board_96348_D4PW, },
+ 	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
diff --git a/target/linux/bcm63xx/patches-5.4/567-MIPS-BCM63XX-add-inventel-Livebox-support.patch b/target/linux/bcm63xx/patches-5.4/567-MIPS-BCM63XX-add-inventel-Livebox-support.patch
new file mode 100644
index 0000000000..0035cee7e9
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/567-MIPS-BCM63XX-add-inventel-Livebox-support.patch
@@ -0,0 +1,214 @@
+From e796582b499f0ba6acaa1ac3a10c09cceaab7702 Mon Sep 17 00:00:00 2001
+From: Jonas Gorski <jogo@openwrt.org>
+Date: Sun, 9 Mar 2014 04:55:52 +0100
+Subject: [PATCH] MIPS: BCM63XX: add inventel Livebox support
+
+---
+ arch/mips/bcm63xx/boards/Kconfig         |    6 +
+ arch/mips/bcm63xx/boards/Makefile        |    1 +
+ arch/mips/bcm63xx/boards/board_common.c  |    2 +-
+ arch/mips/bcm63xx/boards/board_common.h  |    6 +
+ arch/mips/bcm63xx/boards/board_livebox.c |  215 ++++++++++++++++++++++++++++++
+ 5 files changed, 229 insertions(+), 1 deletion(-)
+ create mode 100644 arch/mips/bcm63xx/boards/board_livebox.c
+
+--- a/arch/mips/bcm63xx/boards/Kconfig
++++ b/arch/mips/bcm63xx/boards/Kconfig
+@@ -12,4 +12,10 @@ config BOARD_BCM963XX
+ 	select BCMA
+ 	default y
+ 
++config BOARD_LIVEBOX
++	bool "Inventel Livebox(es) boards"
++	select SSB
++	help
++	  Inventel Livebox boards using the RedBoot bootloader.
++
+ endmenu
+--- a/arch/mips/bcm63xx/boards/Makefile
++++ b/arch/mips/bcm63xx/boards/Makefile
+@@ -1,3 +1,4 @@
+ # SPDX-License-Identifier: GPL-2.0-only
+ obj-y					+= board_common.o
+ obj-$(CONFIG_BOARD_BCM963XX)		+= board_bcm963xx.o
++obj-$(CONFIG_BOARD_LIVEBOX)		+= board_livebox.o
+--- a/arch/mips/bcm63xx/boards/board_common.c
++++ b/arch/mips/bcm63xx/boards/board_common.c
+@@ -54,7 +54,7 @@ void __init board_prom_init(void)
+ 	if (fw_arg3 == CFE_EPTSEAL)
+ 		board_bcm963xx_init();
+ 	else
+-		panic("unsupported bootloader detected");
++		board_livebox_init();
+ }
+ 
+ static int (*board_get_mac_address)(u8 mac[ETH_ALEN]);
+--- a/arch/mips/bcm63xx/boards/board_common.h
++++ b/arch/mips/bcm63xx/boards/board_common.h
+@@ -24,4 +24,10 @@ static inline void board_of_device_prese
+ }
+ #endif
+ 
++#if defined(CONFIG_BOARD_LIVEBOX)
++void board_livebox_init(void);
++#else
++static inline void board_livebox_init(void) { }
++#endif
++
+ #endif /* __BOARD_COMMON_H */
+--- /dev/null
++++ b/arch/mips/bcm63xx/boards/board_livebox.c
+@@ -0,0 +1,153 @@
++/*
++ * This file is subject to the terms and conditions of the GNU General Public
++ * License. See the file "COPYING" in the main directory of this archive
++ * for more details.
++ *
++ * Copyright (C) 2008 Florian Fainelli <florian@openwrt.org>
++ */
++
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/string.h>
++#include <linux/input.h>
++#include <asm/addrspace.h>
++#include <bcm63xx_board.h>
++#include <bcm63xx_cpu.h>
++#include <bcm63xx_regs.h>
++#include <bcm63xx_io.h>
++#include <bcm63xx_dev_flash.h>
++#include <board_bcm963xx.h>
++
++#include "board_common.h"
++
++#define PFX	"board_livebox: "
++
++static unsigned int mac_addr_used = 0;
++
++/*
++ * known 6348 boards
++ */
++#ifdef CONFIG_BCM63XX_CPU_6348
++static struct board_info __initdata board_livebox_blue5g = {
++	.name = "Livebox-blue-5g",
++	.expected_cpu_id = 0x6348,
++
++	.has_pccard = 1,
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.ephy_reset_gpio = 6,
++	.ephy_reset_gpio_flags = GPIO_ACTIVE_LOW,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.use_internal_phy = 1,
++	},
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 31,
++	},
++};
++#endif
++
++/*
++ * all boards
++ */
++static const struct board_info __initdata *bcm963xx_boards[] = {
++#ifdef CONFIG_BCM63XX_CPU_6348
++	&board_livebox_blue5g
++#endif /* CONFIG_BCM63XX_CPU_6348 */
++};
++
++static struct of_device_id const livebox_boards_dt[] = {
++	{ .compatible = "inventel,livebox-1", .data = &board_livebox_blue5g, },
++	{ }
++};
++
++/*
++ * register & return a new board mac address
++ */
++static int livebox_get_mac_address(u8 *mac)
++{
++	u8 *p;
++	int count;
++
++	memcpy(mac, (u8 *)0xBEBFF377, ETH_ALEN);
++
++	p = mac + ETH_ALEN - 1;
++	count = mac_addr_used;
++
++	while (count--) {
++		do {
++			(*p)++;
++			if (*p != 0)
++				break;
++			p--;
++		} while (p != mac);
++	}
++
++	if (p == mac) {
++		printk(KERN_ERR PFX "unable to fetch mac address\n");
++		return -ENODEV;
++	}
++	mac_addr_used++;
++
++	return 0;
++}
++
++/*
++ * early init callback
++ */
++#define LIVEBOX_GPIO_DETECT_MASK	0x000000ff
++#define LIVEBOX_BOOT_ADDR		0x1e400000
++
++#define LIVEBOX_HW_BLUE5G_9		0x90
++
++void __init board_livebox_init(void)
++{
++	u32 val;
++	u8 hw_version;
++	const struct board_info *board;
++	const struct of_device_id *board_match;
++
++	/* find board by compat */
++	board_match = bcm63xx_match_board(livebox_boards_dt);
++	if (board_match) {
++		board = board_match->data;
++	} else {
++		/* Get hardware version */
++		val = bcm_gpio_readl(GPIO_CTL_LO_REG);
++		val &= ~LIVEBOX_GPIO_DETECT_MASK;
++		bcm_gpio_writel(val, GPIO_CTL_LO_REG);
++
++		hw_version = bcm_gpio_readl(GPIO_DATA_LO_REG);
++		hw_version &= LIVEBOX_GPIO_DETECT_MASK;
++
++		switch (hw_version) {
++		case LIVEBOX_HW_BLUE5G_9:
++			printk(KERN_INFO PFX "Livebox BLUE5G.9\n");
++			board = bcm963xx_boards[0];
++			break;
++		default:
++			printk(KERN_INFO PFX "Unknown livebox version: %02x\n",
++			       hw_version);
++			/* use default livebox configuration */
++			board = bcm963xx_boards[0];
++			break;
++		}
++	}
++
++	/* use default livebox configuration */
++	board_early_setup(board, livebox_get_mac_address);
++
++	/* read base address of boot chip select (0) */
++	val = bcm_mpi_readl(MPI_CSBASE_REG(0));
++	val &= MPI_CSBASE_BASE_MASK;
++	if (val != LIVEBOX_BOOT_ADDR) {
++		printk(KERN_NOTICE PFX "flash address is: 0x%08x, forcing to: 0x%08x\n",
++			val, LIVEBOX_BOOT_ADDR);
++		bcm63xx_flash_force_phys_base_address(LIVEBOX_BOOT_ADDR, 0x1ebfffff);
++	}
++}
diff --git a/target/linux/bcm63xx/patches-5.4/567-board-adb_pdg-a4001n-a-000-1a1-ax.patch b/target/linux/bcm63xx/patches-5.4/567-board-adb_pdg-a4001n-a-000-1a1-ax.patch
deleted file mode 100644
index dec14545fe..0000000000
--- a/target/linux/bcm63xx/patches-5.4/567-board-adb_pdg-a4001n-a-000-1a1-ax.patch
+++ /dev/null
@@ -1,68 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -619,6 +619,49 @@ static struct board_info __initdata boar
- 	},
- };
- 
-+static struct board_info __initdata board_PDG_A4001N_A_000_1A1_AX = {
-+	.name = "96328avng",
-+	.expected_cpu_id = 0x6328,
-+
-+	.has_pci = 1,
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[0] = {
-+				.used = 1,
-+				.phy_id = 1,
-+				.name = "Port 1",
-+			},
-+			[1] = {
-+				.used = 1,
-+				.phy_id = 2,
-+				.name = "Port 2",
-+			},
-+			[2] = {
-+				.used = 1,
-+				.phy_id = 3,
-+				.name = "Port 3",
-+			},
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 4,
-+				.name = "Port 4",
-+			},
-+		},
-+	},
-+
-+	.use_fallback_sprom = 1,
-+	.fallback_sprom = {
-+		.type = SPROM_BCM43225,
-+		.pci_bus = 1,
-+		.pci_dev = 0,
-+	},
-+};
-+
- static struct board_info __initdata board_A4001N1 = {
- 	.name = "963281T_TEF",
- 	.expected_cpu_id = 0x6328,
-@@ -2757,6 +2800,7 @@ static const struct board_info __initcon
- 	&board_AR5387un,
- 	&board_963281TAN,
- 	&board_A4001N,
-+	&board_PDG_A4001N_A_000_1A1_AX,
- 	&board_A4001N1,
- 	&board_dsl_274xb_f1,
- 	&board_FAST2704V2,
-@@ -2861,6 +2905,7 @@ static struct of_device_id const bcm963x
- #ifdef CONFIG_BCM63XX_CPU_6328
- 	{ .compatible = "adb,a4001n", .data = &board_A4001N, },
- 	{ .compatible = "adb,a4001n1", .data = &board_A4001N1, },
-+	{ .compatible = "adb,pdg-a4001n-a-000-1a1-ax", .data = &board_PDG_A4001N_A_000_1A1_AX, },
- 	{ .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
- 	{ .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
- 	{ .compatible = "comtrend,ar-5381u", .data = &board_AR5381u, },
diff --git a/target/linux/bcm63xx/patches-5.4/568-board-H500s.patch b/target/linux/bcm63xx/patches-5.4/568-board-H500s.patch
deleted file mode 100644
index 5bcb50672d..0000000000
--- a/target/linux/bcm63xx/patches-5.4/568-board-H500s.patch
+++ /dev/null
@@ -1,56 +0,0 @@
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2777,6 +2777,36 @@ static struct board_info __initdata boar
- 		},
- 	},
- };
-+
-+static struct board_info __initdata board_H500s = {
-+	.name = "BXK00C-1.6",
-+	.expected_cpu_id = 0x63268,
-+
-+	.has_ohci0 = 1,
-+	.has_ehci0 = 1,
-+	.num_usbh_ports = 1,
-+
-+	.has_enetsw = 1,
-+	.enetsw = {
-+		.used_ports = {
-+			[3] = {
-+				.used = 1,
-+				.phy_id = 12,
-+				.name = "WAN",
-+			},
-+			[4] = {
-+				.used = 1,
-+				.phy_id = 0,
-+				.bypass_link = 1,
-+				.force_speed = 1000,
-+				.force_duplex_full = 1,
-+				.mii_override = 1,
-+				.timing_sel = 1,
-+				.name = "RGMII",
-+			},
-+		},
-+	},
-+};
- #endif /* CONFIG_BCM63XX_CPU_63268 */
- 
- /*
-@@ -2887,6 +2917,7 @@ static const struct board_info __initcon
- 	&board_VR3032u,
- 	&board_vw6339gu,
- 	&board_BSKYB_63168,
-+	&board_H500s,
- #endif /* CONFIG_BCM63XX_CPU_63268 */
- };
- 
-@@ -3005,6 +3036,8 @@ static struct of_device_id const bcm963x
- 	{ .compatible = "comtrend,vg-8050", .data = &board_VG8050, },
- 	{ .compatible = "comtrend,vr-3032u", .data = &board_VR3032u, },
- 	{ .compatible = "inteno,vg50", .data = &board_vw6339gu, },
-+	{ .compatible = "sercomm,h500-s-lowi", .data = &board_H500s, },
-+	{ .compatible = "sercomm,h500-s-vfes", .data = &board_H500s, },
- 	{ .compatible = "sky,sr102", .data = &board_BSKYB_63168, },
- #endif /* CONFIG_BCM63XX_CPU_63268 */
- #endif /* CONFIG_OF */
diff --git a/target/linux/bcm63xx/patches-5.4/568-board_bcm6348-comtrend-ct-536plus-ct-5621.patch b/target/linux/bcm63xx/patches-5.4/568-board_bcm6348-comtrend-ct-536plus-ct-5621.patch
new file mode 100644
index 0000000000..c815e66f1d
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/568-board_bcm6348-comtrend-ct-536plus-ct-5621.patch
@@ -0,0 +1,50 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -995,6 +995,30 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_ct536_ct5621 = {
++	.name = "CT536_CT5621",
++	.expected_cpu_id = 0x6348,
++
++	.has_pccard = 1,
++	.has_pci = 1,
++	.has_ohci0 = 1,
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM4318,
++		.pci_bus = 0,
++		.pci_dev = 1,
++	},
++};
++
+ static struct board_info __initdata board_96348gw = {
+ 	.name				= "96348GW",
+ 	.expected_cpu_id		= 0x6348,
+@@ -1401,6 +1425,7 @@ static const struct board_info __initcon
+ 	&board_96348sv,
+ 	&board_V2500V_BB,
+ 	&board_V2110,
++	&board_ct536_ct5621,
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ #ifdef CONFIG_BCM63XX_CPU_6358
+ 	&board_96358vw,
+@@ -1455,6 +1480,8 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "brcm,bcm96348gw-a", .data = &board_96348gw_a, },
+ 	{ .compatible = "bt,voyager-2110", .data = &board_V2110, },
+ 	{ .compatible = "bt,voyager-2500v-bb", .data = &board_V2500V_BB, },
++	{ .compatible = "comtrend,ct-536plus", .data = &board_ct536_ct5621, },
++	{ .compatible = "comtrend,ct-5621", .data = &board_ct536_ct5621, },
+ 	{ .compatible = "d-link,dsl-2640b-b", .data = &board_96348_D4PW, },
+ 	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
+ 	{ .compatible = "dynalink,rta1025w", .data = &board_rta1025w_16, },
diff --git a/target/linux/bcm63xx/patches-5.4/569-board_bcm6348-comtrend-ct-5365.patch b/target/linux/bcm63xx/patches-5.4/569-board_bcm6348-comtrend-ct-5365.patch
new file mode 100644
index 0000000000..7dbfb825fa
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/569-board_bcm6348-comtrend-ct-5365.patch
@@ -0,0 +1,48 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1019,6 +1019,29 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_96348A_122 = {
++	.name = "96348A-122",
++	.expected_cpu_id = 0x6348,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM4318,
++		.pci_bus = 0,
++		.pci_dev = 1,
++	},
++};
++
+ static struct board_info __initdata board_96348gw = {
+ 	.name				= "96348GW",
+ 	.expected_cpu_id		= 0x6348,
+@@ -1426,6 +1449,7 @@ static const struct board_info __initcon
+ 	&board_V2500V_BB,
+ 	&board_V2110,
+ 	&board_ct536_ct5621,
++	&board_96348A_122,
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ #ifdef CONFIG_BCM63XX_CPU_6358
+ 	&board_96358vw,
+@@ -1481,6 +1505,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "bt,voyager-2110", .data = &board_V2110, },
+ 	{ .compatible = "bt,voyager-2500v-bb", .data = &board_V2500V_BB, },
+ 	{ .compatible = "comtrend,ct-536plus", .data = &board_ct536_ct5621, },
++	{ .compatible = "comtrend,ct-5365", .data = &board_96348A_122, },
+ 	{ .compatible = "comtrend,ct-5621", .data = &board_ct536_ct5621, },
+ 	{ .compatible = "d-link,dsl-2640b-b", .data = &board_96348_D4PW, },
+ 	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
diff --git a/target/linux/bcm63xx/patches-5.4/570-board_bcm6348-telsey-cpva502plus.patch b/target/linux/bcm63xx/patches-5.4/570-board_bcm6348-telsey-cpva502plus.patch
new file mode 100644
index 0000000000..dc028609be
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/570-board_bcm6348-telsey-cpva502plus.patch
@@ -0,0 +1,53 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -995,6 +995,34 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_CPVA502plus = {
++	.name = "CPVA502+",
++	.expected_cpu_id = 0x6348,
++
++	.has_pci = 1,
++	.ephy_reset_gpio = 4,
++	.ephy_reset_gpio_flags = GPIO_ACTIVE_LOW,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.use_internal_phy = 1,
++	},
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM4318,
++		.pci_bus = 0,
++		.pci_dev = 1,
++	},
++};
++
+ static struct board_info __initdata board_ct536_ct5621 = {
+ 	.name = "CT536_CT5621",
+ 	.expected_cpu_id = 0x6348,
+@@ -1450,6 +1478,7 @@ static const struct board_info __initcon
+ 	&board_V2110,
+ 	&board_ct536_ct5621,
+ 	&board_96348A_122,
++	&board_CPVA502plus,
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ #ifdef CONFIG_BCM63XX_CPU_6358
+ 	&board_96358vw,
+@@ -1515,6 +1544,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "t-com,speedport-w-500v", .data = &board_spw500v, },
+ 	{ .compatible = "tecom,gw6000", .data = &board_gw6000, },
+ 	{ .compatible = "tecom,gw6200", .data = &board_gw6200, },
++	{ .compatible = "telsey,cpva502plus", .data = &board_CPVA502plus, },
+ 	{ .compatible = "telsey,magic", .data = &board_96348sv, },
+ 	{ .compatible = "tp-link,td-w8900gb", .data = &board_96348gw_11, },
+ 	{ .compatible = "usrobotics,usr9108", .data = &board_96348gw_a, },
diff --git a/target/linux/bcm63xx/patches-5.4/571-board_bcm6348-netgear-dg834g-v4.patch b/target/linux/bcm63xx/patches-5.4/571-board_bcm6348-netgear-dg834g-v4.patch
new file mode 100644
index 0000000000..d68f690578
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/571-board_bcm6348-netgear-dg834g-v4.patch
@@ -0,0 +1,42 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1225,6 +1225,23 @@ static struct board_info __initdata boar
+ 	.has_ohci0 = 1,
+ };
+ 
++/* NetGear DG834G v4 */
++static struct board_info __initdata board_96348W3 = {
++ 	.name = "96348W3",
++	.expected_cpu_id = 0x6348,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
++
+ static struct board_info __initdata board_96348_D4PW = {
+ 	.name = "D-4P-W",
+ 	.expected_cpu_id = 0x6348,
+@@ -1479,6 +1496,7 @@ static const struct board_info __initcon
+ 	&board_ct536_ct5621,
+ 	&board_96348A_122,
+ 	&board_CPVA502plus,
++	&board_96348W3,
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ #ifdef CONFIG_BCM63XX_CPU_6358
+ 	&board_96358vw,
+@@ -1540,6 +1558,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "davolink,dv-201amr", .data = &board_DV201AMR, },
+ 	{ .compatible = "dynalink,rta1025w", .data = &board_rta1025w_16, },
+ 	{ .compatible = "netgear,dg834gt-pn", .data = &board_96348gw_10, },
++ 	{ .compatible = "netgear,dg834g-v4", .data = &board_96348W3, },
+ 	{ .compatible = "sagem,fast-2404", .data = &board_FAST2404, },
+ 	{ .compatible = "t-com,speedport-w-500v", .data = &board_spw500v, },
+ 	{ .compatible = "tecom,gw6000", .data = &board_gw6000, },
diff --git a/target/linux/bcm63xx/patches-5.4/572-board_bcm6348-sagem-fast-2604.patch b/target/linux/bcm63xx/patches-5.4/572-board_bcm6348-sagem-fast-2604.patch
new file mode 100644
index 0000000000..21b10da89f
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/572-board_bcm6348-sagem-fast-2604.patch
@@ -0,0 +1,41 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1159,6 +1159,22 @@ static struct board_info __initdata boar
+ 	.has_ehci0			= 1,
+ };
+ 
++static struct board_info __initdata board_FAST2604 = {
++	.name = "F@ST2604",
++	.expected_cpu_id = 0x6348,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
++
+ static struct board_info __initdata board_rta1025w_16 = {
+ 	.name				= "RTA1025W_16",
+ 	.expected_cpu_id		= 0x6348,
+@@ -1485,6 +1501,7 @@ static const struct board_info __initcon
+ 	&board_96348gw_10,
+ 	&board_96348gw_11,
+ 	&board_FAST2404,
++	&board_FAST2604,
+ 	&board_DV201AMR,
+ 	&board_96348gw_a,
+ 	&board_rta1025w_16,
+@@ -1560,6 +1577,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "netgear,dg834gt-pn", .data = &board_96348gw_10, },
+  	{ .compatible = "netgear,dg834g-v4", .data = &board_96348W3, },
+ 	{ .compatible = "sagem,fast-2404", .data = &board_FAST2404, },
++ 	{ .compatible = "sagem,fast-2604", .data = &board_FAST2604, },
+ 	{ .compatible = "t-com,speedport-w-500v", .data = &board_spw500v, },
+ 	{ .compatible = "tecom,gw6000", .data = &board_gw6000, },
+ 	{ .compatible = "tecom,gw6200", .data = &board_gw6200, },
diff --git a/target/linux/bcm63xx/patches-5.4/573-board_bcm6348-asmax-ar-1004g.patch b/target/linux/bcm63xx/patches-5.4/573-board_bcm6348-asmax-ar-1004g.patch
new file mode 100644
index 0000000000..a1eeee3b22
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/573-board_bcm6348-asmax-ar-1004g.patch
@@ -0,0 +1,48 @@
+From: "mexit@o2.pl" <mexit@o2.pl>
+Date: Sun, 24 Nov 2013 21:33:38 +0000
+Subject: [PATCH 4/5] bcm63xx: add support for Asmax AR 1004g router
+
+Support for Asmax AR 1004g router
+
+Signed-off-by: Adrian Feliks <mexit@o2.pl>
+---
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -979,6 +979,21 @@ static struct board_info __initdata boar
+ 	.has_ehci0 = 1,
+ };
+ 
++static struct board_info __initdata board_96348gw_10_AR1004G = {
++	.name = "AR1004G",
++	.expected_cpu_id = 0x6348,
++
++	.has_pci = 1,
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
++
+ /* BT Voyager 2110 */
+ static struct board_info __initdata board_V2110 = {
+ 	.name = "V2110",
+@@ -1514,6 +1529,7 @@ static const struct board_info __initcon
+ 	&board_96348A_122,
+ 	&board_CPVA502plus,
+ 	&board_96348W3,
++	&board_96348gw_10_AR1004G,
+ #endif /* CONFIG_BCM63XX_CPU_6348 */
+ #ifdef CONFIG_BCM63XX_CPU_6358
+ 	&board_96358vw,
+@@ -1561,6 +1577,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "dynalink,rta770w", .data = &board_rta770w, },
+ #endif /* CONFIG_BCM63XX_CPU_6345 */
+ #ifdef CONFIG_BCM63XX_CPU_6348
++	{ .compatible = "asmax,ar-1004g", .data = &board_96348gw_10_AR1004G, },
+ 	{ .compatible = "belkin,f5d7633", .data = &board_96348gw_10, },
+ 	{ .compatible = "brcm,bcm96348r", .data = &board_96348r, },
+ 	{ .compatible = "brcm,bcm96348gw-10", .data = &board_96348gw_10, },
diff --git a/target/linux/bcm63xx/patches-5.4/601-board-bcm6358-DWV-S0_fixes.patch b/target/linux/bcm63xx/patches-5.4/601-board-bcm6358-DWV-S0_fixes.patch
new file mode 100644
index 0000000000..fa35102aa0
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/601-board-bcm6358-DWV-S0_fixes.patch
@@ -0,0 +1,10 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1468,6 +1468,7 @@ static struct board_info __initdata boar
+ 	},
+ 
+ 	.has_ohci0			= 1,
++	.has_ehci0			= 1,
+ };
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ 
diff --git a/target/linux/bcm63xx/patches-5.4/602-board-bcm6358-sfr-neufbox-4.patch b/target/linux/bcm63xx/patches-5.4/602-board-bcm6358-sfr-neufbox-4.patch
new file mode 100644
index 0000000000..bb5ce6f840
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/602-board-bcm6358-sfr-neufbox-4.patch
@@ -0,0 +1,77 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1470,6 +1470,56 @@ static struct board_info __initdata boar
+ 	.has_ohci0			= 1,
+ 	.has_ehci0			= 1,
+ };
++
++static struct board_info __initdata board_nb4_ser_r0 = {
++	.name = "NB4-SER-r0",
++	.expected_cpu_id = 0x6358,
++
++	.has_pccard = 1,
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.use_internal_phy = 1,
++	},
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
++
++static struct board_info __initdata board_nb4_fxc_r1 = {
++	.name = "NB4-FXC-r1",
++	.expected_cpu_id = 0x6358,
++
++	.has_pccard = 1,
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.use_internal_phy = 1,
++	},
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ 
+ /*
+@@ -1537,6 +1587,8 @@ static const struct board_info __initcon
+ 	&board_96358vw2,
+ 	&board_AGPFS0,
+ 	&board_DWVS0,
++	&board_nb4_ser_r0,
++	&board_nb4_fxc_r1,
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ };
+ 
+@@ -1613,6 +1665,8 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "pirelli,a226m", .data = &board_DWVS0, },
+ 	{ .compatible = "pirelli,a226m-fwb", .data = &board_DWVS0, },
+ 	{ .compatible = "pirelli,agpf-s0", .data = &board_AGPFS0, },
++	{ .compatible = "sfr,neufbox-4-sercomm-r0", .data = &board_nb4_ser_r0, },
++	{ .compatible = "sfr,neufbox-4-foxconn-r1", .data = &board_nb4_fxc_r1, },
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ #ifdef CONFIG_BCM63XX_CPU_6362
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
diff --git a/target/linux/bcm63xx/patches-5.4/603-board-bcm6358-telsey-cpva642.patch b/target/linux/bcm63xx/patches-5.4/603-board-bcm6358-telsey-cpva642.patch
new file mode 100644
index 0000000000..be860fa722
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/603-board-bcm6358-telsey-cpva642.patch
@@ -0,0 +1,42 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1422,6 +1422,23 @@ static struct board_info __initdata boar
+ 	.num_usbh_ports			= 2,
+ };
+ 
++static struct board_info __initdata board_CPVA642 = {
++	.name = "CPVA642",
++	.expected_cpu_id = 0x6358,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++ 	},
++};
++
+ static struct board_info __initdata board_AGPFS0 = {
+ 	.name				= "AGPF-S0",
+ 	.expected_cpu_id		= 0x6358,
+@@ -1586,6 +1603,7 @@ static const struct board_info __initcon
+ 	&board_96358vw,
+ 	&board_96358vw2,
+ 	&board_AGPFS0,
++	&board_CPVA642,
+ 	&board_DWVS0,
+ 	&board_nb4_ser_r0,
+ 	&board_nb4_fxc_r1,
+@@ -1667,6 +1685,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "pirelli,agpf-s0", .data = &board_AGPFS0, },
+ 	{ .compatible = "sfr,neufbox-4-sercomm-r0", .data = &board_nb4_ser_r0, },
+ 	{ .compatible = "sfr,neufbox-4-foxconn-r1", .data = &board_nb4_fxc_r1, },
++	{ .compatible = "telsey,cpva642", .data = &board_CPVA642, },
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ #ifdef CONFIG_BCM63XX_CPU_6362
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
diff --git a/target/linux/bcm63xx/patches-5.4/604-board_bcm6358-d-link-dsl-274xb-c.patch b/target/linux/bcm63xx/patches-5.4/604-board_bcm6358-d-link-dsl-274xb-c.patch
new file mode 100644
index 0000000000..3fb9940e78
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/604-board_bcm6358-d-link-dsl-274xb-c.patch
@@ -0,0 +1,41 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1488,6 +1488,22 @@ static struct board_info __initdata boar
+ 	.has_ehci0			= 1,
+ };
+ 
++/* D-Link DSL-274xB revison C2/C3 */
++static struct board_info __initdata board_dsl_274xb_rev_c = {
++	.name = "AW4139",
++	.expected_cpu_id = 0x6358,
++
++	.has_pci = 1,
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
++
+ static struct board_info __initdata board_nb4_ser_r0 = {
+ 	.name = "NB4-SER-r0",
+ 	.expected_cpu_id = 0x6358,
+@@ -1605,6 +1621,7 @@ static const struct board_info __initcon
+ 	&board_AGPFS0,
+ 	&board_CPVA642,
+ 	&board_DWVS0,
++	&board_dsl_274xb_rev_c,
+ 	&board_nb4_ser_r0,
+ 	&board_nb4_fxc_r1,
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+@@ -1678,6 +1695,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "alcatel,rg100a", .data = &board_96358vw2, },
+ 	{ .compatible = "brcm,bcm96358vw", .data = &board_96358vw, },
+ 	{ .compatible = "brcm,bcm96358vw2", .data = &board_96358vw2, },
++	{ .compatible = "d-link,dsl-274xb-c2", .data = &board_dsl_274xb_rev_c, },
+ 	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
+ 	{ .compatible = "pirelli,a226g", .data = &board_DWVS0, },
+ 	{ .compatible = "pirelli,a226m", .data = &board_DWVS0, },
diff --git a/target/linux/bcm63xx/patches-5.4/605-board_bcm6358-huawei-echolife-hg553.patch b/target/linux/bcm63xx/patches-5.4/605-board_bcm6358-huawei-echolife-hg553.patch
new file mode 100644
index 0000000000..e5eb2ff8e2
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/605-board_bcm6358-huawei-echolife-hg553.patch
@@ -0,0 +1,50 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1553,6 +1553,31 @@ static struct board_info __initdata boar
+ 		.force_duplex_full = 1,
+ 	},
+ };
++
++static struct board_info __initdata board_HW553 = {
++	.name = "HW553",
++	.expected_cpu_id = 0x6358,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM4318,
++		.pci_bus = 0,
++		.pci_dev = 1,
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ 
+ /*
+@@ -1624,6 +1649,7 @@ static const struct board_info __initcon
+ 	&board_dsl_274xb_rev_c,
+ 	&board_nb4_ser_r0,
+ 	&board_nb4_fxc_r1,
++	&board_HW553,
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ };
+ 
+@@ -1697,6 +1723,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "brcm,bcm96358vw2", .data = &board_96358vw2, },
+ 	{ .compatible = "d-link,dsl-274xb-c2", .data = &board_dsl_274xb_rev_c, },
+ 	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
++	{ .compatible = "huawei,echolife-hg553", .data = &board_HW553, },
+ 	{ .compatible = "pirelli,a226g", .data = &board_DWVS0, },
+ 	{ .compatible = "pirelli,a226m", .data = &board_DWVS0, },
+ 	{ .compatible = "pirelli,a226m-fwb", .data = &board_DWVS0, },
diff --git a/target/linux/bcm63xx/patches-5.4/606-board_bcm6358-t-com-speedport-w-303v.patch b/target/linux/bcm63xx/patches-5.4/606-board_bcm6358-t-com-speedport-w-303v.patch
new file mode 100644
index 0000000000..114e55a14d
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/606-board_bcm6358-t-com-speedport-w-303v.patch
@@ -0,0 +1,39 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1578,6 +1578,20 @@ static struct board_info __initdata boar
+ 		.pci_dev = 1,
+ 	},
+ };
++
++ /* T-Home Speedport W 303V Typ B */
++static struct board_info __initdata board_spw303v = {
++	.name = "96358-502V",
++	.expected_cpu_id = 0x6358,
++
++	.has_pci = 1,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.use_internal_phy = 1,
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ 
+ /*
+@@ -1650,6 +1664,7 @@ static const struct board_info __initcon
+ 	&board_nb4_ser_r0,
+ 	&board_nb4_fxc_r1,
+ 	&board_HW553,
++	&board_spw303v,
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ };
+ 
+@@ -1730,6 +1745,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "pirelli,agpf-s0", .data = &board_AGPFS0, },
+ 	{ .compatible = "sfr,neufbox-4-sercomm-r0", .data = &board_nb4_ser_r0, },
+ 	{ .compatible = "sfr,neufbox-4-foxconn-r1", .data = &board_nb4_fxc_r1, },
++	{ .compatible = "t-com,speedport-w-303v", .data = &board_spw303v, },
+ 	{ .compatible = "telsey,cpva642", .data = &board_CPVA642, },
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ #ifdef CONFIG_BCM63XX_CPU_6362
diff --git a/target/linux/bcm63xx/patches-5.4/607-board_bcm6358-comtrend-ct-6373.patch b/target/linux/bcm63xx/patches-5.4/607-board_bcm6358-comtrend-ct-6373.patch
new file mode 100644
index 0000000000..4c0ff79067
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/607-board_bcm6358-comtrend-ct-6373.patch
@@ -0,0 +1,49 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1554,6 +1554,30 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_ct6373_1 = {
++	.name = "CT6373-1",
++	.expected_cpu_id = 0x6358,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM4318,
++		.pci_bus = 0,
++		.pci_dev = 1,
++	},
++};
++
+ static struct board_info __initdata board_HW553 = {
+ 	.name = "HW553",
+ 	.expected_cpu_id = 0x6358,
+@@ -1663,6 +1687,7 @@ static const struct board_info __initcon
+ 	&board_dsl_274xb_rev_c,
+ 	&board_nb4_ser_r0,
+ 	&board_nb4_fxc_r1,
++	&board_ct6373_1,
+ 	&board_HW553,
+ 	&board_spw303v,
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+@@ -1736,6 +1761,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "alcatel,rg100a", .data = &board_96358vw2, },
+ 	{ .compatible = "brcm,bcm96358vw", .data = &board_96358vw, },
+ 	{ .compatible = "brcm,bcm96358vw2", .data = &board_96358vw2, },
++	{ .compatible = "comtrend,ct-6373", .data = &board_ct6373_1, },
+ 	{ .compatible = "d-link,dsl-274xb-c2", .data = &board_dsl_274xb_rev_c, },
+ 	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
+ 	{ .compatible = "huawei,echolife-hg553", .data = &board_HW553, },
diff --git a/target/linux/bcm63xx/patches-5.4/608-board_bcm6358-d-link-dva-g3810bn-tl.patch b/target/linux/bcm63xx/patches-5.4/608-board_bcm6358-d-link-dva-g3810bn-tl.patch
new file mode 100644
index 0000000000..a106ab8447
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/608-board_bcm6358-d-link-dva-g3810bn-tl.patch
@@ -0,0 +1,50 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1616,6 +1616,31 @@ static struct board_info __initdata boar
+ 		.use_internal_phy = 1,
+ 	},
+ };
++
++/* D-Link DVA-G3810BN/TL */
++static struct board_info __initdata board_DVAG3810BN = {
++	.name = "DVAG3810BN",
++	.expected_cpu_id = 0x6358,
++
++	.has_pccard = 1,
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.use_internal_phy = 1,
++	},
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ 
+ /*
+@@ -1690,6 +1715,7 @@ static const struct board_info __initcon
+ 	&board_ct6373_1,
+ 	&board_HW553,
+ 	&board_spw303v,
++	&board_DVAG3810BN,
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ };
+ 
+@@ -1764,6 +1790,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "comtrend,ct-6373", .data = &board_ct6373_1, },
+ 	{ .compatible = "d-link,dsl-274xb-c2", .data = &board_dsl_274xb_rev_c, },
+ 	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
++	{ .compatible = "d-link,dva-g3810bn-tl", .data = &board_DVAG3810BN, },
+ 	{ .compatible = "huawei,echolife-hg553", .data = &board_HW553, },
+ 	{ .compatible = "pirelli,a226g", .data = &board_DWVS0, },
+ 	{ .compatible = "pirelli,a226m", .data = &board_DWVS0, },
diff --git a/target/linux/bcm63xx/patches-5.4/609-board_bcm6358-huawei-echolife-hg556.patch b/target/linux/bcm63xx/patches-5.4/609-board_bcm6358-huawei-echolife-hg556.patch
new file mode 100644
index 0000000000..d05e6ca985
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/609-board_bcm6358-huawei-echolife-hg556.patch
@@ -0,0 +1,125 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -12,6 +12,7 @@
+ #include <linux/init.h>
+ #include <linux/kernel.h>
+ #include <linux/string.h>
++#include <linux/pci_ids.h>
+ #include <asm/addrspace.h>
+ #include <bcm63xx_board.h>
+ #include <bcm63xx_cpu.h>
+@@ -1603,6 +1604,94 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_HW556_A = {
++	.name = "HW556_A",
++	.expected_cpu_id = 0x6358,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_caldata = 1,
++	.caldata = {
++		{
++			.vendor = PCI_VENDOR_ID_ATHEROS,
++			.caldata_offset = 0xf7e000,
++			.slot = 1,
++			.endian_check = 1,
++			.led_pin = 2,
++			.led_active_high = 1,
++		},
++	},
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
++
++static struct board_info __initdata board_HW556_B = {
++	.name = "HW556_B",
++	.expected_cpu_id = 0x6358,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_caldata = 1,
++	.caldata = {
++		{
++			.vendor = PCI_VENDOR_ID_ATHEROS,
++			.caldata_offset = 0xefe000,
++			.slot = 1,
++			.endian_check = 1,
++			.led_pin = 2,
++			.led_active_high = 1,
++		},
++	},
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
++
++static struct board_info __initdata board_HW556_C = {
++	.name = "HW556_C",
++	.expected_cpu_id = 0x6358,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_caldata = 1,
++	.caldata = {
++		{
++			.vendor = PCI_VENDOR_ID_RALINK,
++			.caldata_offset = 0xeffe00,
++			.slot = 1,
++			.eeprom = "rt2x00.eeprom",
++		},
++	},
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++};
++
+  /* T-Home Speedport W 303V Typ B */
+ static struct board_info __initdata board_spw303v = {
+ 	.name = "96358-502V",
+@@ -1714,6 +1803,9 @@ static const struct board_info __initcon
+ 	&board_nb4_fxc_r1,
+ 	&board_ct6373_1,
+ 	&board_HW553,
++	&board_HW556_A,
++	&board_HW556_B,
++	&board_HW556_C,
+ 	&board_spw303v,
+ 	&board_DVAG3810BN,
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+@@ -1792,6 +1884,9 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
+ 	{ .compatible = "d-link,dva-g3810bn-tl", .data = &board_DVAG3810BN, },
+ 	{ .compatible = "huawei,echolife-hg553", .data = &board_HW553, },
++	{ .compatible = "huawei,echolife-hg556a-a", .data = &board_HW556_A, },
++	{ .compatible = "huawei,echolife-hg556a-b", .data = &board_HW556_B, },
++	{ .compatible = "huawei,echolife-hg556a-c", .data = &board_HW556_C, },
+ 	{ .compatible = "pirelli,a226g", .data = &board_DWVS0, },
+ 	{ .compatible = "pirelli,a226m", .data = &board_DWVS0, },
+ 	{ .compatible = "pirelli,a226m-fwb", .data = &board_DWVS0, },
diff --git a/target/linux/bcm63xx/patches-5.4/610-board_bcm6359-huawei-echolife-hg520v.patch b/target/linux/bcm63xx/patches-5.4/610-board_bcm6359-huawei-echolife-hg520v.patch
new file mode 100644
index 0000000000..ff31e2973a
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/610-board_bcm6359-huawei-echolife-hg520v.patch
@@ -0,0 +1,55 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1579,6 +1579,36 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_HW520 = {
++	.name = "HW6358GW_B",
++	.expected_cpu_id = 0x6358,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++
++	.has_enet0 = 1,
++	.enet0 = {
++		.has_phy = 1,
++		.use_internal_phy = 1,
++	},
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM4318,
++		.pci_bus = 0,
++		.pci_dev = 1,
++	},
++};
++
+ static struct board_info __initdata board_HW553 = {
+ 	.name = "HW553",
+ 	.expected_cpu_id = 0x6358,
+@@ -1802,6 +1832,7 @@ static const struct board_info __initcon
+ 	&board_nb4_ser_r0,
+ 	&board_nb4_fxc_r1,
+ 	&board_ct6373_1,
++	&board_HW520,
+ 	&board_HW553,
+ 	&board_HW556_A,
+ 	&board_HW556_B,
+@@ -1883,6 +1914,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "d-link,dsl-274xb-c2", .data = &board_dsl_274xb_rev_c, },
+ 	{ .compatible = "d-link,dsl-2650u", .data = &board_96358vw2, },
+ 	{ .compatible = "d-link,dva-g3810bn-tl", .data = &board_DVAG3810BN, },
++	{ .compatible = "huawei,echolife-hg520v", .data = &board_HW520, },
+ 	{ .compatible = "huawei,echolife-hg553", .data = &board_HW553, },
+ 	{ .compatible = "huawei,echolife-hg556a-a", .data = &board_HW556_A, },
+ 	{ .compatible = "huawei,echolife-hg556a-b", .data = &board_HW556_B, },
diff --git a/target/linux/bcm63xx/patches-5.4/611-board_bcm6358-bt-home-hub-2-a.patch b/target/linux/bcm63xx/patches-5.4/611-board_bcm6358-bt-home-hub-2-a.patch
new file mode 100644
index 0000000000..b7caeb417b
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/611-board_bcm6358-bt-home-hub-2-a.patch
@@ -0,0 +1,50 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1579,6 +1579,31 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_homehub2a = {
++	.name = "HOMEHUB2A",
++	.expected_cpu_id = 0x6358,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_enet1 = 1,
++	.enet1 = {
++		.has_phy = 1,
++		.phy_id = 0,
++		.force_speed_100 = 1,
++		.force_duplex_full = 1,
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM4322,
++		.pci_bus = 0,
++		.pci_dev = 1,
++	},
++};
++
+ static struct board_info __initdata board_HW520 = {
+ 	.name = "HW6358GW_B",
+ 	.expected_cpu_id = 0x6358,
+@@ -1832,6 +1857,7 @@ static const struct board_info __initcon
+ 	&board_nb4_ser_r0,
+ 	&board_nb4_fxc_r1,
+ 	&board_ct6373_1,
++	&board_homehub2a,
+ 	&board_HW520,
+ 	&board_HW553,
+ 	&board_HW556_A,
+@@ -1927,6 +1953,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "sfr,neufbox-4-foxconn-r1", .data = &board_nb4_fxc_r1, },
+ 	{ .compatible = "t-com,speedport-w-303v", .data = &board_spw303v, },
+ 	{ .compatible = "telsey,cpva642", .data = &board_CPVA642, },
++	{ .compatible = "bt,home-hub-2-a", .data = &board_homehub2a, },
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ #ifdef CONFIG_BCM63XX_CPU_6362
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
diff --git a/target/linux/bcm63xx/patches-5.4/631-board_bcm6361-sfr-neufbox-6.patch b/target/linux/bcm63xx/patches-5.4/631-board_bcm6361-sfr-neufbox-6.patch
new file mode 100644
index 0000000000..79e9efb2b4
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/631-board_bcm6361-sfr-neufbox-6.patch
@@ -0,0 +1,52 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1787,6 +1787,31 @@ static struct board_info __initdata boar
+ };
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ 
++#ifdef CONFIG_BCM63XX_CPU_6362
++static struct board_info __initdata board_nb6 = {
++	.name = "NB6",
++	.expected_cpu_id = 0x6362,
++
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[4] = {
++				.used = 1,
++				.phy_id = 0xff,
++				.bypass_link = 1,
++				.force_speed = 1000,
++				.force_duplex_full = 1,
++				.name = "RGMII",
++			},
++		},
++	},
++};
++#endif /* CONFIG_BCM63XX_CPU_6362 */
++
+ /*
+  * all boards
+  */
+@@ -1866,6 +1891,9 @@ static const struct board_info __initcon
+ 	&board_spw303v,
+ 	&board_DVAG3810BN,
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
++#ifdef CONFIG_BCM63XX_CPU_6362
++	&board_nb6,
++#endif /* CONFIG_BCM63XX_CPU_6362 */
+ };
+ 
+ static struct of_device_id const bcm963xx_boards_dt[] = {
+@@ -1956,6 +1984,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "bt,home-hub-2-a", .data = &board_homehub2a, },
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ #ifdef CONFIG_BCM63XX_CPU_6362
++	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ #ifdef CONFIG_BCM63XX_CPU_6368
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
diff --git a/target/linux/bcm63xx/patches-5.4/632-board_bcm6362-sagem-fast-2504n.patch b/target/linux/bcm63xx/patches-5.4/632-board_bcm6362-sagem-fast-2504n.patch
new file mode 100644
index 0000000000..3bb3ad4238
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/632-board_bcm6362-sagem-fast-2504n.patch
@@ -0,0 +1,62 @@
+From: Max Staudt <openwrt.max@enpas.org>
+Date: Wed, 15 Jan 2014 18:51:13 +0000
+Subject: [PATCH] bcm63xx: F@ST2504n board support (Linux-3.10.26)
+
+Signed-off-by: Max Staudt <openwrt.max@enpas.org>
+---
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1810,6 +1810,37 @@ static struct board_info __initdata boar
+ 		},
+ 	},
+ };
++
++static struct board_info __initdata board_fast2504n = {
++	.name = "F@ST2504n",
++	.expected_cpu_id = 0x6362,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ 
+ /*
+@@ -1893,6 +1924,7 @@ static const struct board_info __initcon
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ #ifdef CONFIG_BCM63XX_CPU_6362
+ 	&board_nb6,
++	&board_fast2504n,
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ };
+ 
+@@ -1984,6 +2016,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "bt,home-hub-2-a", .data = &board_homehub2a, },
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ #ifdef CONFIG_BCM63XX_CPU_6362
++	{ .compatible = "sagem,fast-2504n", .data = &board_fast2504n, },
+ 	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ #ifdef CONFIG_BCM63XX_CPU_6368
diff --git a/target/linux/bcm63xx/patches-5.4/633-board-bcm6362-netgear-dgnd3700-v2.patch b/target/linux/bcm63xx/patches-5.4/633-board-bcm6362-netgear-dgnd3700-v2.patch
new file mode 100644
index 0000000000..17beb14154
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/633-board-bcm6362-netgear-dgnd3700-v2.patch
@@ -0,0 +1,49 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1811,6 +1811,30 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_dgnd3700v2 = {
++	.name = "96362ADVN2xh",
++	.expected_cpu_id = 0x6362,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[4] = {
++				.used = 1,
++				.phy_id = 0xff,
++				.bypass_link = 1,
++				.force_speed = 1000,
++				.force_duplex_full = 1,
++				.name = "RGMII",
++			},
++		},
++	},
++};
++
+ static struct board_info __initdata board_fast2504n = {
+ 	.name = "F@ST2504n",
+ 	.expected_cpu_id = 0x6362,
+@@ -1924,6 +1948,7 @@ static const struct board_info __initcon
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ #ifdef CONFIG_BCM63XX_CPU_6362
+ 	&board_nb6,
++	&board_dgnd3700v2,
+ 	&board_fast2504n,
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ };
+@@ -2016,6 +2041,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "bt,home-hub-2-a", .data = &board_homehub2a, },
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ #ifdef CONFIG_BCM63XX_CPU_6362
++	{ .compatible = "netgear,dgnd3700-v2", .data = &board_dgnd3700v2, },
+ 	{ .compatible = "sagem,fast-2504n", .data = &board_fast2504n, },
+ 	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
diff --git a/target/linux/bcm63xx/patches-5.4/634-board-bcm6362-huawei-hg253s-v2.patch b/target/linux/bcm63xx/patches-5.4/634-board-bcm6362-huawei-hg253s-v2.patch
new file mode 100644
index 0000000000..db36cf2ff4
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/634-board-bcm6362-huawei-hg253s-v2.patch
@@ -0,0 +1,56 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1865,6 +1865,37 @@ static struct board_info __initdata boar
+ 		},
+ 	},
+ };
++
++static struct board_info __initdata board_hg253s_v2 = {
++	.name = "hg253s",
++	.expected_cpu_id = 0x6362,
++
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[4] = {
++				.used = 1,
++				.phy_id = 0xff,
++				.bypass_link = 1,
++				.force_speed = 1000,
++				.force_duplex_full = 1,
++				.timing_sel = 1,
++				.name = "RGMII",
++			},
++
++			[5] = {
++				.used = 1,
++				.phy_id = 24,
++				.timing_sel = 1,
++				.name = "WAN",
++			},
++		},
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ 
+ /*
+@@ -1950,6 +1981,7 @@ static const struct board_info __initcon
+ 	&board_nb6,
+ 	&board_dgnd3700v2,
+ 	&board_fast2504n,
++	&board_hg253s_v2,
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ };
+ 
+@@ -2041,6 +2073,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "bt,home-hub-2-a", .data = &board_homehub2a, },
+ #endif /* CONFIG_BCM63XX_CPU_6358 */
+ #ifdef CONFIG_BCM63XX_CPU_6362
++	{ .compatible = "huawei,hg253s-v2", .data = &board_hg253s_v2, },
+ 	{ .compatible = "netgear,dgnd3700-v2", .data = &board_dgnd3700v2, },
+ 	{ .compatible = "sagem,fast-2504n", .data = &board_fast2504n, },
+ 	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
diff --git a/target/linux/bcm63xx/patches-5.4/651-bcm63xx-add-support-for-96368MVWG-board.patch b/target/linux/bcm63xx/patches-5.4/651-bcm63xx-add-support-for-96368MVWG-board.patch
new file mode 100644
index 0000000000..948d473f53
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/651-bcm63xx-add-support-for-96368MVWG-board.patch
@@ -0,0 +1,111 @@
+From eeacc2529942051504bc957726aa178671344421 Mon Sep 17 00:00:00 2001
+From: Maxime Bizon <mbizon@freebox.fr>
+Date: Wed, 20 Jan 2010 16:21:30 +0100
+Subject: [PATCH 32/63] bcm63xx: add support for 96368MVWG board.
+
+---
+ arch/mips/bcm63xx/boards/board_bcm963xx.c          |   95 ++++++++++++++++++++
+ .../mips/include/asm/mach-bcm63xx/board_bcm963xx.h |    2 +
+ 2 files changed, 97 insertions(+), 0 deletions(-)
+
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1899,6 +1899,52 @@ static struct board_info __initdata boar
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ 
+ /*
++ * known 6368 boards
++ */
++#ifdef CONFIG_BCM63XX_CPU_6368
++static struct board_info __initdata board_96368mvwg = {
++	.name = "96368MVWG",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++
++	.has_usbd = 1,
++	.usbd = {
++		.use_fullspeed = 0,
++		.port_no = 0,
++	},
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "port1",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "port2",
++			},
++			[4] = {
++				.used = 1,
++				.phy_id = 0x12,
++				.name = "port0",
++			},
++			[5] = {
++				.used = 1,
++				.phy_id = 0x11,
++				.name = "port3",
++			},
++		},
++	},
++};
++#endif /* CONFIG_BCM63XX_CPU_6368 */
++
++/*
+  * all boards
+  */
+ static const struct board_info __initconst *bcm963xx_boards[] = {
+@@ -1983,6 +2029,9 @@ static const struct board_info __initcon
+ 	&board_fast2504n,
+ 	&board_hg253s_v2,
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
++#ifdef CONFIG_BCM63XX_CPU_6368
++	&board_96368mvwg,
++#endif /* CONFIG_BCM63XX_CPU_6368 */
+ };
+ 
+ static struct of_device_id const bcm963xx_boards_dt[] = {
+@@ -2079,6 +2128,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ #ifdef CONFIG_BCM63XX_CPU_6368
++	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
+--- a/arch/mips/bcm63xx/boards/board_common.c
++++ b/arch/mips/bcm63xx/boards/board_common.c
+@@ -81,12 +81,25 @@ void __init board_early_setup(const stru
+ 		bcm63xx_pci_enabled = 1;
+ 		if (BCMCPU_IS_6348())
+ 			val |= GPIO_MODE_6348_G2_PCI;
++
++		if (BCMCPU_IS_6368())
++			val |= GPIO_MODE_6368_PCI_REQ1 |
++				GPIO_MODE_6368_PCI_GNT1 |
++				GPIO_MODE_6368_PCI_INTB |
++				GPIO_MODE_6368_PCI_REQ0 |
++				GPIO_MODE_6368_PCI_GNT0;
+ 	}
+ #endif
+ 
+ 	if (board.has_pccard) {
+ 		if (BCMCPU_IS_6348())
+ 			val |= GPIO_MODE_6348_G1_MII_PCCARD;
++
++		if (BCMCPU_IS_6368())
++			val |= GPIO_MODE_6368_PCMCIA_CD1 |
++				GPIO_MODE_6368_PCMCIA_CD2 |
++				GPIO_MODE_6368_PCMCIA_VS1 |
++				GPIO_MODE_6368_PCMCIA_VS2;
+ 	}
+ 
+ 	if (board.has_enet0 && !board.enet0.use_internal_phy) {
diff --git a/target/linux/bcm63xx/patches-5.4/652-bcm63xx-add-support-for-96368MVNgr-board.patch b/target/linux/bcm63xx/patches-5.4/652-bcm63xx-add-support-for-96368MVNgr-board.patch
new file mode 100644
index 0000000000..663304d08f
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/652-bcm63xx-add-support-for-96368MVNgr-board.patch
@@ -0,0 +1,69 @@
+From f457fc2eb9bb915b5a4d251c7c68d4694cf07b01 Mon Sep 17 00:00:00 2001
+From: Maxime Bizon <mbizon@freebox.fr>
+Date: Fri, 4 Nov 2011 12:33:48 +0100
+Subject: [PATCH 33/63] bcm63xx: add support for 96368MVNgr board.
+
+---
+ arch/mips/bcm63xx/boards/board_bcm963xx.c |   67 +++++++++++++++++++++++++++++
+ 1 files changed, 67 insertions(+), 0 deletions(-)
+
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1942,6 +1942,41 @@ static struct board_info __initdata boar
+ 		},
+ 	},
+ };
++
++static struct board_info __initdata board_96368mvngr = {
++	.name = "96368MVNgr",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "port1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "port2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "port3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "port4",
++			},
++		},
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ 
+ /*
+@@ -2031,6 +2066,7 @@ static const struct board_info __initcon
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ #ifdef CONFIG_BCM63XX_CPU_6368
+ 	&board_96368mvwg,
++	&board_96368mvngr,
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ };
+ 
+@@ -2128,6 +2164,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ #ifdef CONFIG_BCM63XX_CPU_6368
++	{ .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
+ 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
diff --git a/target/linux/bcm63xx/patches-5.4/653-board_bcm6369-comtrend-wap-5813n.patch b/target/linux/bcm63xx/patches-5.4/653-board_bcm6369-comtrend-wap-5813n.patch
new file mode 100644
index 0000000000..0386dc8308
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/653-board_bcm6369-comtrend-wap-5813n.patch
@@ -0,0 +1,75 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -13,6 +13,8 @@
+ #include <linux/kernel.h>
+ #include <linux/string.h>
+ #include <linux/pci_ids.h>
++#include <linux/platform_data/b53.h>
++#include <linux/spi/spi.h>
+ #include <asm/addrspace.h>
+ #include <bcm63xx_board.h>
+ #include <bcm63xx_cpu.h>
+@@ -1977,6 +1979,47 @@ static struct board_info __initdata boar
+ 		},
+ 	},
+ };
++
++static struct sprom_fixup __initdata wap5813n_fixups[] = {
++	{ .offset = 97, .value = 0xfeed },
++	{ .offset = 98, .value = 0x15d1 },
++	{ .offset = 99, .value = 0xfb0d },
++	{ .offset = 113, .value = 0xfef7 },
++	{ .offset = 114, .value = 0x15f7 },
++	{ .offset = 115, .value = 0xfb1a },
++};
++
++static struct board_info __initdata board_WAP5813n = {
++	.name = "96369R-1231N",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[4] = {
++				.used = 1,
++				.phy_id = 0xff,
++				.bypass_link = 1,
++				.force_speed = 1000,
++				.force_duplex_full = 1,
++				.name = "RGMII",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43222,
++		.pci_bus = 0,
++		.pci_dev = 1,
++		.board_fixups = wap5813n_fixups,
++		.num_board_fixups = ARRAY_SIZE(wap5813n_fixups),
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ 
+ /*
+@@ -2067,6 +2110,7 @@ static const struct board_info __initcon
+ #ifdef CONFIG_BCM63XX_CPU_6368
+ 	&board_96368mvwg,
+ 	&board_96368mvngr,
++	&board_WAP5813n,
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ };
+ 
+@@ -2166,6 +2210,7 @@ static struct of_device_id const bcm963x
+ #ifdef CONFIG_BCM63XX_CPU_6368
+ 	{ .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
+ 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
++	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
diff --git a/target/linux/bcm63xx/patches-5.4/654-board_bcm6368-comtrend-vr-3025u.patch b/target/linux/bcm63xx/patches-5.4/654-board_bcm6368-comtrend-vr-3025u.patch
new file mode 100644
index 0000000000..7772594394
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/654-board_bcm6368-comtrend-vr-3025u.patch
@@ -0,0 +1,78 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1980,6 +1980,59 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct sprom_fixup __initdata vr3025u_fixups[] = {
++	{ .offset = 97, .value = 0xfeb3 },
++	{ .offset = 98, .value = 0x1618 },
++	{ .offset = 99, .value = 0xfab0 },
++	{ .offset = 113, .value = 0xfed1 },
++	{ .offset = 114, .value = 0x1609 },
++	{ .offset = 115, .value = 0xfad9 },
++};
++
++static struct board_info __initdata board_VR3025u = {
++	.name = "96368M-1541N",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "port1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "port2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "port3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "port4",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43222,
++		.pci_bus = 0,
++		.pci_dev = 1,
++		.board_fixups = vr3025u_fixups,
++		.num_board_fixups = ARRAY_SIZE(vr3025u_fixups),
++	},
++};
++
+ static struct sprom_fixup __initdata wap5813n_fixups[] = {
+ 	{ .offset = 97, .value = 0xfeed },
+ 	{ .offset = 98, .value = 0x15d1 },
+@@ -2110,6 +2163,7 @@ static const struct board_info __initcon
+ #ifdef CONFIG_BCM63XX_CPU_6368
+ 	&board_96368mvwg,
+ 	&board_96368mvngr,
++	&board_VR3025u,
+ 	&board_WAP5813n,
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ };
+@@ -2210,6 +2264,7 @@ static struct of_device_id const bcm963x
+ #ifdef CONFIG_BCM63XX_CPU_6368
+ 	{ .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
+ 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
++	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
+ 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
diff --git a/target/linux/bcm63xx/patches-5.4/655-board_bcm6368-comtrend-vr-3025un.patch b/target/linux/bcm63xx/patches-5.4/655-board_bcm6368-comtrend-vr-3025un.patch
new file mode 100644
index 0000000000..82c0887840
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/655-board_bcm6368-comtrend-vr-3025un.patch
@@ -0,0 +1,78 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2033,6 +2033,59 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct sprom_fixup __initdata vr3025un_fixups[] = {
++	{ .offset = 97, .value = 0xfeb3 },
++	{ .offset = 98, .value = 0x1618 },
++	{ .offset = 99, .value = 0xfab0 },
++	{ .offset = 113, .value = 0xfed1 },
++	{ .offset = 114, .value = 0x1609 },
++	{ .offset = 115, .value = 0xfad9 },
++};
++
++static struct board_info __initdata board_VR3025un = {
++	.name = "96368M-1341N",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "port1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "port2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "port3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "port4",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43222,
++		.pci_bus = 0,
++		.pci_dev = 1,
++		.board_fixups = vr3025un_fixups,
++		.num_board_fixups = ARRAY_SIZE(vr3025un_fixups),
++	},
++};
++
+ static struct sprom_fixup __initdata wap5813n_fixups[] = {
+ 	{ .offset = 97, .value = 0xfeed },
+ 	{ .offset = 98, .value = 0x15d1 },
+@@ -2164,6 +2217,7 @@ static const struct board_info __initcon
+ 	&board_96368mvwg,
+ 	&board_96368mvngr,
+ 	&board_VR3025u,
++	&board_VR3025un,
+ 	&board_WAP5813n,
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ };
+@@ -2265,6 +2319,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
+ 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
+ 	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
++	{ .compatible = "comtrend,vr-3025un", .data = &board_VR3025un, },
+ 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
diff --git a/target/linux/bcm63xx/patches-5.4/656-board_bcm6368-zyxel-p870hw-51a-v2.patch b/target/linux/bcm63xx/patches-5.4/656-board_bcm6368-zyxel-p870hw-51a-v2.patch
new file mode 100644
index 0000000000..0c2c2b9c8d
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/656-board_bcm6368-zyxel-p870hw-51a-v2.patch
@@ -0,0 +1,67 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1989,6 +1989,48 @@ static struct sprom_fixup __initdata vr3
+ 	{ .offset = 115, .value = 0xfad9 },
+ };
+ 
++static struct board_info __initdata board_P870HW51A_V2 = {
++	.name = "P870HW-51a_v2",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "port1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "port2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "port3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "port4",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM4318,
++		.pci_bus = 0,
++		.pci_dev = 1,
++	},
++};
++
+ static struct board_info __initdata board_VR3025u = {
+ 	.name = "96368M-1541N",
+ 	.expected_cpu_id = 0x6368,
+@@ -2216,6 +2258,7 @@ static const struct board_info __initcon
+ #ifdef CONFIG_BCM63XX_CPU_6368
+ 	&board_96368mvwg,
+ 	&board_96368mvngr,
++	&board_P870HW51A_V2,
+ 	&board_VR3025u,
+ 	&board_VR3025un,
+ 	&board_WAP5813n,
+@@ -2321,6 +2364,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
+ 	{ .compatible = "comtrend,vr-3025un", .data = &board_VR3025un, },
+ 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
++	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
diff --git a/target/linux/bcm63xx/patches-5.4/657-board_bcm6368-netgear-dgnd3700-v1.patch b/target/linux/bcm63xx/patches-5.4/657-board_bcm6368-netgear-dgnd3700-v1.patch
new file mode 100644
index 0000000000..47a19afbfa
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/657-board_bcm6368-netgear-dgnd3700-v1.patch
@@ -0,0 +1,49 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1980,6 +1980,30 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_DGND3700v1_3800B = {
++	.name = "DGND3700v1_3800B",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[5] = {
++				.used = 1,
++				.phy_id = 0xff,
++				.bypass_link = 1,
++				.force_speed = 1000,
++				.force_duplex_full = 1,
++				.name = "RGMII",
++			},
++		},
++	},
++};
++
+ static struct sprom_fixup __initdata vr3025u_fixups[] = {
+ 	{ .offset = 97, .value = 0xfeb3 },
+ 	{ .offset = 98, .value = 0x1618 },
+@@ -2258,6 +2282,7 @@ static const struct board_info __initcon
+ #ifdef CONFIG_BCM63XX_CPU_6368
+ 	&board_96368mvwg,
+ 	&board_96368mvngr,
++	&board_DGND3700v1_3800B,
+ 	&board_P870HW51A_V2,
+ 	&board_VR3025u,
+ 	&board_VR3025un,
+@@ -2364,6 +2389,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
+ 	{ .compatible = "comtrend,vr-3025un", .data = &board_VR3025un, },
+ 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
++	{ .compatible = "netgear,dgnd3700-v1", .data = &board_DGND3700v1_3800B, },
+ 	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
diff --git a/target/linux/bcm63xx/patches-5.4/658-board_bcm6368-huawei-echolife-hg655b.patch b/target/linux/bcm63xx/patches-5.4/658-board_bcm6368-huawei-echolife-hg655b.patch
new file mode 100644
index 0000000000..c1ad040cba
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/658-board_bcm6368-huawei-echolife-hg655b.patch
@@ -0,0 +1,71 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2004,6 +2004,52 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_HG655b = {
++	.name = "HW65x",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_caldata = 1,
++	.caldata = {
++		{
++			.vendor = PCI_VENDOR_ID_RALINK,
++			.caldata_offset = 0x7c0000,
++			.slot = 1,
++			.eeprom = "rt2x00.eeprom",
++		},
++	},
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "port1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "port2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "port3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "port4",
++			},
++		},
++	},
++};
++
+ static struct sprom_fixup __initdata vr3025u_fixups[] = {
+ 	{ .offset = 97, .value = 0xfeb3 },
+ 	{ .offset = 98, .value = 0x1618 },
+@@ -2283,6 +2329,7 @@ static const struct board_info __initcon
+ 	&board_96368mvwg,
+ 	&board_96368mvngr,
+ 	&board_DGND3700v1_3800B,
++	&board_HG655b,
+ 	&board_P870HW51A_V2,
+ 	&board_VR3025u,
+ 	&board_VR3025un,
+@@ -2389,6 +2436,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
+ 	{ .compatible = "comtrend,vr-3025un", .data = &board_VR3025un, },
+ 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
++	{ .compatible = "huawei,echolife-hg655b", .data = &board_HG655b, },
+ 	{ .compatible = "netgear,dgnd3700-v1", .data = &board_DGND3700v1_3800B, },
+ 	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
diff --git a/target/linux/bcm63xx/patches-5.4/659-board_bcm6368-comtrend-vr-3026e.patch b/target/linux/bcm63xx/patches-5.4/659-board_bcm6368-comtrend-vr-3026e.patch
new file mode 100644
index 0000000000..4be53d10ab
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/659-board_bcm6368-comtrend-vr-3026e.patch
@@ -0,0 +1,78 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2198,6 +2198,59 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct sprom_fixup __initdata vr3026e_fixups[] = {
++	{ .offset = 97, .value = 0xfeb3 },
++	{ .offset = 98, .value = 0x1618 },
++	{ .offset = 99, .value = 0xfab0 },
++	{ .offset = 113, .value = 0xfed1 },
++	{ .offset = 114, .value = 0x1609 },
++	{ .offset = 115, .value = 0xfad9 },
++};
++
++static struct board_info __initdata board_VR3026e = {
++	.name = "96368MT-1341N1",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "port1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "port2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "port3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "port4",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43222,
++		.pci_bus = 0,
++		.pci_dev = 1,
++		.board_fixups = vr3026e_fixups,
++		.num_board_fixups = ARRAY_SIZE(vr3026e_fixups),
++	},
++};
++
+ static struct sprom_fixup __initdata wap5813n_fixups[] = {
+ 	{ .offset = 97, .value = 0xfeed },
+ 	{ .offset = 98, .value = 0x15d1 },
+@@ -2333,6 +2386,7 @@ static const struct board_info __initcon
+ 	&board_P870HW51A_V2,
+ 	&board_VR3025u,
+ 	&board_VR3025un,
++	&board_VR3026e,
+ 	&board_WAP5813n,
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ };
+@@ -2435,6 +2489,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
+ 	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
+ 	{ .compatible = "comtrend,vr-3025un", .data = &board_VR3025un, },
++	{ .compatible = "comtrend,vr-3026e", .data = &board_VR3026e, },
+ 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
+ 	{ .compatible = "huawei,echolife-hg655b", .data = &board_HG655b, },
+ 	{ .compatible = "netgear,dgnd3700-v1", .data = &board_DGND3700v1_3800B, },
diff --git a/target/linux/bcm63xx/patches-5.4/660-board_bcm6368-huawei-echolife-hg622.patch b/target/linux/bcm63xx/patches-5.4/660-board_bcm6368-huawei-echolife-hg622.patch
new file mode 100644
index 0000000000..c025a45eeb
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/660-board_bcm6368-huawei-echolife-hg622.patch
@@ -0,0 +1,71 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2050,6 +2050,52 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_HG622 = {
++	.name = "96368MVWG_hg622",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_caldata = 1,
++	.caldata = {
++		{
++			.vendor = PCI_VENDOR_ID_RALINK,
++			.caldata_offset = 0xfa0000,
++			.slot = 1,
++			.eeprom = "rt2x00.eeprom",
++		},
++	},
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "port1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "port2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "port3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "port4",
++			},
++		},
++	},
++};
++
+ static struct sprom_fixup __initdata vr3025u_fixups[] = {
+ 	{ .offset = 97, .value = 0xfeb3 },
+ 	{ .offset = 98, .value = 0x1618 },
+@@ -2382,6 +2428,7 @@ static const struct board_info __initcon
+ 	&board_96368mvwg,
+ 	&board_96368mvngr,
+ 	&board_DGND3700v1_3800B,
++	&board_HG622,
+ 	&board_HG655b,
+ 	&board_P870HW51A_V2,
+ 	&board_VR3025u,
+@@ -2491,6 +2538,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "comtrend,vr-3025un", .data = &board_VR3025un, },
+ 	{ .compatible = "comtrend,vr-3026e", .data = &board_VR3026e, },
+ 	{ .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, },
++	{ .compatible = "huawei,echolife-hg622", .data = &board_HG622, },
+ 	{ .compatible = "huawei,echolife-hg655b", .data = &board_HG655b, },
+ 	{ .compatible = "netgear,dgnd3700-v1", .data = &board_DGND3700v1_3800B, },
+ 	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
diff --git a/target/linux/bcm63xx/patches-5.4/661-board_bcm6369-netgear-evg2000.patch b/target/linux/bcm63xx/patches-5.4/661-board_bcm6369-netgear-evg2000.patch
new file mode 100644
index 0000000000..b33cb3a1ce
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/661-board_bcm6369-netgear-evg2000.patch
@@ -0,0 +1,62 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2004,6 +2004,43 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct sprom_fixup __initdata EVG2000_fixups[] = {
++  { .offset = 219, .value = 0xec08 },
++};
++
++static struct board_info __initdata board_EVG2000 = {
++	.name = "96369PVG",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[5] = {
++				.used = 1,
++				.phy_id = 0xff,
++				.bypass_link = 1,
++				.force_speed = 1000,
++				.force_duplex_full = 1,
++				.name = "RGMII",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM4322,
++		.pci_bus = 0,
++		.pci_dev = 1,
++		.board_fixups = EVG2000_fixups,
++		.num_board_fixups = ARRAY_SIZE(EVG2000_fixups),
++	},
++};
++
+ static struct board_info __initdata board_HG655b = {
+ 	.name = "HW65x",
+ 	.expected_cpu_id = 0x6368,
+@@ -2428,6 +2465,7 @@ static const struct board_info __initcon
+ 	&board_96368mvwg,
+ 	&board_96368mvngr,
+ 	&board_DGND3700v1_3800B,
++	&board_EVG2000,
+ 	&board_HG622,
+ 	&board_HG655b,
+ 	&board_P870HW51A_V2,
+@@ -2541,6 +2579,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "huawei,echolife-hg622", .data = &board_HG622, },
+ 	{ .compatible = "huawei,echolife-hg655b", .data = &board_HG655b, },
+ 	{ .compatible = "netgear,dgnd3700-v1", .data = &board_DGND3700v1_3800B, },
++	{ .compatible = "netgear,evg2000", .data = &board_EVG2000, },
+ 	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
diff --git a/target/linux/bcm63xx/patches-5.4/662-board_bcm6368-adb-av4202n.patch b/target/linux/bcm63xx/patches-5.4/662-board_bcm6368-adb-av4202n.patch
new file mode 100644
index 0000000000..5f224e5bd4
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/662-board_bcm6368-adb-av4202n.patch
@@ -0,0 +1,68 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1904,6 +1904,49 @@ static struct board_info __initdata boar
+  * known 6368 boards
+  */
+ #ifdef CONFIG_BCM63XX_CPU_6368
++static struct board_info __initdata board_AV4202N = {
++	.name = "96368_Swiss_S1",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "port1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "port2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "port3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "port4",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM4322,
++		.pci_bus = 0,
++		.pci_dev = 1,
++	},
++};
++
+ static struct board_info __initdata board_96368mvwg = {
+ 	.name = "96368MVWG",
+ 	.expected_cpu_id = 0x6368,
+@@ -2462,6 +2505,7 @@ static const struct board_info __initcon
+ 	&board_hg253s_v2,
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ #ifdef CONFIG_BCM63XX_CPU_6368
++	&board_AV4202N,
+ 	&board_96368mvwg,
+ 	&board_96368mvngr,
+ 	&board_DGND3700v1_3800B,
+@@ -2570,6 +2614,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ #ifdef CONFIG_BCM63XX_CPU_6368
++	{ .compatible = "adb,av4202n", .data = &board_AV4202N, },
+ 	{ .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
+ 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
+ 	{ .compatible = "comtrend,vr-3025u", .data = &board_VR3025u, },
diff --git a/target/linux/bcm63xx/patches-5.4/663-board_bcm6368-observa-vh4032n.patch b/target/linux/bcm63xx/patches-5.4/663-board_bcm6368-observa-vh4032n.patch
new file mode 100644
index 0000000000..d2b0a44c29
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/663-board_bcm6368-observa-vh4032n.patch
@@ -0,0 +1,125 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2377,6 +2377,106 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct sprom_fixup __initdata vh4032n_fixups[] = {
++	{ .offset = 2, .value = 0x04d2 },
++	{ .offset = 4, .value = 0x4350 },
++	{ .offset = 65, .value = 0x1300 },
++	{ .offset = 68, .value = 0x0402 },
++	{ .offset = 70, .value = 0x0090 },
++	{ .offset = 71, .value = 0x4c19 },
++	{ .offset = 72, .value = 0x2345 },
++	{ .offset = 87, .value = 0x0315 },
++	{ .offset = 88, .value = 0x0315 },
++	{ .offset = 96, .value = 0x2048 },
++	{ .offset = 97, .value = 0xfed7 },
++	{ .offset = 98, .value = 0x15a6 },
++	{ .offset = 99, .value = 0xfaee },
++	{ .offset = 100, .value = 0x3e3a },
++	{ .offset = 101, .value = 0x3a36 },
++	{ .offset = 102, .value = 0xff7f },
++	{ .offset = 103, .value = 0x11b9 },
++	{ .offset = 104, .value = 0xfc53 },
++	{ .offset = 105, .value = 0xffe6 },
++	{ .offset = 106, .value = 0xfdd2 },
++	{ .offset = 107, .value = 0xfe49 },
++	{ .offset = 108, .value = 0xff6a },
++	{ .offset = 109, .value = 0x136e },
++	{ .offset = 110, .value = 0xfbed },
++	{ .offset = 111, .value = 0x0000 },
++	{ .offset = 112, .value = 0x2048 },
++	{ .offset = 113, .value = 0xfee2 },
++	{ .offset = 114, .value = 0x15e5 },
++	{ .offset = 115, .value = 0xfaed },
++	{ .offset = 116, .value = 0x3e3a },
++	{ .offset = 117, .value = 0x3a36 },
++	{ .offset = 118, .value = 0xffc8 },
++	{ .offset = 119, .value = 0x12b8 },
++	{ .offset = 120, .value = 0xfca1 },
++	{ .offset = 121, .value = 0xff9b },
++	{ .offset = 122, .value = 0x122a },
++	{ .offset = 123, .value = 0xfcc8 },
++	{ .offset = 124, .value = 0xff95 },
++	{ .offset = 125, .value = 0x146b },
++	{ .offset = 126, .value = 0xfbba },
++	{ .offset = 127, .value = 0x0000 },
++	{ .offset = 161, .value = 0x0000 },
++	{ .offset = 162, .value = 0x0000 },
++	{ .offset = 169, .value = 0x0000 },
++	{ .offset = 170, .value = 0x0000 },
++	{ .offset = 171, .value = 0x0000 },
++	{ .offset = 172, .value = 0x0000 },
++	{ .offset = 173, .value = 0x0000 },
++	{ .offset = 174, .value = 0x0000 },
++	{ .offset = 175, .value = 0x0000 },
++	{ .offset = 176, .value = 0x0000 },
++	{ .offset = 219, .value = 0x1108 },
++};
++
++static struct board_info __initdata board_VH4032N = {
++	.name = "VH4032N",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "LAN4",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "LAN3",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "LAN2",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "LAN1",
++			},
++		},
++	},
++
++	.use_fallback_sprom = 1,
++	.fallback_sprom = {
++		.type = SPROM_BCM43222,
++		.pci_bus = 0,
++		.pci_dev = 1,
++		.board_fixups = vh4032n_fixups,
++		.num_board_fixups = ARRAY_SIZE(vh4032n_fixups),
++	},
++};
++
+ static struct sprom_fixup __initdata wap5813n_fixups[] = {
+ 	{ .offset = 97, .value = 0xfeed },
+ 	{ .offset = 98, .value = 0x15d1 },
+@@ -2513,6 +2613,7 @@ static const struct board_info __initcon
+ 	&board_HG622,
+ 	&board_HG655b,
+ 	&board_P870HW51A_V2,
++	&board_VH4032N,
+ 	&board_VR3025u,
+ 	&board_VR3025un,
+ 	&board_VR3026e,
+@@ -2625,6 +2726,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "huawei,echolife-hg655b", .data = &board_HG655b, },
+ 	{ .compatible = "netgear,dgnd3700-v1", .data = &board_DGND3700v1_3800B, },
+ 	{ .compatible = "netgear,evg2000", .data = &board_EVG2000, },
++	{ .compatible = "observa,vh4032n", .data = &board_VH4032N, },
+ 	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
diff --git a/target/linux/bcm63xx/patches-5.4/664-board_bcm6368-actiontec-r1000h.patch b/target/linux/bcm63xx/patches-5.4/664-board_bcm6368-actiontec-r1000h.patch
new file mode 100644
index 0000000000..716a6e030f
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/664-board_bcm6368-actiontec-r1000h.patch
@@ -0,0 +1,48 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2227,6 +2227,29 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_R1000H = {
++	.name = "R1000H",
++	.expected_cpu_id = 0x6368,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[5] = {
++				.used = 1,
++				.phy_id = 0xff,
++				.bypass_link = 1,
++				.force_speed = 1000,
++				.force_duplex_full = 1,
++				.name = "RGMII",
++			},
++		},
++	},
++};
++
+ static struct board_info __initdata board_VR3025u = {
+ 	.name = "96368M-1541N",
+ 	.expected_cpu_id = 0x6368,
+@@ -2613,6 +2636,7 @@ static const struct board_info __initcon
+ 	&board_HG622,
+ 	&board_HG655b,
+ 	&board_P870HW51A_V2,
++	&board_R1000H,
+ 	&board_VH4032N,
+ 	&board_VR3025u,
+ 	&board_VR3025un,
+@@ -2715,6 +2739,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
+ #endif /* CONFIG_BCM63XX_CPU_6362 */
+ #ifdef CONFIG_BCM63XX_CPU_6368
++	{ .compatible = "actiontec,r1000h", .data = &board_R1000H, },
+ 	{ .compatible = "adb,av4202n", .data = &board_AV4202N, },
+ 	{ .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
+ 	{ .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },
diff --git a/target/linux/bcm63xx/patches-5.4/681-board_bcm63269-brcm-bcm963269bhr.patch b/target/linux/bcm63xx/patches-5.4/681-board_bcm63269-brcm-bcm963269bhr.patch
new file mode 100644
index 0000000000..a064234114
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/681-board_bcm63269-brcm-bcm963269bhr.patch
@@ -0,0 +1,67 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2543,6 +2543,46 @@ static struct board_info __initdata boar
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ 
+ /*
++ * known 63268/63269 boards
++ */
++#ifdef CONFIG_BCM63XX_CPU_63268
++static struct board_info __initdata board_963269bhr = {
++	.name = "963269BHR",
++	.expected_cpu_id = 0x63268,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "port1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "port2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "port3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "port4",
++			},
++		},
++	},
++};
++#endif /* CONFIG_BCM63XX_CPU_63268 */
++
++/*
+  * all boards
+  */
+ static const struct board_info __initconst *bcm963xx_boards[] = {
+@@ -2643,6 +2683,9 @@ static const struct board_info __initcon
+ 	&board_VR3026e,
+ 	&board_WAP5813n,
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
++#ifdef CONFIG_BCM63XX_CPU_63268
++	&board_963269bhr,
++#endif /* CONFIG_BCM63XX_CPU_63268 */
+ };
+ 
+ static struct of_device_id const bcm963xx_boards_dt[] = {
+@@ -2755,6 +2798,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
++	{ .compatible = "brcm,bcm963269bhr", .data = &board_963269bhr, },
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
+ #endif /* CONFIG_OF */
+ 	{ },
diff --git a/target/linux/bcm63xx/patches-5.4/682-board_bcm63268-inteno-vg50.patch b/target/linux/bcm63xx/patches-5.4/682-board_bcm63268-inteno-vg50.patch
new file mode 100644
index 0000000000..1275af5c22
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/682-board_bcm63268-inteno-vg50.patch
@@ -0,0 +1,67 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2580,6 +2580,48 @@ static struct board_info __initdata boar
+ 		},
+ 	},
+ };
++
++static struct board_info __initdata board_vw6339gu = {
++	.name = "VW6339GU",
++	.expected_cpu_id = 0x63268,
++
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "LAN2",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "LAN3",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "LAN4",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "LAN1",
++			},
++			[4] = {
++				.used = 1,
++				.phy_id = 7,
++				.name = "WAN",
++				.mii_override = 1,
++				.timing_sel = 1,
++			},
++		},
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
+ 
+ /*
+@@ -2685,6 +2727,7 @@ static const struct board_info __initcon
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
+ 	&board_963269bhr,
++	&board_vw6339gu,
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
+ };
+ 
+@@ -2799,6 +2842,7 @@ static struct of_device_id const bcm963x
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
+ 	{ .compatible = "brcm,bcm963269bhr", .data = &board_963269bhr, },
++	{ .compatible = "inteno,vg50", .data = &board_vw6339gu, },
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
+ #endif /* CONFIG_OF */
+ 	{ },
diff --git a/target/linux/bcm63xx/patches-5.4/683-board_bcm63268-brcm-bcm963268bu-p300.patch b/target/linux/bcm63xx/patches-5.4/683-board_bcm63268-brcm-bcm963268bu-p300.patch
new file mode 100644
index 0000000000..c75d7a477e
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/683-board_bcm63268-brcm-bcm963268bu-p300.patch
@@ -0,0 +1,84 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2546,6 +2546,65 @@ static struct board_info __initdata boar
+  * known 63268/63269 boards
+  */
+ #ifdef CONFIG_BCM63XX_CPU_63268
++static struct board_info __initdata board_963268bu_p300 = {
++	.name = "963268BU_P300",
++	.expected_cpu_id = 0x63268,
++
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_usbd = 1,
++	.usbd = {
++		.use_fullspeed = 0,
++		.port_no = 0,
++	},
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 17,
++				.name = "FE1",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "GbE2",
++			},
++			[4] = {
++				.used = 1,
++				.phy_id = 0,
++				.name = "GbE3",
++				.mii_override = 1,
++				.timing_sel = 1,
++			},
++			[5] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "GbE1",
++				.mii_override = 1,
++				.timing_sel = 1,
++			},
++			[6] = {
++				.used = 1,
++				.phy_id = 24,
++				.name = "GbE4",
++				.mii_override = 1,
++				.timing_sel = 1,
++			},
++			[7] = {
++				.used = 1,
++				.phy_id = 25,
++				.name = "GbE5",
++				.mii_override = 1,
++				.timing_sel = 1,
++			},
++		},
++	},
++};
++
+ static struct board_info __initdata board_963269bhr = {
+ 	.name = "963269BHR",
+ 	.expected_cpu_id = 0x63268,
+@@ -2726,6 +2785,7 @@ static const struct board_info __initcon
+ 	&board_WAP5813n,
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
++	&board_963268bu_p300,
+ 	&board_963269bhr,
+ 	&board_vw6339gu,
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
+@@ -2841,6 +2901,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
+ #endif /* CONFIG_BCM63XX_CPU_6368 */
+ #ifdef CONFIG_BCM63XX_CPU_63268
++	{ .compatible = "brcm,bcm963268bu-p300", .data = &board_963268bu_p300, },
+ 	{ .compatible = "brcm,bcm963269bhr", .data = &board_963269bhr, },
+ 	{ .compatible = "inteno,vg50", .data = &board_vw6339gu, },
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
diff --git a/target/linux/bcm63xx/patches-5.4/684-board_bcm63168-sky-sr102.patch b/target/linux/bcm63xx/patches-5.4/684-board_bcm63168-sky-sr102.patch
new file mode 100644
index 0000000000..7f1fb58a32
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/684-board_bcm63168-sky-sr102.patch
@@ -0,0 +1,61 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2681,6 +2681,42 @@ static struct board_info __initdata boar
+ 		},
+ 	},
+ };
++
++static struct board_info __initdata board_BSKYB_63168 = {
++	.name = "BSKYB_63168",
++	.expected_cpu_id = 0x63268,
++
++	.has_pci = 1,
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "Port 1",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "Port 2",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "Port 3",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "Port 4",
++			},
++		},
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
+ 
+ /*
+@@ -2788,6 +2824,7 @@ static const struct board_info __initcon
+ 	&board_963268bu_p300,
+ 	&board_963269bhr,
+ 	&board_vw6339gu,
++	&board_BSKYB_63168,
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
+ };
+ 
+@@ -2904,6 +2941,7 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "brcm,bcm963268bu-p300", .data = &board_963268bu_p300, },
+ 	{ .compatible = "brcm,bcm963269bhr", .data = &board_963269bhr, },
+ 	{ .compatible = "inteno,vg50", .data = &board_vw6339gu, },
++	{ .compatible = "sky,sr102", .data = &board_BSKYB_63168, },
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
+ #endif /* CONFIG_OF */
+ 	{ },
diff --git a/target/linux/bcm63xx/patches-5.4/685-board-bcm63168-comtrend-vr-3032u.patch b/target/linux/bcm63xx/patches-5.4/685-board-bcm63168-comtrend-vr-3032u.patch
new file mode 100644
index 0000000000..af4c5388cc
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/685-board-bcm63168-comtrend-vr-3032u.patch
@@ -0,0 +1,60 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2640,6 +2640,41 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_VR3032u = {
++	.name = "963168M-1841N1",
++	.expected_cpu_id = 0x63268,
++
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[0] = {
++				.used = 1,
++				.phy_id = 1,
++				.name = "LAN2",
++			},
++			[1] = {
++				.used = 1,
++				.phy_id = 2,
++				.name = "LAN3",
++			},
++			[2] = {
++				.used = 1,
++				.phy_id = 3,
++				.name = "LAN4",
++			},
++			[3] = {
++				.used = 1,
++				.phy_id = 4,
++				.name = "LAN1",
++			},
++		},
++	},
++};
++
+ static struct board_info __initdata board_vw6339gu = {
+ 	.name = "VW6339GU",
+ 	.expected_cpu_id = 0x63268,
+@@ -2823,6 +2858,7 @@ static const struct board_info __initcon
+ #ifdef CONFIG_BCM63XX_CPU_63268
+ 	&board_963268bu_p300,
+ 	&board_963269bhr,
++	&board_VR3032u,
+ 	&board_vw6339gu,
+ 	&board_BSKYB_63168,
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
+@@ -2940,6 +2976,7 @@ static struct of_device_id const bcm963x
+ #ifdef CONFIG_BCM63XX_CPU_63268
+ 	{ .compatible = "brcm,bcm963268bu-p300", .data = &board_963268bu_p300, },
+ 	{ .compatible = "brcm,bcm963269bhr", .data = &board_963269bhr, },
++	{ .compatible = "comtrend,vr-3032u", .data = &board_VR3032u, },
+ 	{ .compatible = "inteno,vg50", .data = &board_vw6339gu, },
+ 	{ .compatible = "sky,sr102", .data = &board_BSKYB_63168, },
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
diff --git a/target/linux/bcm63xx/patches-5.4/686-board-bcm63169-comtrend-vg-8050.patch b/target/linux/bcm63xx/patches-5.4/686-board-bcm63169-comtrend-vg-8050.patch
new file mode 100644
index 0000000000..b55b4d3701
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/686-board-bcm63169-comtrend-vg-8050.patch
@@ -0,0 +1,50 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2640,6 +2640,31 @@ static struct board_info __initdata boar
+ 	},
+ };
+ 
++static struct board_info __initdata board_VG8050 = {
++	.name = "963169P-1861N5",
++	.expected_cpu_id = 0x63268,
++
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 2,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[6] = {
++				.used = 1,
++				.phy_id = 0xff,
++				.bypass_link = 1,
++				.force_speed = 1000,
++				.force_duplex_full = 1,
++				.mii_override = 1,
++				.timing_sel = 1,
++				.name = "RGMII",
++			},
++		},
++	},
++};
++
+ static struct board_info __initdata board_VR3032u = {
+ 	.name = "963168M-1841N1",
+ 	.expected_cpu_id = 0x63268,
+@@ -2858,6 +2883,7 @@ static const struct board_info __initcon
+ #ifdef CONFIG_BCM63XX_CPU_63268
+ 	&board_963268bu_p300,
+ 	&board_963269bhr,
++	&board_VG8050,
+ 	&board_VR3032u,
+ 	&board_vw6339gu,
+ 	&board_BSKYB_63168,
+@@ -2976,6 +3002,7 @@ static struct of_device_id const bcm963x
+ #ifdef CONFIG_BCM63XX_CPU_63268
+ 	{ .compatible = "brcm,bcm963268bu-p300", .data = &board_963268bu_p300, },
+ 	{ .compatible = "brcm,bcm963269bhr", .data = &board_963269bhr, },
++	{ .compatible = "comtrend,vg-8050", .data = &board_VG8050, },
+ 	{ .compatible = "comtrend,vr-3032u", .data = &board_VR3032u, },
+ 	{ .compatible = "inteno,vg50", .data = &board_vw6339gu, },
+ 	{ .compatible = "sky,sr102", .data = &board_BSKYB_63168, },
diff --git a/target/linux/bcm63xx/patches-5.4/687-board-bcm63167-sercomm-h500-s.patch b/target/linux/bcm63xx/patches-5.4/687-board-bcm63167-sercomm-h500-s.patch
new file mode 100644
index 0000000000..5bcb50672d
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.4/687-board-bcm63167-sercomm-h500-s.patch
@@ -0,0 +1,56 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -2777,6 +2777,36 @@ static struct board_info __initdata boar
+ 		},
+ 	},
+ };
++
++static struct board_info __initdata board_H500s = {
++	.name = "BXK00C-1.6",
++	.expected_cpu_id = 0x63268,
++
++	.has_ohci0 = 1,
++	.has_ehci0 = 1,
++	.num_usbh_ports = 1,
++
++	.has_enetsw = 1,
++	.enetsw = {
++		.used_ports = {
++			[3] = {
++				.used = 1,
++				.phy_id = 12,
++				.name = "WAN",
++			},
++			[4] = {
++				.used = 1,
++				.phy_id = 0,
++				.bypass_link = 1,
++				.force_speed = 1000,
++				.force_duplex_full = 1,
++				.mii_override = 1,
++				.timing_sel = 1,
++				.name = "RGMII",
++			},
++		},
++	},
++};
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
+ 
+ /*
+@@ -2887,6 +2917,7 @@ static const struct board_info __initcon
+ 	&board_VR3032u,
+ 	&board_vw6339gu,
+ 	&board_BSKYB_63168,
++	&board_H500s,
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
+ };
+ 
+@@ -3005,6 +3036,8 @@ static struct of_device_id const bcm963x
+ 	{ .compatible = "comtrend,vg-8050", .data = &board_VG8050, },
+ 	{ .compatible = "comtrend,vr-3032u", .data = &board_VR3032u, },
+ 	{ .compatible = "inteno,vg50", .data = &board_vw6339gu, },
++	{ .compatible = "sercomm,h500-s-lowi", .data = &board_H500s, },
++	{ .compatible = "sercomm,h500-s-vfes", .data = &board_H500s, },
+ 	{ .compatible = "sky,sr102", .data = &board_BSKYB_63168, },
+ #endif /* CONFIG_BCM63XX_CPU_63268 */
+ #endif /* CONFIG_OF */