All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] MIPS: BCM47XX: Add Luxul XAP1500/XWR1750 WiFi LEDs
@ 2018-02-27 21:32 Dan Haab
  2018-03-13  8:37 ` James Hogan
  2018-03-27 17:24 ` [PATCH V2] " Dan Haab
  0 siblings, 2 replies; 4+ messages in thread
From: Dan Haab @ 2018-02-27 21:32 UTC (permalink / raw)
  To: Ralf Baechle, linux-mips
  Cc: Hauke Mehrtens, Rafał Miłecki, Dan Haab

From: Dan Haab <dan.haab@luxul.com>

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 deffering these PCIe GPIO
connected 'extra' LEDs until they become available. 

Signed-off-by: Dan Haab <dan.haab@luxul.com>
---

diff --git a/arch/mips/bcm47xx/leds.c b/arch/mips/bcm47xx/leds.c
index 8307a8a..643a2bb 100644
--- a/arch/mips/bcm47xx/leds.c
+++ b/arch/mips/bcm47xx/leds.c
@@ -409,6 +409,12 @@
 };
 
 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"),
@@ -435,6 +441,11 @@
 	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
@@ -528,6 +539,12 @@
 	bcm47xx_leds_pdata.num_leds = ARRAY_SIZE(dev_leds);		\
 } while (0)
 
+static struct gpio_led_platform_data bcm47xx_leds_pdata_extra = {};
+#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();
@@ -705,6 +722,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);
@@ -717,6 +735,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:
@@ -760,4 +779,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);
 }

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] MIPS: BCM47XX: Add Luxul XAP1500/XWR1750 WiFi LEDs
  2018-02-27 21:32 [PATCH] MIPS: BCM47XX: Add Luxul XAP1500/XWR1750 WiFi LEDs Dan Haab
@ 2018-03-13  8:37 ` James Hogan
  2018-03-27 17:24 ` [PATCH V2] " Dan Haab
  1 sibling, 0 replies; 4+ messages in thread
From: James Hogan @ 2018-03-13  8:37 UTC (permalink / raw)
  To: Dan Haab
  Cc: Ralf Baechle, linux-mips, Hauke Mehrtens,
	Rafał Miłecki, Dan Haab

[-- Attachment #1: Type: text/plain, Size: 296 bytes --]

On Tue, Feb 27, 2018 at 02:32:53PM -0700, Dan Haab wrote:
> @@ -528,6 +539,12 @@
>  	bcm47xx_leds_pdata.num_leds = ARRAY_SIZE(dev_leds);		\
>  } while (0)
>  
> +static struct gpio_led_platform_data bcm47xx_leds_pdata_extra = {};

Any reason that couldn't be __initdata?

Thanks
James

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH V2] MIPS: BCM47XX: Add Luxul XAP1500/XWR1750 WiFi LEDs
  2018-02-27 21:32 [PATCH] MIPS: BCM47XX: Add Luxul XAP1500/XWR1750 WiFi LEDs Dan Haab
  2018-03-13  8:37 ` James Hogan
@ 2018-03-27 17:24 ` Dan Haab
  2018-03-28 15:09   ` James Hogan
  1 sibling, 1 reply; 4+ messages in thread
From: Dan Haab @ 2018-03-27 17:24 UTC (permalink / raw)
  To: Ralf Baechle, linux-mips
  Cc: Hauke Mehrtens, Rafał Miłecki, Dan Haab

From: Dan Haab <dan.haab@luxul.com>

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 deffering these PCIe GPIO
connected 'extra' LEDs until they become available.

Signed-off-by: Dan Haab <dan.haab@luxul.com>
---
 arch/mips/bcm47xx/leds.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/arch/mips/bcm47xx/leds.c b/arch/mips/bcm47xx/leds.c
index 8307a8a..34a7b3f 100644
--- a/arch/mips/bcm47xx/leds.c
+++ b/arch/mips/bcm47xx/leds.c
@@ -409,6 +409,12 @@
 };
 
 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"),
@@ -435,6 +441,11 @@
 	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
@@ -528,6 +539,12 @@
 	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();
@@ -705,6 +722,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);
@@ -717,6 +735,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:
@@ -760,4 +779,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);
 }
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH V2] MIPS: BCM47XX: Add Luxul XAP1500/XWR1750 WiFi LEDs
  2018-03-27 17:24 ` [PATCH V2] " Dan Haab
@ 2018-03-28 15:09   ` James Hogan
  0 siblings, 0 replies; 4+ messages in thread
From: James Hogan @ 2018-03-28 15:09 UTC (permalink / raw)
  To: Dan Haab
  Cc: Ralf Baechle, linux-mips, Hauke Mehrtens,
	Rafał Miłecki, Dan Haab

[-- Attachment #1: Type: text/plain, Size: 676 bytes --]

On Tue, Mar 27, 2018 at 11:24:34AM -0600, Dan Haab wrote:
> From: Dan Haab <dan.haab@luxul.com>
> 
> 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 deffering these PCIe GPIO
> connected 'extra' LEDs until they become available.
> 
> Signed-off-by: Dan Haab <dan.haab@luxul.com>

Applied for 4.17.

Thanks
James

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-03-28 15:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-27 21:32 [PATCH] MIPS: BCM47XX: Add Luxul XAP1500/XWR1750 WiFi LEDs Dan Haab
2018-03-13  8:37 ` James Hogan
2018-03-27 17:24 ` [PATCH V2] " Dan Haab
2018-03-28 15:09   ` James Hogan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.