brcm63xx: add initial support for Netgear EVG2000
This patch adds support for the Netgear EVG2000 VoIP Gateway to the bcm63xx targets. This device was not sold to the general public, but rather is/was provided by telcos to customers in Sweden, Australia, Singapore and other parts of asia. Known issues: - Unable to detect 53115 switch. This appear to be a problem with probing for the PHY using MDIO and results in error 5. Doesn't seem to be a problem with the configuration, and could use someone with experience to have a look at it. - Uses the b43 driver as using the OpenWRT/LEDE broadcom-wl driver fails to load the firmware for the 4322, so 802.11n is not supported. More info on the device and the research can be found at: https://wiki.openwrt.org/toh/netgear/evg2000 https://wikidevi.com/wiki/Netgear_EVG2000 https://github.com/Xotic750/mirror-lede/tree/evg2000 https://forum.openwrt.org/viewtopic.php?id=63950 Signed-off-by: Graham Fairweather <xotic750@gmail.com> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
This commit is contained in:
parent
a529b41cff
commit
532c3f3218
8 changed files with 195 additions and 1 deletions
|
@ -24,6 +24,13 @@ dgnd3700v1_dgnd3800b)
|
||||||
ucidef_set_led_usbdev "usb1" "USB1" "DGND3700v1_3800B:green:usb-back" "1-1"
|
ucidef_set_led_usbdev "usb1" "USB1" "DGND3700v1_3800B:green:usb-back" "1-1"
|
||||||
ucidef_set_led_usbdev "usb2" "USB2" "DGND3700v1_3800B:green:usb-front" "1-2"
|
ucidef_set_led_usbdev "usb2" "USB2" "DGND3700v1_3800B:green:usb-front" "1-2"
|
||||||
;;
|
;;
|
||||||
|
evg2000)
|
||||||
|
ucidef_set_led_netdev "lan" "LAN" "EVG2000:green:lan" "eth0"
|
||||||
|
ucidef_set_led_netdev "wan" "WAN" "EVG2000:green:wan" "eth1"
|
||||||
|
ucidef_set_led_netdev "wlan0" "WIFI" "EVG2000:green:wireless" "wlan0"
|
||||||
|
ucidef_set_led_usbdev "usb1" "USB1" "EVG2000:green:voip1" "1-1"
|
||||||
|
ucidef_set_led_usbdev "usb2" "USB2" "EVG2000:green:voip2" "1-2"
|
||||||
|
;;
|
||||||
fast2704n)
|
fast2704n)
|
||||||
ucidef_set_led_netdev "wan" "WAN" "F@ST2704N:green:inet" "eth0.2"
|
ucidef_set_led_netdev "wan" "WAN" "F@ST2704N:green:inet" "eth0.2"
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -11,6 +11,7 @@ board_config_update
|
||||||
case "$(brcm63xx_board_name)" in
|
case "$(brcm63xx_board_name)" in
|
||||||
|
|
||||||
cvg834g |\
|
cvg834g |\
|
||||||
|
evg2000 |\
|
||||||
rta770bw |\
|
rta770bw |\
|
||||||
rta770w |\
|
rta770w |\
|
||||||
spw303v |\
|
spw303v |\
|
||||||
|
|
|
@ -70,6 +70,9 @@ set_state() {
|
||||||
dgnd3700v1_dgnd3800b)
|
dgnd3700v1_dgnd3800b)
|
||||||
status_led="DGND3700v1_3800B:green:power"
|
status_led="DGND3700v1_3800B:green:power"
|
||||||
;;
|
;;
|
||||||
|
evg2000)
|
||||||
|
status_led="EVG2000:green:power"
|
||||||
|
;;
|
||||||
fast2504n)
|
fast2504n)
|
||||||
status_led="fast2504n:green:ok"
|
status_led="fast2504n:green:ok"
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -21,6 +21,7 @@ case "$(brcm63xx_board_name)" in
|
||||||
cpva642 |\
|
cpva642 |\
|
||||||
ct-6373 |\
|
ct-6373 |\
|
||||||
dsl-274xb-f |\
|
dsl-274xb-f |\
|
||||||
|
evg2000 |\
|
||||||
hg622 |\
|
hg622 |\
|
||||||
magic |\
|
magic |\
|
||||||
p870hw-51a_v2 |\
|
p870hw-51a_v2 |\
|
||||||
|
@ -37,4 +38,3 @@ case "$(brcm63xx_board_name)" in
|
||||||
do_fixcrc
|
do_fixcrc
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
|
@ -183,6 +183,9 @@ brcm63xx_dt_detect() {
|
||||||
"Netgear DGND3700v1/DGND3800B")
|
"Netgear DGND3700v1/DGND3800B")
|
||||||
board_name="dgnd3700v1_dgnd3800b"
|
board_name="dgnd3700v1_dgnd3800b"
|
||||||
;;
|
;;
|
||||||
|
"Netgear EVG2000")
|
||||||
|
board_name="evg2000"
|
||||||
|
;;
|
||||||
"NuCom R5010UN v2")
|
"NuCom R5010UN v2")
|
||||||
board_name="r5010un_v2"
|
board_name="r5010un_v2"
|
||||||
;;
|
;;
|
||||||
|
|
103
target/linux/brcm63xx/dts/evg2000.dts
Normal file
103
target/linux/brcm63xx/dts/evg2000.dts
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
/dts-v1/;
|
||||||
|
|
||||||
|
#include "bcm6368.dtsi"
|
||||||
|
|
||||||
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "Netgear EVG2000";
|
||||||
|
compatible = "netgear,evg2000", "brcm,bcm6368";
|
||||||
|
|
||||||
|
gpio-keys-polled {
|
||||||
|
compatible = "gpio-keys-polled";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
poll-interval = <20>;
|
||||||
|
debounce-interval = <60>;
|
||||||
|
|
||||||
|
reset {
|
||||||
|
label = "reset";
|
||||||
|
gpios = <&gpio0 25 1>;
|
||||||
|
linux,code = <KEY_RESTART>;
|
||||||
|
};
|
||||||
|
wps {
|
||||||
|
label = "wps";
|
||||||
|
gpios = <&gpio0 26 1>;
|
||||||
|
linux,code = <KEY_WPS_BUTTON>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio-leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
|
voip1_green {
|
||||||
|
label = "EVG2000:green:voip1";
|
||||||
|
gpios = <&gpio0 14 1>;
|
||||||
|
};
|
||||||
|
voip2_green {
|
||||||
|
label = "EVG2000:green:voip2";
|
||||||
|
gpios = <&gpio0 2 1>;
|
||||||
|
};
|
||||||
|
inet_red {
|
||||||
|
label = "EVG2000:red:inet";
|
||||||
|
gpios = <&gpio0 4 1>;
|
||||||
|
};
|
||||||
|
inet_green {
|
||||||
|
label = "EVG2000:green:inet";
|
||||||
|
gpios = <&gpio0 5 1>;
|
||||||
|
};
|
||||||
|
usb_green {
|
||||||
|
label = "EVG2000:green:usb";
|
||||||
|
gpios = <&gpio0 15 1>;
|
||||||
|
};
|
||||||
|
power_green {
|
||||||
|
label = "EVG2000:green:power";
|
||||||
|
gpios = <&gpio0 22 1>;
|
||||||
|
default-state = "on";
|
||||||
|
};
|
||||||
|
power_red {
|
||||||
|
label = "EVG2000:red:power";
|
||||||
|
gpios = <&gpio0 23 1>;
|
||||||
|
};
|
||||||
|
lan_green {
|
||||||
|
label = "EVG2000:green:lan";
|
||||||
|
gpios = <&gpio0 24 1>;
|
||||||
|
};
|
||||||
|
wireless_green {
|
||||||
|
label = "EVG2000:green:wireless";
|
||||||
|
gpios = <&gpio0 26 1>;
|
||||||
|
};
|
||||||
|
wan_green {
|
||||||
|
label = "EVG2000:green:wan";
|
||||||
|
gpios = <&gpio0 27 1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&pflash {
|
||||||
|
status = "ok";
|
||||||
|
|
||||||
|
linux,part-probe = "bcm63xxpart";
|
||||||
|
|
||||||
|
cfe@0 {
|
||||||
|
label = "CFE";
|
||||||
|
reg = <0x00000000 0x00020000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
linux@20000 {
|
||||||
|
label = "linux";
|
||||||
|
reg = <0x00020000 0x00f40000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
board_data@f60000 {
|
||||||
|
label = "board_data";
|
||||||
|
reg = <0x00f60000 0x00080000>;
|
||||||
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
|
nvram@fe0000 {
|
||||||
|
label = "nvram";
|
||||||
|
reg = <0x00fe0000 0x00020000>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -769,6 +769,21 @@ define Device/DGND3800B
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += DGND3800B
|
TARGET_DEVICES += DGND3800B
|
||||||
|
|
||||||
|
define Device/EVG2000
|
||||||
|
$(Device/bcm63xx_netgear)
|
||||||
|
IMAGES := factory.chk sysupgrade.bin
|
||||||
|
DEVICE_TITLE := Netgear EVG2000
|
||||||
|
DEVICE_DTS := evg2000
|
||||||
|
CFE_BOARD_ID := 96369PVG
|
||||||
|
CFE_CHIP_ID := 6368
|
||||||
|
CFE_EXTRAS := --image-offset 0x20000 --block-size 0x20000
|
||||||
|
NETGEAR_BOARD_ID := U12H154T90_NETGEAR
|
||||||
|
NETGEAR_REGION := 1
|
||||||
|
DEVICE_PACKAGES := \
|
||||||
|
$(B43_PACKAGES) $(USB2_PACKAGES)
|
||||||
|
endef
|
||||||
|
TARGET_DEVICES += EVG2000
|
||||||
|
|
||||||
### NuCom ###
|
### NuCom ###
|
||||||
define Device/R5010UNv2
|
define Device/R5010UNv2
|
||||||
$(Device/bcm63xx)
|
$(Device/bcm63xx)
|
||||||
|
|
62
target/linux/brcm63xx/patches-4.4/575-board_EVG2000.patch
Normal file
62
target/linux/brcm63xx/patches-4.4/575-board_EVG2000.patch
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
||||||
|
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
||||||
|
@@ -2014,6 +2014,43 @@ static struct board_info __initdata boar
|
||||||
|
.num_spis = ARRAY_SIZE(DGND3700v1_3800B_spi_devices),
|
||||||
|
};
|
||||||
|
|
||||||
|
+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_uart0 = 1,
|
||||||
|
+ .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,
|
||||||
|
@@ -2614,6 +2651,7 @@ static const struct board_info __initcon
|
||||||
|
&board_96368mvwg,
|
||||||
|
&board_96368mvngr,
|
||||||
|
&board_DGND3700v1_3800B,
|
||||||
|
+ &board_EVG2000,
|
||||||
|
&board_HG622,
|
||||||
|
&board_HG655b,
|
||||||
|
&board_P870HW51A_V2,
|
||||||
|
@@ -2726,6 +2764,7 @@ static struct of_device_id const bcm963x
|
||||||
|
{ .compatible = "huawei,hg622", .data = &board_HG622, },
|
||||||
|
{ .compatible = "huawei,hg655b", .data = &board_HG655b, },
|
||||||
|
{ .compatible = "netgear,dgnd3700v1", .data = &board_DGND3700v1_3800B, },
|
||||||
|
+ { .compatible = "netgear,evg2000", .data = &board_EVG2000, },
|
||||||
|
{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_BCM63XX_CPU_63268
|
Loading…
Reference in a new issue