diff --git a/target/linux/brcm63xx/base-files/etc/diag.sh b/target/linux/brcm63xx/base-files/etc/diag.sh index 7826fada10..b8649646e4 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="R5010UNv2: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 bdb3dada33..dd40272ac5 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" "R5010UNv2: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 129514b9b6..70f18cb257 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 f307a4cabe..bc9ae213c9 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 1a97c86d6f..7dc57fdd73 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 0000000000..cae2296d53 --- /dev/null +++ b/target/linux/brcm63xx/dts/r5010unv2.dts @@ -0,0 +1,64 @@ +/dts-v1/; + +#include "bcm6328.dtsi" + +#include + +/ { + 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 = ; + }; + wps { + label = "wps"; + gpios = <&gpio0 24 1>; + linux,code = ; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + inet_green { + label = "R5010UNv2:green:inet"; + gpios = <&gpio0 1 1>; + }; + inet_fail_red { + label = "R5010UNv2:red:inet-fail"; + gpios = <&gpio0 2 1>; + }; + dsl_red { + label = "R5010UNv2:green:dsl"; + gpios = <&gpio0 3 1>; + }; + power_green { + label = "R5010UNv2:green:power"; + gpios = <&gpio0 4 1>; + default-state = "on"; + }; + power_fail_red { + label = "R5010UNv2:red:power-fail"; + gpios = <&gpio0 5 1>; + }; + wps_green { + label = "R5010UNv2:green:wps"; + gpios = <&gpio0 10 1>; + }; + usb_green { + label = "R5010UNv2:green:usb"; + gpios = <&gpio0 11 1>; + }; + }; +}; + diff --git a/target/linux/brcm63xx/image/Makefile b/target/linux/brcm63xx/image/Makefile index 95811168ba..53e4c217e8 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 0000000000..cf5a7198e9 --- /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 0000000000..2cd8801879 --- /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))