From d12502b6663e8443dfd23e903c91b0e66a064be2 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Wed, 2 Dec 2015 22:18:20 +0000 Subject: [PATCH] brcm63xx: Add NuCom R5010UNv2 support 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 Signed-off-by: Daniel Gonzalez Signed-off-by: Jonas Gorski SVN-Revision: 47697 --- target/linux/brcm63xx/base-files/etc/diag.sh | 3 + .../base-files/etc/uci-defaults/01_leds | 3 + .../base-files/etc/uci-defaults/02_network | 1 + .../base-files/etc/uci-defaults/09_fix_crc | 1 + .../linux/brcm63xx/base-files/lib/brcm63xx.sh | 3 + target/linux/brcm63xx/dts/r5010unv2.dts | 64 +++++++++++++++++ target/linux/brcm63xx/image/Makefile | 2 + .../patches-4.1/573-board_R5010UNv2.patch | 70 +++++++++++++++++++ target/linux/brcm63xx/profiles/nucom.mk | 16 +++++ 9 files changed, 163 insertions(+) create mode 100644 target/linux/brcm63xx/dts/r5010unv2.dts create mode 100644 target/linux/brcm63xx/patches-4.1/573-board_R5010UNv2.patch create mode 100644 target/linux/brcm63xx/profiles/nucom.mk diff --git a/target/linux/brcm63xx/base-files/etc/diag.sh b/target/linux/brcm63xx/base-files/etc/diag.sh index 7826fada1024..b8649646e447 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 bdb3dada3300..dd40272ac520 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 129514b9b694..70f18cb257bf 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 f307a4cabe5d..bc9ae213c9fb 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 1a97c86d6fca..7dc57fdd73b6 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 000000000000..cae2296d53a8 --- /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 95811168ba04..53e4c217e8fd 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 000000000000..cf5a7198e98d --- /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 000000000000..2cd8801879d7 --- /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)) -- 2.30.2