select SSB_PCICORE_HOSTMODE if PCI
        select SSB_DRIVER_GPIO
        select GPIOLIB
+       select LEDS_GPIO_REGISTER
        default y
        help
         Add support for old Broadcom BCM47xx boards with Sonics Silicon Backplane support.
        select BCMA_DRIVER_PCI_HOSTMODE if PCI
        select BCMA_DRIVER_GPIO
        select GPIOLIB
+       select LEDS_GPIO_REGISTER
        default y
        help
         Add support for new Broadcom BCM47xx boards with Broadcom specific Advanced Microcontroller Bus.
 
--- /dev/null
+#include "bcm47xx_private.h"
+
+#include <linux/leds.h>
+#include <bcm47xx_board.h>
+
+static const struct gpio_led
+bcm47xx_leds_netgear_wndr4500_v1_leds[] __initconst = {
+       {
+               .name           = "bcm47xx:green:wps",
+               .gpio           = 1,
+               .active_low     = 1,
+               .default_state  = LEDS_GPIO_DEFSTATE_KEEP,
+       },
+       {
+               .name           = "bcm47xx:green:power",
+               .gpio           = 2,
+               .active_low     = 1,
+               .default_state  = LEDS_GPIO_DEFSTATE_KEEP,
+       },
+       {
+               .name           = "bcm47xx:orange:power",
+               .gpio           = 3,
+               .active_low     = 1,
+               .default_state  = LEDS_GPIO_DEFSTATE_KEEP,
+       },
+       {
+               .name           = "bcm47xx:green:usb1",
+               .gpio           = 8,
+               .active_low     = 1,
+               .default_state  = LEDS_GPIO_DEFSTATE_KEEP,
+       },
+       {
+               .name           = "bcm47xx:green:2ghz",
+               .gpio           = 9,
+               .active_low     = 1,
+               .default_state  = LEDS_GPIO_DEFSTATE_KEEP,
+       },
+       {
+               .name           = "bcm47xx:blue:5ghz",
+               .gpio           = 11,
+               .active_low     = 1,
+               .default_state  = LEDS_GPIO_DEFSTATE_KEEP,
+       },
+       {
+               .name           = "bcm47xx:green:usb2",
+               .gpio           = 14,
+               .active_low     = 1,
+               .default_state  = LEDS_GPIO_DEFSTATE_KEEP,
+       },
+};
+
+static struct gpio_led_platform_data bcm47xx_leds_pdata;
+
+#define bcm47xx_set_pdata(dev_leds) do {                               \
+       bcm47xx_leds_pdata.leds = dev_leds;                             \
+       bcm47xx_leds_pdata.num_leds = ARRAY_SIZE(dev_leds);             \
+} while (0)
+
+void __init bcm47xx_leds_register(void)
+{
+       enum bcm47xx_board board = bcm47xx_board_get();
+
+       switch (board) {
+       case BCM47XX_BOARD_NETGEAR_WNDR4500V1:
+               bcm47xx_set_pdata(bcm47xx_leds_netgear_wndr4500_v1_leds);
+               break;
+       default:
+               pr_debug("No LEDs configuration found for this device\n");
+               return;
+       }
+
+       gpio_led_register_device(-1, &bcm47xx_leds_pdata);
+}
 
  *  675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include "bcm47xx_private.h"
+
 #include <linux/export.h>
 #include <linux/types.h>
 #include <linux/ssb/ssb.h>
                break;
 #endif
        }
+       bcm47xx_leds_register();
+
        return 0;
 }
 device_initcall(bcm47xx_register_bus_complete);