1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- From 272641206100e89656038180da12eff4f03d79d1 Mon Sep 17 00:00:00 2001
- From: Dan Haab <[email protected]>
- 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 <[email protected]>
- Cc: Ralf Baechle <[email protected]>
- Cc: Hauke Mehrtens <[email protected]>
- Cc: [email protected]
- Patchwork: https://patchwork.linux-mips.org/patch/18952/
- Signed-off-by: James Hogan <[email protected]>
- ---
- arch/mips/bcm47xx/leds.c | 21 +++++++++++++++++++++
- 1 file changed, 21 insertions(+)
- --- a/arch/mips/bcm47xx/leds.c
- +++ b/arch/mips/bcm47xx/leds.c
- @@ -409,6 +409,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"),
- @@ -435,6 +441,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
- @@ -528,6 +539,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();
- @@ -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);
- }
|