From 78f253f9b10fe2cea7e8a6b8e792523ba05bad77 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Sun, 30 Aug 2015 12:17:46 +0000 Subject: [PATCH] brcm63xx: add Comtrend VR-3026e support Add support for Comtrend VR-3026e v1. The device is almost identical to the Comtrend VR-3025un. Signed-off-by: Martin Tesar Signed-off-by: Jonas Gorski SVN-Revision: 46752 --- target/linux/brcm63xx/base-files/etc/diag.sh | 3 + .../base-files/etc/uci-defaults/02_network | 3 +- .../base-files/etc/uci-defaults/09_fix_crc | 1 + .../linux/brcm63xx/base-files/lib/brcm63xx.sh | 3 + .../lib/preinit/05_init_interfaces_brcm63xx | 1 + target/linux/brcm63xx/dts/vr-3026e.dts | 88 +++++++++++++++++++ target/linux/brcm63xx/image/Makefile | 2 + .../patches-3.18/572-board_VR-3026e.patch | 79 +++++++++++++++++ .../patches-4.1/572-board_VR-3026e.patch | 79 +++++++++++++++++ target/linux/brcm63xx/profiles/comtrend.mk | 9 ++ 10 files changed, 267 insertions(+), 1 deletion(-) create mode 100644 target/linux/brcm63xx/dts/vr-3026e.dts create mode 100644 target/linux/brcm63xx/patches-3.18/572-board_VR-3026e.patch create mode 100644 target/linux/brcm63xx/patches-4.1/572-board_VR-3026e.patch diff --git a/target/linux/brcm63xx/base-files/etc/diag.sh b/target/linux/brcm63xx/base-files/etc/diag.sh index 7916ac26e2..7826fada10 100644 --- a/target/linux/brcm63xx/base-files/etc/diag.sh +++ b/target/linux/brcm63xx/base-files/etc/diag.sh @@ -39,6 +39,9 @@ set_state() { vr-3025u) status_led="VR-3025u:green:power" ;; + vr-3026e) + status_led="VR-3026e:green:power" + ;; wap-5813n) status_led="WAP-5813n:green:power" ;; diff --git a/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network b/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network index 11dd5b8d7b..129514b9b6 100644 --- a/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network +++ b/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network @@ -95,7 +95,8 @@ fast2704v2 |\ hg655b |\ p870hw-51a_v2 |\ vr-3025un |\ -vr-3025u) +vr-3025u |\ +vr-3026e) ucidef_set_interface_lan "eth0.1" ucidef_add_switch "eth0" "1" "1" ucidef_add_switch_vlan "eth0" "1" "0 1 2 3 8t" 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 4a167dc297..f307a4cabe 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 @@ -30,6 +30,7 @@ case "$(brcm63xx_board_name)" in v2500v_bb |\ vr-3025u |\ vr-3025un |\ + vr-3026e |\ wap-5813n) do_fixcrc ;; diff --git a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh index 92fa5f2bdb..1a97c86d6f 100755 --- a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh +++ b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh @@ -102,6 +102,9 @@ brcm63xx_dt_detect() { "Comtrend VR-3025un") board_name="vr-3025un" ;; + "Comtrend VR-3026e") + board_name="vr-3026e" + ;; "Comtrend WAP-5813n") board_name="wap-5813n" ;; diff --git a/target/linux/brcm63xx/base-files/lib/preinit/05_init_interfaces_brcm63xx b/target/linux/brcm63xx/base-files/lib/preinit/05_init_interfaces_brcm63xx index d6ec53752a..abf5b89c57 100644 --- a/target/linux/brcm63xx/base-files/lib/preinit/05_init_interfaces_brcm63xx +++ b/target/linux/brcm63xx/base-files/lib/preinit/05_init_interfaces_brcm63xx @@ -32,6 +32,7 @@ set_preinit_iface() { v2110 |\ vr-3025un |\ vr-3025u |\ + vr-3026e |\ wap-5813n) ifname=eth0 ;; diff --git a/target/linux/brcm63xx/dts/vr-3026e.dts b/target/linux/brcm63xx/dts/vr-3026e.dts new file mode 100644 index 0000000000..49790e224d --- /dev/null +++ b/target/linux/brcm63xx/dts/vr-3026e.dts @@ -0,0 +1,88 @@ +/dts-v1/; + +#include "bcm6368.dtsi" + +#include + +/ { + model = "Comtrend VR-3026e"; + compatible = "comtrend,vr-3026e", "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 = <&gpio1 2 1>; + linux,code = ; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + dsl_green { + label = "VR-3026e:green:dsl"; + gpios = <&gpio0 2 1>; + }; + inet_green { + label = "VR-3026e:green:inet"; + gpios = <&gpio0 5 0>; + }; + lan1_green { + label = "VR-3026e:green:lan1"; + gpios = <&gpio0 6 1>; + }; + lan2_green { + label = "VR-3026e:green:lan2"; + gpios = <&gpio0 7 1>; + }; + lan3_green { + label = "VR-3026e:green:lan3"; + gpios = <&gpio0 8 1>; + }; + lan4_green { + label = "VR-3026e:green:lan4"; + gpios = <&gpio0 9 1>; + }; + power_green { + label = "VR-3026e:green:power"; + gpios = <&gpio0 22 0>; + default-state = "on"; + }; + power_red { + label = "VR-3026e:red:power"; + gpios = <&gpio0 24 0>; + }; + inet_red { + label = "VR-3026e:red:inet"; + gpios = <&gpio0 31 0>; + }; + }; +}; + +&pflash { + status = "ok"; + + linux,part-probe = "bcm63xxpart"; + + cfe@0 { + label = "CFE"; + reg = <0x000000 0x010000>; + read-only; + }; + + linux@10000 { + label = "linux"; + reg = <0x010000 0x7e0000>; + }; + + nvram@7f0000 { + label = "nvram"; + reg = <0x7f0000 0x010000>; + }; +}; diff --git a/target/linux/brcm63xx/image/Makefile b/target/linux/brcm63xx/image/Makefile index 90b9fa68eb..9d3ec9fd00 100755 --- a/target/linux/brcm63xx/image/Makefile +++ b/target/linux/brcm63xx/image/Makefile @@ -535,6 +535,8 @@ $(eval $(call bcm63xxCfe,CT6373,CT-6373,ct-6373,CT6373-1,6358)) $(eval $(call bcm63xxCfe,VR3025u,VR-3025u,vr-3025u,96368M-1541N,6368,--pad 16 --image-offset 0x20000 --block-size 0x20000)) # Comtrend VR-3025un $(eval $(call bcm63xxCfe,VR3025un,VR-3025un,vr-3025un,96368M-1341N,6368,--pad 4)) +# Comtrend VR-3026e +$(eval $(call bcm63xxCfe,VR3026e,VR-3026e,vr-3026e,96368MT-1341N1,6368,--pad 4)) # Comtrend WAP-5813n $(eval $(call bcm63xxCfe,WAP5813n,WAP-5813n,wap-5813n,96369R-1231N,6368,--pad 4)) # D-Link DSL-2640B, rev B2 diff --git a/target/linux/brcm63xx/patches-3.18/572-board_VR-3026e.patch b/target/linux/brcm63xx/patches-3.18/572-board_VR-3026e.patch new file mode 100644 index 0000000000..260602adca --- /dev/null +++ b/target/linux/brcm63xx/patches-3.18/572-board_VR-3026e.patch @@ -0,0 +1,79 @@ +--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c ++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +@@ -2168,6 +2168,60 @@ 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_uart0 = 1, ++ .has_pci = 1, ++ .use_fallback_sprom = 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", ++ }, ++ }, ++ }, ++ ++ .fallback_sprom = { ++ .type = SPROM_BCM43222, ++ .pci_bus = 0, ++ .pci_dev = 1, ++ .board_fixups = vr3026e_fixups, ++ .num_board_fixups = ARRAY_SIZE(vr3026e_fixups), ++ }, ++}; ++ + static struct b53_platform_data WAP5813n_b53_pdata = { + .alias = "eth0", + }; +@@ -2472,6 +2526,7 @@ static const struct board_info __initcon + &board_P870HW51A_V2, + &board_VR3025u, + &board_VR3025un, ++ &board_VR3026e, + &board_WAP5813n, + #endif + #ifdef CONFIG_BCM63XX_CPU_63268 +@@ -2572,6 +2627,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,hg655b", .data = &board_HG655b, }, + { .compatible = "netgear,dgnd3700v1", .data = &board_DGND3700v1_3800B, }, diff --git a/target/linux/brcm63xx/patches-4.1/572-board_VR-3026e.patch b/target/linux/brcm63xx/patches-4.1/572-board_VR-3026e.patch new file mode 100644 index 0000000000..260602adca --- /dev/null +++ b/target/linux/brcm63xx/patches-4.1/572-board_VR-3026e.patch @@ -0,0 +1,79 @@ +--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c ++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +@@ -2168,6 +2168,60 @@ 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_uart0 = 1, ++ .has_pci = 1, ++ .use_fallback_sprom = 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", ++ }, ++ }, ++ }, ++ ++ .fallback_sprom = { ++ .type = SPROM_BCM43222, ++ .pci_bus = 0, ++ .pci_dev = 1, ++ .board_fixups = vr3026e_fixups, ++ .num_board_fixups = ARRAY_SIZE(vr3026e_fixups), ++ }, ++}; ++ + static struct b53_platform_data WAP5813n_b53_pdata = { + .alias = "eth0", + }; +@@ -2472,6 +2526,7 @@ static const struct board_info __initcon + &board_P870HW51A_V2, + &board_VR3025u, + &board_VR3025un, ++ &board_VR3026e, + &board_WAP5813n, + #endif + #ifdef CONFIG_BCM63XX_CPU_63268 +@@ -2572,6 +2627,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,hg655b", .data = &board_HG655b, }, + { .compatible = "netgear,dgnd3700v1", .data = &board_DGND3700v1_3800B, }, diff --git a/target/linux/brcm63xx/profiles/comtrend.mk b/target/linux/brcm63xx/profiles/comtrend.mk index 8c1b8628a6..99fec4a6b8 100644 --- a/target/linux/brcm63xx/profiles/comtrend.mk +++ b/target/linux/brcm63xx/profiles/comtrend.mk @@ -73,6 +73,15 @@ define Profile/VR3025un/Description endef $(eval $(call Profile,VR3025un)) +define Profile/VR3026e + NAME:=Comtrend VR-3026e + PACKAGES:=kmod-b43 wpad-mini +endef +define Profile/VR3026e/Description + Package set optimized for VR-3026e. +endef +$(eval $(call Profile,VR3026e)) + define Profile/WAP5813n NAME:=Comtrend WAP-5813n PACKAGES:=kmod-b43 wpad-mini \ -- 2.25.1