mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-25 16:13:05 +00:00
8fe5ad5d33
This change makes the names of Broadcom targets consistent by using the common notation based on SoC/CPU ID (which is used internally anyway), bcmXXXX instead of brcmXXXX. This is even used for target TITLE in make menuconfig already, only the short target name used brcm so far. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
97 lines
4.1 KiB
Diff
97 lines
4.1 KiB
Diff
From 88b882ba0b0b7439d16d2c9df7f111cdf793443b Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
|
Date: Sun, 8 Apr 2018 22:39:15 +0200
|
|
Subject: [PATCH] MIPS: BCM47XX: Add support for Netgear WNR1000 V3
|
|
|
|
This adds support for detecting this model board and registers some LEDs
|
|
and buttons.
|
|
|
|
There are two uncommon things regarding this device:
|
|
1) It can use two different "board_id" ID values.
|
|
Unit I have uses "U12H139T00_NETGEAR" value. This magic is also used
|
|
in firmware file header. There are two reports (one from an OpenWrt
|
|
user) of a different "U12H139T50_NETGEAR" magic though.
|
|
2) Power LEDs share GPIOs with buttons.
|
|
Amber one seems to share GPIO 2 with WPS button and green one seems
|
|
to share GPIO 3 with reset button. It remains unknown how to support
|
|
them and handle buttons at the same time. For that reason they aren't
|
|
added to the list of supported LEDs.
|
|
---
|
|
arch/mips/bcm47xx/board.c | 2 ++
|
|
arch/mips/bcm47xx/buttons.c | 9 +++++++++
|
|
arch/mips/bcm47xx/leds.c | 9 +++++++++
|
|
arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h | 1 +
|
|
4 files changed, 21 insertions(+)
|
|
|
|
--- a/arch/mips/bcm47xx/board.c
|
|
+++ b/arch/mips/bcm47xx/board.c
|
|
@@ -172,6 +172,8 @@ struct bcm47xx_board_type_list1 bcm47xx_
|
|
{{BCM47XX_BOARD_NETGEAR_WNDR4000, "Netgear WNDR4000"}, "U12H181T00_NETGEAR"},
|
|
{{BCM47XX_BOARD_NETGEAR_WNDR4500V1, "Netgear WNDR4500 V1"}, "U12H189T00_NETGEAR"},
|
|
{{BCM47XX_BOARD_NETGEAR_WNDR4500V2, "Netgear WNDR4500 V2"}, "U12H224T00_NETGEAR"},
|
|
+ {{BCM47XX_BOARD_NETGEAR_WNR1000_V3, "Netgear WNR1000 V3"}, "U12H139T00_NETGEAR"},
|
|
+ {{BCM47XX_BOARD_NETGEAR_WNR1000_V3, "Netgear WNR1000 V3"}, "U12H139T50_NETGEAR"},
|
|
{{BCM47XX_BOARD_NETGEAR_WNR2000, "Netgear WNR2000"}, "U12H114T00_NETGEAR"},
|
|
{{BCM47XX_BOARD_NETGEAR_WNR3500L, "Netgear WNR3500L"}, "U12H136T99_NETGEAR"},
|
|
{{BCM47XX_BOARD_NETGEAR_WNR3500U, "Netgear WNR3500U"}, "U12H136T00_NETGEAR"},
|
|
--- a/arch/mips/bcm47xx/buttons.c
|
|
+++ b/arch/mips/bcm47xx/buttons.c
|
|
@@ -412,6 +412,12 @@ bcm47xx_buttons_netgear_wndr4500v1[] __i
|
|
};
|
|
|
|
static const struct gpio_keys_button
|
|
+bcm47xx_buttons_netgear_wnr1000_v3[] __initconst = {
|
|
+ BCM47XX_GPIO_KEY(2, KEY_WPS_BUTTON),
|
|
+ BCM47XX_GPIO_KEY(3, KEY_RESTART),
|
|
+};
|
|
+
|
|
+static const struct gpio_keys_button
|
|
bcm47xx_buttons_netgear_wnr3500lv1[] __initconst = {
|
|
BCM47XX_GPIO_KEY(4, KEY_RESTART),
|
|
BCM47XX_GPIO_KEY(6, KEY_WPS_BUTTON),
|
|
@@ -670,6 +676,9 @@ int __init bcm47xx_buttons_register(void
|
|
case BCM47XX_BOARD_NETGEAR_WNDR4500V1:
|
|
err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr4500v1);
|
|
break;
|
|
+ case BCM47XX_BOARD_NETGEAR_WNR1000_V3:
|
|
+ err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wnr1000_v3);
|
|
+ break;
|
|
case BCM47XX_BOARD_NETGEAR_WNR3500L:
|
|
err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wnr3500lv1);
|
|
break;
|
|
--- a/arch/mips/bcm47xx/leds.c
|
|
+++ b/arch/mips/bcm47xx/leds.c
|
|
@@ -498,6 +498,12 @@ bcm47xx_leds_netgear_wndr4500v1[] __init
|
|
};
|
|
|
|
static const struct gpio_led
|
|
+bcm47xx_leds_netgear_wnr1000_v3[] __initconst = {
|
|
+ BCM47XX_GPIO_LED(0, "blue", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF),
|
|
+ BCM47XX_GPIO_LED(1, "green", "wps", 0, LEDS_GPIO_DEFSTATE_OFF),
|
|
+};
|
|
+
|
|
+static const struct gpio_led
|
|
bcm47xx_leds_netgear_wnr3500lv1[] __initconst = {
|
|
BCM47XX_GPIO_LED(0, "blue", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
|
|
BCM47XX_GPIO_LED(1, "green", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
|
|
@@ -758,6 +764,9 @@ void __init bcm47xx_leds_register(void)
|
|
case BCM47XX_BOARD_NETGEAR_WNDR4500V1:
|
|
bcm47xx_set_pdata(bcm47xx_leds_netgear_wndr4500v1);
|
|
break;
|
|
+ case BCM47XX_BOARD_NETGEAR_WNR1000_V3:
|
|
+ bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr1000_v3);
|
|
+ break;
|
|
case BCM47XX_BOARD_NETGEAR_WNR3500L:
|
|
bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr3500lv1);
|
|
break;
|
|
--- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h
|
|
+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h
|
|
@@ -110,6 +110,7 @@ enum bcm47xx_board {
|
|
BCM47XX_BOARD_NETGEAR_WNDR4000,
|
|
BCM47XX_BOARD_NETGEAR_WNDR4500V1,
|
|
BCM47XX_BOARD_NETGEAR_WNDR4500V2,
|
|
+ BCM47XX_BOARD_NETGEAR_WNR1000_V3,
|
|
BCM47XX_BOARD_NETGEAR_WNR2000,
|
|
BCM47XX_BOARD_NETGEAR_WNR3500L,
|
|
BCM47XX_BOARD_NETGEAR_WNR3500U,
|