diff options
author | Graham 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 |
commit | 532c3f3218ef97a12e7a178207031e4feac593ff (patch) | |
tree | 056249019783cd62b18b0c092bc0b103f1f4b836 /target | |
parent | a529b41cffaad2b73cdd75bbb7a9f2551319d230 (diff) | |
download | mtk-20170518-532c3f3218ef97a12e7a178207031e4feac593ff.zip mtk-20170518-532c3f3218ef97a12e7a178207031e4feac593ff.tar.gz mtk-20170518-532c3f3218ef97a12e7a178207031e4feac593ff.tar.bz2 |
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>
Diffstat (limited to 'target')
-rwxr-xr-x | target/linux/brcm63xx/base-files/etc/board.d/01_leds | 7 | ||||
-rwxr-xr-x | target/linux/brcm63xx/base-files/etc/board.d/02_network | 1 | ||||
-rw-r--r-- | target/linux/brcm63xx/base-files/etc/diag.sh | 3 | ||||
-rw-r--r-- | target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc | 2 | ||||
-rwxr-xr-x | target/linux/brcm63xx/base-files/lib/brcm63xx.sh | 3 | ||||
-rw-r--r-- | target/linux/brcm63xx/dts/evg2000.dts | 103 | ||||
-rw-r--r-- | target/linux/brcm63xx/image/bcm63xx.mk | 15 | ||||
-rw-r--r-- | target/linux/brcm63xx/patches-4.4/575-board_EVG2000.patch | 62 |
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 8339254..4163214 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 f96da08..83367c1 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 b864964..6ac2459 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 70dbe2a..1201168 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 a2d6519..9cc0b2b 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 0000000..cf324b2 --- /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 1484673..24cf085 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 0000000..361bd04 --- /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 |