Skip to content

Commit

Permalink
MIPS: BCM47XX: Add Luxul XAP1500/XWR1750 WiFi LEDs
Browse files Browse the repository at this point in the history
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@luxul.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Hauke Mehrtens <hauke@hauke-m.de>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/18952/
Signed-off-by: James Hogan <jhogan@kernel.org>
  • Loading branch information
Dan Haab authored and James Hogan committed Mar 28, 2018
1 parent 8bda3e2 commit 2726412
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions arch/mips/bcm47xx/leds.c
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,12 @@ bcm47xx_leds_luxul_xap_1500_v1[] __initconst = {
BCM47XX_GPIO_LED_TRIGGER(13, "green", "status", 1, "timer"),
};

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),
Expand Down Expand Up @@ -435,6 +441,11 @@ bcm47xx_leds_luxul_xwr_1750_v1[] __initconst = {
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
Expand Down Expand Up @@ -528,6 +539,12 @@ static struct gpio_led_platform_data bcm47xx_leds_pdata;
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();
Expand Down Expand Up @@ -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);
Expand All @@ -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:
Expand Down Expand Up @@ -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);
}

0 comments on commit 2726412

Please sign in to comment.