aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGraham Fairweather <xotic750@gmail.com>2016-05-23 00:56:23 +0200
committerÁlvaro Fernández Rojas <noltari@gmail.com>2016-06-03 16:45:08 +0200
commit532c3f3218ef97a12e7a178207031e4feac593ff (patch)
tree056249019783cd62b18b0c092bc0b103f1f4b836
parenta529b41cffaad2b73cdd75bbb7a9f2551319d230 (diff)
downloadupstream-532c3f3218ef97a12e7a178207031e4feac593ff.tar.gz
upstream-532c3f3218ef97a12e7a178207031e4feac593ff.tar.bz2
upstream-532c3f3218ef97a12e7a178207031e4feac593ff.zip
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>
-rwxr-xr-xtarget/linux/brcm63xx/base-files/etc/board.d/01_leds7
-rwxr-xr-xtarget/linux/brcm63xx/base-files/etc/board.d/02_network1
-rw-r--r--target/linux/brcm63xx/base-files/etc/diag.sh3
-rw-r--r--target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc2
-rwxr-xr-xtarget/linux/brcm63xx/base-files/lib/brcm63xx.sh3
-rw-r--r--target/linux/brcm63xx/dts/evg2000.dts103
-rw-r--r--target/linux/brcm63xx/image/bcm63xx.mk15
-rw-r--r--target/linux/brcm63xx/patches-4.4/575-board_EVG2000.patch62
8 files changed, 195 insertions, 1 deletions
diff --git a/target/linux/brcm63xx/base-files/etc/board.d/01_leds b/target/linux/brcm63xx/base-files/etc/board.d/01_leds
index 8339254b75..4163214732 100755
--- a/target/linux/brcm63xx/base-files/etc/board.d/01_leds
+++ b/target/linux/brcm63xx/base-files/etc/board.d/01_leds
@@ -24,6 +24,13 @@ dgnd3700v1_dgnd3800b)
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"
;;
+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)
ucidef_set_led_netdev "wan" "WAN" "F@ST2704N:green:inet" "eth0.2"
;;
diff --git a/target/linux/brcm63xx/base-files/etc/board.d/02_network b/target/linux/brcm63xx/base-files/etc/board.d/02_network
index f96da088f2..83367c1997 100755
--- a/target/linux/brcm63xx/base-files/etc/board.d/02_network
+++ b/target/linux/brcm63xx/base-files/etc/board.d/02_network
@@ -11,6 +11,7 @@ board_config_update
case "$(brcm63xx_board_name)" in
cvg834g |\
+evg2000 |\
rta770bw |\
rta770w |\
spw303v |\
diff --git a/target/linux/brcm63xx/base-files/etc/diag.sh b/target/linux/brcm63xx/base-files/etc/diag.sh
index b8649646e4..6ac2459c92 100644
--- a/target/linux/brcm63xx/base-files/etc/diag.sh
+++ b/target/linux/brcm63xx/base-files/etc/diag.sh
@@ -70,6 +70,9 @@ set_state() {
dgnd3700v1_dgnd3800b)
status_led="DGND3700v1_3800B:green:power"
;;
+ evg2000)
+ status_led="EVG2000:green:power"
+ ;;
fast2504n)
status_led="fast2504n:green:ok"
;;
diff --git a/target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc b/target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc
index 70dbe2a837..1201168feb 100644
--- a/target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc
+++ b/target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc
@@ -21,6 +21,7 @@ case "$(brcm63xx_board_name)" in
cpva642 |\
ct-6373 |\
dsl-274xb-f |\
+ evg2000 |\
hg622 |\
magic |\
p870hw-51a_v2 |\
@@ -37,4 +38,3 @@ case "$(brcm63xx_board_name)" in
do_fixcrc
;;
esac
-
diff --git a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh
index a2d6519aa2..9cc0b2b570 100755
--- a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh
+++ b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh
@@ -183,6 +183,9 @@ brcm63xx_dt_detect() {
"Netgear DGND3700v1/DGND3800B")
board_name="dgnd3700v1_dgnd3800b"
;;
+ "Netgear EVG2000")
+ board_name="evg2000"
+ ;;
"NuCom R5010UN v2")
board_name="r5010un_v2"
;;
diff --git a/target/linux/brcm63xx/dts/evg2000.dts b/target/linux/brcm63xx/dts/evg2000.dts
new file mode 100644
index 0000000000..cf324b2c5d
--- /dev/null
+++ b/target/linux/brcm63xx/dts/evg2000.dts
@@ -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>;
+ };
+};
diff --git a/target/linux/brcm63xx/image/bcm63xx.mk b/target/linux/brcm63xx/image/bcm63xx.mk
index 148467375f..24cf085bf7 100644
--- a/target/linux/brcm63xx/image/bcm63xx.mk
+++ b/target/linux/brcm63xx/image/bcm63xx.mk
@@ -769,6 +769,21 @@ define Device/DGND3800B
endef
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 ###
define Device/R5010UNv2
$(Device/bcm63xx)
diff --git a/target/linux/brcm63xx/patches-4.4/575-board_EVG2000.patch b/target/linux/brcm63xx/patches-4.4/575-board_EVG2000.patch
new file mode 100644
index 0000000000..361bd04d43
--- /dev/null
+++ b/target/linux/brcm63xx/patches-4.4/575-board_EVG2000.patch
@@ -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