sercomm,h500-s-vfes)
ucidef_set_led_netdev "wan" "WAN" "green:internet" "eth0.2"
;;
+technicolor,tg582n)
+ ucidef_set_led_netdev "wlan0" "WIFI" "green:wifi" "wlan0"
+ ucidef_set_led_usbdev "usb" "USB" "red:power" "1-1"
+ ;;
technicolor,tg582n-telecom-italia)
ucidef_set_led_netdev "wlan0" "WIFI" "green:wifi" "wlan0"
ucidef_set_led_usbdev "usb1" "USB1" "green:service" "1-1"
nucom,r5010un-v2|\
sagem,fast-2504n|\
sagem,fast-2704-v2|\
+technicolor,tg582n|\
technicolor,tg582n-telecom-italia|\
zyxel,p870hw-51a-v2)
ucidef_add_switch "switch0" \
nucom,r5010un-v2|\
observa,vh4032n|\
t-com,speedport-w-303v|\
+ technicolor,tg582n|\
technicolor,tg582n-telecom-italia|\
telsey,cpva502plus|\
telsey,cpva642|\
--- /dev/null
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Technicolor TG582n";
+ compatible = "technicolor,tg582n", "brcm,bcm6328";
+
+ aliases {
+ led-boot = &led_power_green;
+ led-failsafe = &led_power_green;
+ led-running = &led_power_green;
+ led-upgrade = &led_power_green;
+ };
+
+ chosen {
+ bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+ stdout-path = "serial0:115200n8";
+ };
+
+ keys {
+ compatible = "gpio-keys-polled";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ poll-interval = <20>;
+
+ wifi {
+ label = "wifi";
+ gpios = <&pinctrl 15 1>;
+ linux,code = <KEY_WLAN>;
+ debounce-interval = <60>;
+ };
+
+ reset {
+ label = "reset";
+ gpios = <&pinctrl 23 1>;
+ linux,code = <KEY_RESTART>;
+ debounce-interval = <60>;
+ };
+
+ wps {
+ label = "wps";
+ gpios = <&pinctrl 24 1>;
+ linux,code = <KEY_WPS_BUTTON>;
+ debounce-interval = <60>;
+ };
+ };
+};
+
+&leds {
+ status = "okay";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_leds>;
+
+ led@1 {
+ reg = <1>;
+ active-low;
+ label = "green:internet";
+ };
+
+ led@2 {
+ reg = <2>;
+ active-low;
+ label = "red:wifi";
+ };
+
+ led@3 {
+ reg = <3>;
+ active-low;
+ label = "green:wifi";
+ };
+
+ led_power_green: led@4 {
+ reg = <4>;
+ active-low;
+ label = "green:power";
+ default-state = "on";
+ };
+
+ led@5 {
+ reg = <5>;
+ active-low;
+ label = "green:ethernet";
+ };
+
+ led@7 {
+ reg = <7>;
+ active-low;
+ label = "red:internet";
+ };
+
+ led@8 {
+ reg = <8>;
+ active-low;
+ label = "red:power";
+ };
+
+ led@9 {
+ reg = <9>;
+ active-low;
+ label = "green:wps";
+ };
+
+ led@10 {
+ reg = <10>;
+ active-low;
+ label = "red:wps";
+ };
+
+ led@11 {
+ reg = <11>;
+ active-low;
+ label = "green:broadband";
+ };
+};
+
+&hsspi {
+ status = "okay";
+
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ spi-max-frequency = <16666667>;
+ spi-tx-bus-width = <2>;
+ spi-rx-bus-width = <2>;
+ reg = <0>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ reg = <0x000000 0x010000>;
+ label = "cfe";
+ read-only;
+ };
+
+ partition@10000 {
+ reg = <0x010000 0xff0000>;
+ label = "linux";
+ compatible = "brcm,bcm963xx-imagetag";
+ };
+ };
+ };
+};
+
+&pinctrl {
+ pinctrl_leds: leds {
+ function = "led";
+ pins = "gpio1", "gpio2",
+ "gpio3", "gpio4",
+ "gpio5", "gpio7",
+ "gpio8", "gpio9",
+ "gpio10", "gpio11";
+ };
+};
+
+&uart0 {
+ status = "okay";
+};
TARGET_DEVICES += t-com_speedport-w-500v
### Technicolor ###
+define Device/technicolor_tg582n
+ $(Device/bcm63xx)
+ DEVICE_VENDOR := Technicolor
+ DEVICE_MODEL := TG582n
+ IMAGES += sysupgrade.bin
+ CFE_BOARD_ID := DANT-1
+ CHIP_ID := 6328
+ FLASH_MB := 16
+ DEVICE_PACKAGES := $(USB2_PACKAGES) $(B43_PACKAGES)
+endef
+TARGET_DEVICES += technicolor_tg582n
+
define Device/technicolor_tg582n-telecom-italia
$(Device/bcm63xx)
DEVICE_VENDOR := Technicolor
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -348,6 +348,568 @@ static struct board_info __initdata boar
+@@ -348,6 +348,611 @@ static struct board_info __initdata boar
},
},
};
+ },
+};
+
++static struct board_info __initdata board_TG582N = {
++ .name = "DANT-1",
++ .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_TG582N_TELECOM_ITALIA = {
+ .name = "DANT-V",
+ .expected_cpu_id = 0x6328,
#endif /* CONFIG_BCM63XX_CPU_6328 */
/*
-@@ -703,6 +1265,18 @@ static const struct board_info __initcon
+@@ -703,6 +1308,19 @@ static const struct board_info __initcon
#endif /* CONFIG_BCM63XX_CPU_6318 */
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
+ &board_FAST2704V2,
+ &board_PDG_A4001N_A_000_1A1_AX,
+ &board_PDG_A4101N_A_000_1A1_AE,
++ &board_TG582N,
+ &board_TG582N_TELECOM_ITALIA,
+ &board_R5010UNV2,
#endif /* CONFIG_BCM63XX_CPU_6328 */
#ifdef CONFIG_BCM63XX_CPU_6338
&board_96338gw,
-@@ -742,7 +1316,21 @@ static struct of_device_id const bcm963x
+@@ -742,7 +1360,22 @@ 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 = "sagem,fast-2704-v2", .data = &board_FAST2704V2, },
+ { .compatible = "sercomm,ad1018", .data = &board_AD1018, },
+ { .compatible = "sercomm,ad1018-nor", .data = &board_AD1018, },
++ { .compatible = "technicolor,tg582n", .data = &board_TG582N, },
+ { .compatible = "technicolor,tg582n-telecom-italia", .data = &board_TG582N_TELECOM_ITALIA, },
#endif /* CONFIG_BCM63XX_CPU_6328 */
#ifdef CONFIG_BCM63XX_CPU_6338
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -943,6 +943,32 @@ static struct board_info __initdata boar
+@@ -986,6 +986,32 @@ static struct board_info __initdata boar
.force_duplex_full = 1,
},
};
#endif /* CONFIG_BCM63XX_CPU_6338 */
/*
-@@ -1281,6 +1307,8 @@ static const struct board_info __initcon
+@@ -1325,6 +1351,8 @@ static const struct board_info __initcon
#ifdef CONFIG_BCM63XX_CPU_6338
&board_96338gw,
&board_96338w,
#endif /* CONFIG_BCM63XX_CPU_6338 */
#ifdef CONFIG_BCM63XX_CPU_6345
&board_96345gw2,
-@@ -1335,6 +1363,8 @@ static struct of_device_id const bcm963x
+@@ -1380,6 +1408,8 @@ static struct of_device_id const bcm963x
#ifdef CONFIG_BCM63XX_CPU_6338
{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
{ .compatible = "brcm,bcm96338w", .data = &board_96338w, },
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -979,6 +979,19 @@ static struct board_info __initdata boar
+@@ -1022,6 +1022,19 @@ static struct board_info __initdata boar
.name = "96345GW2",
.expected_cpu_id = 0x6345,
};
#endif /* CONFIG_BCM63XX_CPU_6345 */
/*
-@@ -1312,6 +1325,7 @@ static const struct board_info __initcon
+@@ -1356,6 +1369,7 @@ static const struct board_info __initcon
#endif /* CONFIG_BCM63XX_CPU_6338 */
#ifdef CONFIG_BCM63XX_CPU_6345
&board_96345gw2,
#endif /* CONFIG_BCM63XX_CPU_6345 */
#ifdef CONFIG_BCM63XX_CPU_6348
&board_96348r,
-@@ -1368,6 +1382,8 @@ static struct of_device_id const bcm963x
+@@ -1413,6 +1427,8 @@ static struct of_device_id const bcm963x
#endif /* CONFIG_BCM63XX_CPU_6338 */
#ifdef CONFIG_BCM63XX_CPU_6345
{ .compatible = "brcm,bcm96345gw2", .data = &board_96345gw2, },
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1178,6 +1178,275 @@ static struct board_info __initdata boar
+@@ -1221,6 +1221,275 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
};
#endif /* CONFIG_BCM63XX_CPU_6348 */
/*
-@@ -1336,6 +1605,19 @@ static const struct board_info __initcon
+@@ -1380,6 +1649,19 @@ static const struct board_info __initcon
&board_DV201AMR,
&board_96348gw_a,
&board_rta1025w_16,
#endif /* CONFIG_BCM63XX_CPU_6348 */
#ifdef CONFIG_BCM63XX_CPU_6358
&board_96358vw,
-@@ -1386,15 +1668,29 @@ static struct of_device_id const bcm963x
+@@ -1431,15 +1713,29 @@ static struct of_device_id const bcm963x
{ .compatible = "dynalink,rta770w", .data = &board_rta770w, },
#endif /* CONFIG_BCM63XX_CPU_6345 */
#ifdef CONFIG_BCM63XX_CPU_6348
#include <asm/addrspace.h>
#include <bcm63xx_board.h>
#include <bcm63xx_cpu.h>
-@@ -1531,6 +1532,88 @@ static struct board_info __initdata boar
+@@ -1574,6 +1575,88 @@ static struct board_info __initdata boar
.has_ehci0 = 1,
};
static struct board_info __initdata board_DWVS0 = {
.name = "DWV-S0",
.expected_cpu_id = 0x6358,
-@@ -1555,6 +1638,238 @@ static struct board_info __initdata boar
+@@ -1598,6 +1681,238 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
.has_ehci0 = 1,
};
#endif /* CONFIG_BCM63XX_CPU_6358 */
/*
-@@ -1623,7 +1938,20 @@ static const struct board_info __initcon
+@@ -1667,7 +1982,20 @@ static const struct board_info __initcon
&board_96358vw,
&board_96358vw2,
&board_AGPFS0,
#endif /* CONFIG_BCM63XX_CPU_6358 */
};
-@@ -1698,11 +2026,24 @@ static struct of_device_id const bcm963x
+@@ -1743,11 +2071,24 @@ 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, },
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1872,6 +1872,117 @@ static struct board_info __initdata boar
+@@ -1915,6 +1915,117 @@ static struct board_info __initdata boar
};
#endif /* CONFIG_BCM63XX_CPU_6358 */
/*
* all boards
*/
-@@ -1953,6 +2064,12 @@ static const struct board_info __initcon
+@@ -1997,6 +2108,12 @@ static const struct board_info __initcon
&board_nb4_fxc_r1,
&board_spw303v,
#endif /* CONFIG_BCM63XX_CPU_6358 */
};
static struct of_device_id const bcm963xx_boards_dt[] = {
-@@ -2046,6 +2163,10 @@ static struct of_device_id const bcm963x
+@@ -2091,6 +2208,10 @@ static struct of_device_id const bcm963x
{ .compatible = "telsey,cpva642", .data = &board_CPVA642, },
#endif /* CONFIG_BCM63XX_CPU_6358 */
#ifdef CONFIG_BCM63XX_CPU_6362
#include <asm/addrspace.h>
#include <bcm63xx_board.h>
#include <bcm63xx_cpu.h>
-@@ -1984,6 +1986,648 @@ static struct board_info __initdata boar
+@@ -2027,6 +2029,648 @@ static struct board_info __initdata boar
#endif /* CONFIG_BCM63XX_CPU_6362 */
/*
* all boards
*/
static const struct board_info __initconst *bcm963xx_boards[] = {
-@@ -2070,6 +2714,22 @@ static const struct board_info __initcon
+@@ -2114,6 +2758,22 @@ static const struct board_info __initcon
&board_hg253s_v2,
&board_nb6,
#endif /* CONFIG_BCM63XX_CPU_6362 */
};
static struct of_device_id const bcm963xx_boards_dt[] = {
-@@ -2169,6 +2829,20 @@ static struct of_device_id const bcm963x
+@@ -2214,6 +2874,20 @@ 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
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2628,6 +2628,273 @@ static struct board_info __initdata boar
+@@ -2671,6 +2671,273 @@ static struct board_info __initdata boar
#endif /* CONFIG_BCM63XX_CPU_6368 */
/*
* all boards
*/
static const struct board_info __initconst *bcm963xx_boards[] = {
-@@ -2730,6 +2997,15 @@ static const struct board_info __initcon
+@@ -2774,6 +3041,15 @@ static const struct board_info __initcon
&board_VR3026e,
&board_WAP5813n,
#endif /* CONFIG_BCM63XX_CPU_6368 */
};
static struct of_device_id const bcm963xx_boards_dt[] = {
-@@ -2845,6 +3121,14 @@ static struct of_device_id const bcm963x
+@@ -2890,6 +3166,14 @@ 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
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -3157,6 +3157,22 @@ void __init board_bcm963xx_init(void)
+@@ -3202,6 +3202,22 @@ void __init board_bcm963xx_init(void)
val &= MPI_CSBASE_BASE_MASK;
}
boot_addr = (u8 *)KSEG1ADDR(val);