Message ID | 1902864.btfF0qI7S1@tool |
---|---|
State | Superseded |
Headers | show |
Hi, On Tue, Dec 1, 2015 at 11:40 AM, dani <dgcbueu@gmail.com> wrote: > This patch adds support for the NuCom R5010UNv2. > > It's a BCM6328 based board. It has an onboard BCM43217 wifi chip. For this > wifi chip looks like the brcmsmac driver isn't still supported, b43 drivers are used > for the profile of the router. > > It's worth mentioning this board was affected by a bug solved with > https://dev.openwrt.org/changeset/46707 > > Tested-by: Angel Fontan <angel.fontan@gmail.com> > Signed-off-by: Daniel Gonzalez <dgcbueu@gmail.com> > --- > change in v2: > usb led trigger was wrong > added 8 MB padding to the image generator because its CFE has double image protection > added colors naming to the leds in dts file to meet the same layout of other boards > --- > diff --git a/target/linux/brcm63xx/base-files/etc/diag.sh b/target/linux/brcm63xx/base-files/etc/diag.sh > index 7826fad..c0fb31e 100644 > --- a/target/linux/brcm63xx/base-files/etc/diag.sh > +++ b/target/linux/brcm63xx/base-files/etc/diag.sh > @@ -102,6 +102,9 @@ set_state() { > p870hw-51a_v2) > status_led="P870HW-51a:green:power" > ;; > + r5010un_v2) > + status_led="96328ang:green:power" > + ;; > rta770bw) > status_led="RTA770BW:green:diag" > ;; > diff --git a/target/linux/brcm63xx/base-files/etc/uci-defaults/01_leds b/target/linux/brcm63xx/base-files/etc/uci-defaults/01_leds > index bdb3dad..34d5c51 100644 > --- a/target/linux/brcm63xx/base-files/etc/uci-defaults/01_leds > +++ b/target/linux/brcm63xx/base-files/etc/uci-defaults/01_leds > @@ -46,6 +46,9 @@ homehub2a) > ucidef_set_led_usbdev "usb1" "USB1" "HOMEHUB2A:blue:phone" "1-1" > ucidef_set_led_usbdev "usb2" "USB2" "HOMEHUB2A:green:phone" "2-1" > ;; > +r5010un_v2) > + ucidef_set_led_usbdev "usb" "USB" "96328ang:green:usb" "1-1" > + ;; > esac > > ucidef_commit_leds > 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 129514b..70f18cb 100644 > --- a/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network > +++ b/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network > @@ -94,6 +94,7 @@ fast2504n |\ > fast2704v2 |\ > hg655b |\ > p870hw-51a_v2 |\ > +r5010un_v2 |\ > vr-3025un |\ > vr-3025u |\ > vr-3026e) > 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 f307a4c..bc9ae21 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 > @@ -23,6 +23,7 @@ case "$(brcm63xx_board_name)" in > dsl-274xb-f |\ > magic |\ > p870hw-51a_v2 |\ > + r5010un_v2 |\ > rta770bw |\ > rta770w |\ > spw303v |\ > diff --git a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh > index 1a97c86..7dc57fd 100755 > --- a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh > +++ b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh > @@ -180,6 +180,9 @@ brcm63xx_dt_detect() { > "Netgear DGND3700v1/DGND3800B") > board_name="dgnd3700v1_dgnd3800b" > ;; > + "NuCom R5010UN v2") > + board_name="r5010un_v2" > + ;; > "Pirelli A226G") > board_name="a226g" > ;; > diff --git a/target/linux/brcm63xx/dts/r5010unv2.dts b/target/linux/brcm63xx/dts/r5010unv2.dts > new file mode 100644 > index 0000000..8c83483 > --- /dev/null > +++ b/target/linux/brcm63xx/dts/r5010unv2.dts > @@ -0,0 +1,64 @@ > +/dts-v1/; > + > +#include "bcm6328.dtsi" > + > +#include <dt-bindings/input/input.h> > + > +/ { > + model = "NuCom R5010UN v2"; > + compatible = "nucom,r5010unv2", "brcm,bcm6328"; > + > + gpio-keys-polled { > + compatible = "gpio-keys-polled"; > + #address-cells = <1>; > + #size-cells = <0>; > + poll-interval = <20>; > + debounce-interval = <60>; > + > + reset { > + label = "reset"; > + gpios = <&gpio0 23 1>; > + linux,code = <KEY_RESTART>; > + }; > + wps { > + label = "wps"; > + gpios = <&gpio0 24 1>; > + linux,code = <KEY_WPS_BUTTON>; > + }; > + }; > + > + gpio-leds { > + compatible = "gpio-leds"; > + > + inet_green { > + label = "96328ang:green:inet"; Please use the device name, not the boardid. > + gpios = <&gpio0 1 1>; > + }; > + inet_fail_red { > + label = "96328ang:red:inet-fail"; > + gpios = <&gpio0 2 1>; > + }; > + dsl_red { > + label = "96328ang:green:dsl"; > + gpios = <&gpio0 3 1>; > + }; > + power_green { > + label = "96328ang:green:power"; > + gpios = <&gpio0 4 1>; > + default-state = "on"; > + }; > + power_fail_red { > + label = "96328ang:red:power-fail"; > + gpios = <&gpio0 5 1>; > + }; > + wps_green { > + label = "96328ang:green:wps"; > + gpios = <&gpio0 10 1>; > + }; > + usb_green { > + label = "96328ang:green:usb"; > + gpios = <&gpio0 11 1>; > + }; > + }; > +}; > + Jonas
diff --git a/target/linux/brcm63xx/base-files/etc/diag.sh b/target/linux/brcm63xx/base-files/etc/diag.sh index 7826fad..c0fb31e 100644 --- a/target/linux/brcm63xx/base-files/etc/diag.sh +++ b/target/linux/brcm63xx/base-files/etc/diag.sh @@ -102,6 +102,9 @@ set_state() { p870hw-51a_v2) status_led="P870HW-51a:green:power" ;; + r5010un_v2) + status_led="96328ang:green:power" + ;; rta770bw) status_led="RTA770BW:green:diag" ;; diff --git a/target/linux/brcm63xx/base-files/etc/uci-defaults/01_leds b/target/linux/brcm63xx/base-files/etc/uci-defaults/01_leds index bdb3dad..34d5c51 100644 --- a/target/linux/brcm63xx/base-files/etc/uci-defaults/01_leds +++ b/target/linux/brcm63xx/base-files/etc/uci-defaults/01_leds @@ -46,6 +46,9 @@ homehub2a) ucidef_set_led_usbdev "usb1" "USB1" "HOMEHUB2A:blue:phone" "1-1" ucidef_set_led_usbdev "usb2" "USB2" "HOMEHUB2A:green:phone" "2-1" ;; +r5010un_v2) + ucidef_set_led_usbdev "usb" "USB" "96328ang:green:usb" "1-1" + ;; esac ucidef_commit_leds 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 129514b..70f18cb 100644 --- a/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network +++ b/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network @@ -94,6 +94,7 @@ fast2504n |\ fast2704v2 |\ hg655b |\ p870hw-51a_v2 |\ +r5010un_v2 |\ vr-3025un |\ vr-3025u |\ vr-3026e) 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 f307a4c..bc9ae21 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 @@ -23,6 +23,7 @@ case "$(brcm63xx_board_name)" in dsl-274xb-f |\ magic |\ p870hw-51a_v2 |\ + r5010un_v2 |\ rta770bw |\ rta770w |\ spw303v |\ diff --git a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh index 1a97c86..7dc57fd 100755 --- a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh +++ b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh @@ -180,6 +180,9 @@ brcm63xx_dt_detect() { "Netgear DGND3700v1/DGND3800B") board_name="dgnd3700v1_dgnd3800b" ;; + "NuCom R5010UN v2") + board_name="r5010un_v2" + ;; "Pirelli A226G") board_name="a226g" ;; diff --git a/target/linux/brcm63xx/dts/r5010unv2.dts b/target/linux/brcm63xx/dts/r5010unv2.dts new file mode 100644 index 0000000..8c83483 --- /dev/null +++ b/target/linux/brcm63xx/dts/r5010unv2.dts @@ -0,0 +1,64 @@ +/dts-v1/; + +#include "bcm6328.dtsi" + +#include <dt-bindings/input/input.h> + +/ { + model = "NuCom R5010UN v2"; + compatible = "nucom,r5010unv2", "brcm,bcm6328"; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <20>; + debounce-interval = <60>; + + reset { + label = "reset"; + gpios = <&gpio0 23 1>; + linux,code = <KEY_RESTART>; + }; + wps { + label = "wps"; + gpios = <&gpio0 24 1>; + linux,code = <KEY_WPS_BUTTON>; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + inet_green { + label = "96328ang:green:inet"; + gpios = <&gpio0 1 1>; + }; + inet_fail_red { + label = "96328ang:red:inet-fail"; + gpios = <&gpio0 2 1>; + }; + dsl_red { + label = "96328ang:green:dsl"; + gpios = <&gpio0 3 1>; + }; + power_green { + label = "96328ang:green:power"; + gpios = <&gpio0 4 1>; + default-state = "on"; + }; + power_fail_red { + label = "96328ang:red:power-fail"; + gpios = <&gpio0 5 1>; + }; + wps_green { + label = "96328ang:green:wps"; + gpios = <&gpio0 10 1>; + }; + usb_green { + label = "96328ang:green:usb"; + gpios = <&gpio0 11 1>; + }; + }; +}; + diff --git a/target/linux/brcm63xx/image/Makefile b/target/linux/brcm63xx/image/Makefile index 9581116..06b9000 100644 --- a/target/linux/brcm63xx/image/Makefile +++ b/target/linux/brcm63xx/image/Makefile @@ -590,6 +590,8 @@ $(eval $(call bcm63xxCfeRamdisk,DG834GV4,DG834GTv4,dg834g_v4,96348W3,6348)) $(eval $(call bcm63xxCfeNetgear,DGND3700v1_3800B,DGND3700v1,dgnd3700v1,96368MVWG,6368,--image-offset 0x20000 --block-size 0x20000,U12L144T01_NETGEAR_NEWLED,1)) # Netgear DGND3800B $(eval $(call bcm63xxCfeNetgear,DGND3700v1_3800B,DGND3800B,dgnd3700v1,96368MVWG,6368,--image-offset 0x20000 --block-size 0x20000,U12L144T11_NETGEAR_NEWLED,1)) +# NuCom R5010UNv2 +$(eval $(call bcm63xxCfe,R5010UNV2,R5010UNv2,r5010unv2,96328ang,6328,--pad 8)) # Pirelli Alice Gate VoIP 2 Plus Wi-Fi AGPF-S0 $(eval $(call bcm63xxCfe,AGPF_S0,AGV2+W,agpf-s0,AGPF-S0,6358,--block-size 0x20000 --image-offset 0x20000 --signature2 IMAGE --tag-version 8)) # Pirelli A226G diff --git a/target/linux/brcm63xx/patches-4.1/573-board_R5010UNv2.patch b/target/linux/brcm63xx/patches-4.1/573-board_R5010UNv2.patch new file mode 100644 index 0000000..cf5a719 --- /dev/null +++ b/target/linux/brcm63xx/patches-4.1/573-board_R5010UNv2.patch @@ -0,0 +1,70 @@ +--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c ++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +@@ -641,6 +641,51 @@ + }, + }, + }; ++ ++static struct board_info __initdata board_R5010UNV2 = { ++ .name = "96328ang", ++ .expected_cpu_id = 0x6328, ++ ++ .has_uart0 = 1, ++ .has_pci = 1, ++ .use_fallback_sprom = 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", ++ }, ++ }, ++ }, ++ ++ .fallback_sprom = { ++ .type = SPROM_BCM43217, ++ .pci_bus = 1, ++ .pci_dev = 0, ++ }, ++}; ++ + #endif /* CONFIG_BCM63XX_CPU_6328 */ + + /* +@@ -2452,6 +2497,7 @@ + &board_A4001N1, + &board_dsl_274xb_f1, + &board_FAST2704V2, ++ &board_R5010UNV2, + #endif + #ifdef CONFIG_BCM63XX_CPU_6338 + &board_96338gw, +@@ -2550,6 +2596,7 @@ + { .compatible = "comtrend,ar-5381u", .data = &board_AR5381u, }, + { .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, }, + { .compatible = "d-link,dsl-274xb-f", .data = &board_dsl_274xb_f1, }, ++ { .compatible = "nucom,r5010unv2", .data = &board_R5010UNV2, }, + { .compatible = "sagem,f@st2704v2", .data = &board_FAST2704V2, }, + #endif + #ifdef CONFIG_BCM63XX_CPU_6338 diff --git a/target/linux/brcm63xx/profiles/nucom.mk b/target/linux/brcm63xx/profiles/nucom.mk new file mode 100644 index 0000000..2cd8801 --- /dev/null +++ b/target/linux/brcm63xx/profiles/nucom.mk @@ -0,0 +1,16 @@ +# +# Copyright (C) 2015 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define Profile/R5010UNV2 + NAME:=NuCom R5010UN v2 + PACKAGES:=kmod-b43 wpad-mini \ + kmod-usb2 kmod-usb-ohci kmod-ledtrig-usbdev +endef +define Profile/R5010UNV2/Description + Package set optimized for R5010UNV2. +endef +$(eval $(call Profile,R5010UNV2))