[openwrt/openwrt] brcm47xx: add Luxul XAP-1500 and XWR-1750 WiFi LEDs

LEDE Commits lede-commits at lists.infradead.org
Tue Apr 3 06:37:56 PDT 2018


rmilecki pushed a commit to openwrt/openwrt.git, branch master:
https://git.lede-project.org/16efb0c1c6c7702e694aef8f297b57b7c10b98c1

commit 16efb0c1c6c7702e694aef8f297b57b7c10b98c1
Author: Rafał Miłecki <rafal at milecki.pl>
AuthorDate: Tue Apr 3 15:16:33 2018 +0200

    brcm47xx: add Luxul XAP-1500 and XWR-1750 WiFi LEDs
    
    Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
---
 ...M47XX-Add-Luxul-XAP1500-XWR1750-WiFi-LEDs.patch | 86 ++++++++++++++++++++++
 ...S-BCM47XX-Devices-database-update-for-4.x.patch |  4 +-
 ...M47XX-Add-Luxul-XAP1500-XWR1750-WiFi-LEDs.patch | 86 ++++++++++++++++++++++
 ...S-BCM47XX-Devices-database-update-for-4.x.patch |  4 +-
 4 files changed, 176 insertions(+), 4 deletions(-)

diff --git a/target/linux/brcm47xx/patches-4.4/032-MIPS-BCM47XX-Add-Luxul-XAP1500-XWR1750-WiFi-LEDs.patch b/target/linux/brcm47xx/patches-4.4/032-MIPS-BCM47XX-Add-Luxul-XAP1500-XWR1750-WiFi-LEDs.patch
new file mode 100644
index 0000000..d14719b
--- /dev/null
+++ b/target/linux/brcm47xx/patches-4.4/032-MIPS-BCM47XX-Add-Luxul-XAP1500-XWR1750-WiFi-LEDs.patch
@@ -0,0 +1,86 @@
+From 272641206100e89656038180da12eff4f03d79d1 Mon Sep 17 00:00:00 2001
+From: Dan Haab <dan.haab at luxul.com>
+Date: Tue, 27 Mar 2018 11:24:34 -0600
+Subject: [PATCH] MIPS: BCM47XX: Add Luxul XAP1500/XWR1750 WiFi LEDs
+
+Some Luxul devices use PCIe connected GPIO LEDs that are not available
+until the PCI subsytem and its drivers load. Using the same array for
+these LEDs would block registering any LEDs until all GPIOs become
+available. This may be undesired behavior as some LEDs should be
+available as early as possible (e.g. system status LED). This patch will
+allow registering available LEDs while deferring these PCIe GPIO
+connected 'extra' LEDs until they become available.
+
+Signed-off-by: Dan Haab <dan.haab at luxul.com>
+Cc: Ralf Baechle <ralf at linux-mips.org>
+Cc: Hauke Mehrtens <hauke at hauke-m.de>
+Cc: linux-mips at linux-mips.org
+Patchwork: https://patchwork.linux-mips.org/patch/18952/
+Signed-off-by: James Hogan <jhogan at kernel.org>
+---
+ arch/mips/bcm47xx/leds.c | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+--- a/arch/mips/bcm47xx/leds.c
++++ b/arch/mips/bcm47xx/leds.c
+@@ -408,6 +408,12 @@ bcm47xx_leds_luxul_xap_1500_v1[] __initc
+ };
+ 
+ static const struct gpio_led
++bcm47xx_leds_luxul_xap1500_v1_extra[] __initconst = {
++	BCM47XX_GPIO_LED(44, "green", "5ghz", 0, LEDS_GPIO_DEFSTATE_OFF),
++	BCM47XX_GPIO_LED(76, "green", "2ghz", 0, LEDS_GPIO_DEFSTATE_OFF),
++};
++
++static const struct gpio_led
+ bcm47xx_leds_luxul_xbr_4400_v1[] __initconst = {
+ 	BCM47XX_GPIO_LED(12, "green", "usb", 0, LEDS_GPIO_DEFSTATE_OFF),
+ 	BCM47XX_GPIO_LED_TRIGGER(15, "green", "status", 0, "timer"),
+@@ -434,6 +440,11 @@ bcm47xx_leds_luxul_xwr_1750_v1[] __initc
+ 	BCM47XX_GPIO_LED(15, "green", "wps", 0, LEDS_GPIO_DEFSTATE_OFF),
+ };
+ 
++static const struct gpio_led
++bcm47xx_leds_luxul_xwr1750_v1_extra[] __initconst = {
++	BCM47XX_GPIO_LED(76, "green", "2ghz", 0, LEDS_GPIO_DEFSTATE_OFF),
++};
++
+ /* Microsoft */
+ 
+ static const struct gpio_led
+@@ -527,6 +538,12 @@ static struct gpio_led_platform_data bcm
+ 	bcm47xx_leds_pdata.num_leds = ARRAY_SIZE(dev_leds);		\
+ } while (0)
+ 
++static struct gpio_led_platform_data bcm47xx_leds_pdata_extra __initdata = {};
++#define bcm47xx_set_pdata_extra(dev_leds) do {				\
++	bcm47xx_leds_pdata_extra.leds = dev_leds;			\
++	bcm47xx_leds_pdata_extra.num_leds = ARRAY_SIZE(dev_leds);	\
++} while (0)
++
+ void __init bcm47xx_leds_register(void)
+ {
+ 	enum bcm47xx_board board = bcm47xx_board_get();
+@@ -704,6 +721,7 @@ void __init bcm47xx_leds_register(void)
+ 		break;
+ 	case BCM47XX_BOARD_LUXUL_XAP_1500_V1:
+ 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xap_1500_v1);
++		bcm47xx_set_pdata_extra(bcm47xx_leds_luxul_xap1500_v1_extra);
+ 		break;
+ 	case BCM47XX_BOARD_LUXUL_XBR_4400_V1:
+ 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xbr_4400_v1);
+@@ -716,6 +734,7 @@ void __init bcm47xx_leds_register(void)
+ 		break;
+ 	case BCM47XX_BOARD_LUXUL_XWR_1750_V1:
+ 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xwr_1750_v1);
++		bcm47xx_set_pdata_extra(bcm47xx_leds_luxul_xwr1750_v1_extra);
+ 		break;
+ 
+ 	case BCM47XX_BOARD_MICROSOFT_MN700:
+@@ -759,4 +778,6 @@ void __init bcm47xx_leds_register(void)
+ 	}
+ 
+ 	gpio_led_register_device(-1, &bcm47xx_leds_pdata);
++	if (bcm47xx_leds_pdata_extra.num_leds)
++		gpio_led_register_device(0, &bcm47xx_leds_pdata_extra);
+ }
diff --git a/target/linux/brcm47xx/patches-4.4/320-MIPS-BCM47XX-Devices-database-update-for-4.x.patch b/target/linux/brcm47xx/patches-4.4/320-MIPS-BCM47XX-Devices-database-update-for-4.x.patch
index 8230385..c5f97ba 100644
--- a/target/linux/brcm47xx/patches-4.4/320-MIPS-BCM47XX-Devices-database-update-for-4.x.patch
+++ b/target/linux/brcm47xx/patches-4.4/320-MIPS-BCM47XX-Devices-database-update-for-4.x.patch
@@ -201,7 +201,7 @@
  bcm47xx_leds_linksys_wrt54g_generic[] __initconst = {
  	BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
  	BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
-@@ -532,6 +547,9 @@ void __init bcm47xx_leds_register(void)
+@@ -549,6 +564,9 @@ void __init bcm47xx_leds_register(void)
  	enum bcm47xx_board board = bcm47xx_board_get();
  
  	switch (board) {
@@ -211,7 +211,7 @@
  	case BCM47XX_BOARD_ASUS_RTN12:
  		bcm47xx_set_pdata(bcm47xx_leds_asus_rtn12);
  		break;
-@@ -665,6 +683,9 @@ void __init bcm47xx_leds_register(void)
+@@ -682,6 +700,9 @@ void __init bcm47xx_leds_register(void)
  	case BCM47XX_BOARD_LINKSYS_WRT310NV1:
  		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt310nv1);
  		break;
diff --git a/target/linux/brcm47xx/patches-4.9/032-MIPS-BCM47XX-Add-Luxul-XAP1500-XWR1750-WiFi-LEDs.patch b/target/linux/brcm47xx/patches-4.9/032-MIPS-BCM47XX-Add-Luxul-XAP1500-XWR1750-WiFi-LEDs.patch
new file mode 100644
index 0000000..d14719b
--- /dev/null
+++ b/target/linux/brcm47xx/patches-4.9/032-MIPS-BCM47XX-Add-Luxul-XAP1500-XWR1750-WiFi-LEDs.patch
@@ -0,0 +1,86 @@
+From 272641206100e89656038180da12eff4f03d79d1 Mon Sep 17 00:00:00 2001
+From: Dan Haab <dan.haab at luxul.com>
+Date: Tue, 27 Mar 2018 11:24:34 -0600
+Subject: [PATCH] MIPS: BCM47XX: Add Luxul XAP1500/XWR1750 WiFi LEDs
+
+Some Luxul devices use PCIe connected GPIO LEDs that are not available
+until the PCI subsytem and its drivers load. Using the same array for
+these LEDs would block registering any LEDs until all GPIOs become
+available. This may be undesired behavior as some LEDs should be
+available as early as possible (e.g. system status LED). This patch will
+allow registering available LEDs while deferring these PCIe GPIO
+connected 'extra' LEDs until they become available.
+
+Signed-off-by: Dan Haab <dan.haab at luxul.com>
+Cc: Ralf Baechle <ralf at linux-mips.org>
+Cc: Hauke Mehrtens <hauke at hauke-m.de>
+Cc: linux-mips at linux-mips.org
+Patchwork: https://patchwork.linux-mips.org/patch/18952/
+Signed-off-by: James Hogan <jhogan at kernel.org>
+---
+ arch/mips/bcm47xx/leds.c | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+--- a/arch/mips/bcm47xx/leds.c
++++ b/arch/mips/bcm47xx/leds.c
+@@ -408,6 +408,12 @@ bcm47xx_leds_luxul_xap_1500_v1[] __initc
+ };
+ 
+ static const struct gpio_led
++bcm47xx_leds_luxul_xap1500_v1_extra[] __initconst = {
++	BCM47XX_GPIO_LED(44, "green", "5ghz", 0, LEDS_GPIO_DEFSTATE_OFF),
++	BCM47XX_GPIO_LED(76, "green", "2ghz", 0, LEDS_GPIO_DEFSTATE_OFF),
++};
++
++static const struct gpio_led
+ bcm47xx_leds_luxul_xbr_4400_v1[] __initconst = {
+ 	BCM47XX_GPIO_LED(12, "green", "usb", 0, LEDS_GPIO_DEFSTATE_OFF),
+ 	BCM47XX_GPIO_LED_TRIGGER(15, "green", "status", 0, "timer"),
+@@ -434,6 +440,11 @@ bcm47xx_leds_luxul_xwr_1750_v1[] __initc
+ 	BCM47XX_GPIO_LED(15, "green", "wps", 0, LEDS_GPIO_DEFSTATE_OFF),
+ };
+ 
++static const struct gpio_led
++bcm47xx_leds_luxul_xwr1750_v1_extra[] __initconst = {
++	BCM47XX_GPIO_LED(76, "green", "2ghz", 0, LEDS_GPIO_DEFSTATE_OFF),
++};
++
+ /* Microsoft */
+ 
+ static const struct gpio_led
+@@ -527,6 +538,12 @@ static struct gpio_led_platform_data bcm
+ 	bcm47xx_leds_pdata.num_leds = ARRAY_SIZE(dev_leds);		\
+ } while (0)
+ 
++static struct gpio_led_platform_data bcm47xx_leds_pdata_extra __initdata = {};
++#define bcm47xx_set_pdata_extra(dev_leds) do {				\
++	bcm47xx_leds_pdata_extra.leds = dev_leds;			\
++	bcm47xx_leds_pdata_extra.num_leds = ARRAY_SIZE(dev_leds);	\
++} while (0)
++
+ void __init bcm47xx_leds_register(void)
+ {
+ 	enum bcm47xx_board board = bcm47xx_board_get();
+@@ -704,6 +721,7 @@ void __init bcm47xx_leds_register(void)
+ 		break;
+ 	case BCM47XX_BOARD_LUXUL_XAP_1500_V1:
+ 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xap_1500_v1);
++		bcm47xx_set_pdata_extra(bcm47xx_leds_luxul_xap1500_v1_extra);
+ 		break;
+ 	case BCM47XX_BOARD_LUXUL_XBR_4400_V1:
+ 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xbr_4400_v1);
+@@ -716,6 +734,7 @@ void __init bcm47xx_leds_register(void)
+ 		break;
+ 	case BCM47XX_BOARD_LUXUL_XWR_1750_V1:
+ 		bcm47xx_set_pdata(bcm47xx_leds_luxul_xwr_1750_v1);
++		bcm47xx_set_pdata_extra(bcm47xx_leds_luxul_xwr1750_v1_extra);
+ 		break;
+ 
+ 	case BCM47XX_BOARD_MICROSOFT_MN700:
+@@ -759,4 +778,6 @@ void __init bcm47xx_leds_register(void)
+ 	}
+ 
+ 	gpio_led_register_device(-1, &bcm47xx_leds_pdata);
++	if (bcm47xx_leds_pdata_extra.num_leds)
++		gpio_led_register_device(0, &bcm47xx_leds_pdata_extra);
+ }
diff --git a/target/linux/brcm47xx/patches-4.9/320-MIPS-BCM47XX-Devices-database-update-for-4.x.patch b/target/linux/brcm47xx/patches-4.9/320-MIPS-BCM47XX-Devices-database-update-for-4.x.patch
index 8230385..c5f97ba 100644
--- a/target/linux/brcm47xx/patches-4.9/320-MIPS-BCM47XX-Devices-database-update-for-4.x.patch
+++ b/target/linux/brcm47xx/patches-4.9/320-MIPS-BCM47XX-Devices-database-update-for-4.x.patch
@@ -201,7 +201,7 @@
  bcm47xx_leds_linksys_wrt54g_generic[] __initconst = {
  	BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
  	BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON),
-@@ -532,6 +547,9 @@ void __init bcm47xx_leds_register(void)
+@@ -549,6 +564,9 @@ void __init bcm47xx_leds_register(void)
  	enum bcm47xx_board board = bcm47xx_board_get();
  
  	switch (board) {
@@ -211,7 +211,7 @@
  	case BCM47XX_BOARD_ASUS_RTN12:
  		bcm47xx_set_pdata(bcm47xx_leds_asus_rtn12);
  		break;
-@@ -665,6 +683,9 @@ void __init bcm47xx_leds_register(void)
+@@ -682,6 +700,9 @@ void __init bcm47xx_leds_register(void)
  	case BCM47XX_BOARD_LINKSYS_WRT310NV1:
  		bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt310nv1);
  		break;



More information about the lede-commits mailing list