aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm47xx/patches-4.9/033-MIPS-BCM47XX-Add-support-for-Netgear-WNR1000-V3.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm47xx/patches-4.9/033-MIPS-BCM47XX-Add-support-for-Netgear-WNR1000-V3.patch')
-rw-r--r--target/linux/brcm47xx/patches-4.9/033-MIPS-BCM47XX-Add-support-for-Netgear-WNR1000-V3.patch96
1 files changed, 96 insertions, 0 deletions
diff --git a/target/linux/brcm47xx/patches-4.9/033-MIPS-BCM47XX-Add-support-for-Netgear-WNR1000-V3.patch b/target/linux/brcm47xx/patches-4.9/033-MIPS-BCM47XX-Add-support-for-Netgear-WNR1000-V3.patch
new file mode 100644
index 0000000000..e4c47605d9
--- /dev/null
+++ b/target/linux/brcm47xx/patches-4.9/033-MIPS-BCM47XX-Add-support-for-Netgear-WNR1000-V3.patch
@@ -0,0 +1,96 @@
+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
+@@ -171,6 +171,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
+@@ -411,6 +411,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),
+@@ -669,6 +675,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
+@@ -497,6 +497,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),
+@@ -757,6 +763,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
+@@ -109,6 +109,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,