aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm47xx/patches-3.10/120-MIPS-BCM47XX-Prepare-support-for-LEDs.patch
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@openwrt.org>2014-01-12 18:55:25 +0000
committerHauke Mehrtens <hauke@openwrt.org>2014-01-12 18:55:25 +0000
commitf6d2f50c9b8a0db0d83655a81ae090b22474ad7e (patch)
tree62c3a8e418dff8fbb5d85ac7ba18f519af3d163b /target/linux/brcm47xx/patches-3.10/120-MIPS-BCM47XX-Prepare-support-for-LEDs.patch
parent0d0ce9938c0e08da506800ce9205966f8e42080e (diff)
downloadmaster-187ad058-f6d2f50c9b8a0db0d83655a81ae090b22474ad7e.tar.gz
master-187ad058-f6d2f50c9b8a0db0d83655a81ae090b22474ad7e.tar.bz2
master-187ad058-f6d2f50c9b8a0db0d83655a81ae090b22474ad7e.zip
brcm47xx: add new led and button support
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39252 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/brcm47xx/patches-3.10/120-MIPS-BCM47XX-Prepare-support-for-LEDs.patch')
-rw-r--r--target/linux/brcm47xx/patches-3.10/120-MIPS-BCM47XX-Prepare-support-for-LEDs.patch160
1 files changed, 160 insertions, 0 deletions
diff --git a/target/linux/brcm47xx/patches-3.10/120-MIPS-BCM47XX-Prepare-support-for-LEDs.patch b/target/linux/brcm47xx/patches-3.10/120-MIPS-BCM47XX-Prepare-support-for-LEDs.patch
new file mode 100644
index 0000000000..424d1f0a76
--- /dev/null
+++ b/target/linux/brcm47xx/patches-3.10/120-MIPS-BCM47XX-Prepare-support-for-LEDs.patch
@@ -0,0 +1,160 @@
+From 98e54a60a7346ef31cb851b670a238ad428b58fe Mon Sep 17 00:00:00 2001
+From: Rafa? Mi?ecki <zajec5@gmail.com>
+Date: Thu, 2 Jan 2014 13:27:15 +0100
+Subject: [PATCH 029/110] MIPS: BCM47XX: Prepare support for LEDs
+
+So far this is mostly just a proof of concept, database consists of a
+single device. Creating a nice iterateable array wasn't an option
+because devices have different amount of LEDs. And we don't want to
+waste memory just because of support for a device with dozens on LEDs.
+
+Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com>
+Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
+Acked-by: John Crispin <blogic@openwrt.org>
+Patchwork: http://patchwork.linux-mips.org/patch/6299/
+---
+ arch/mips/bcm47xx/Kconfig | 2 +
+ arch/mips/bcm47xx/Makefile | 2 +-
+ arch/mips/bcm47xx/bcm47xx_private.h | 9 +++++
+ arch/mips/bcm47xx/leds.c | 73 +++++++++++++++++++++++++++++++++++
+ arch/mips/bcm47xx/setup.c | 6 +++
+ 5 files changed, 91 insertions(+), 1 deletion(-)
+ create mode 100644 arch/mips/bcm47xx/bcm47xx_private.h
+ create mode 100644 arch/mips/bcm47xx/leds.c
+
+--- a/arch/mips/bcm47xx/Kconfig
++++ b/arch/mips/bcm47xx/Kconfig
+@@ -12,6 +12,7 @@ config BCM47XX_SSB
+ 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.
+@@ -29,6 +30,7 @@ config BCM47XX_BCMA
+ 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.
+--- a/arch/mips/bcm47xx/Makefile
++++ b/arch/mips/bcm47xx/Makefile
+@@ -4,5 +4,5 @@
+ #
+
+ obj-y += irq.o nvram.o prom.o serial.o setup.o time.o sprom.o
+-obj-y += board.o
++obj-y += board.o leds.o
+ obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o
+--- /dev/null
++++ b/arch/mips/bcm47xx/bcm47xx_private.h
+@@ -0,0 +1,9 @@
++#ifndef LINUX_BCM47XX_PRIVATE_H_
++#define LINUX_BCM47XX_PRIVATE_H_
++
++#include <linux/kernel.h>
++
++/* leds.c */
++void __init bcm47xx_leds_register(void);
++
++#endif
+--- /dev/null
++++ b/arch/mips/bcm47xx/leds.c
+@@ -0,0 +1,73 @@
++#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);
++}
+--- a/arch/mips/bcm47xx/setup.c
++++ b/arch/mips/bcm47xx/setup.c
+@@ -26,6 +26,8 @@
+ * 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
++#include "bcm47xx_private.h"
++
+ #include <linux/export.h>
+ #include <linux/types.h>
+ #include <linux/ssb/ssb.h>
+@@ -243,6 +245,9 @@ static int __init bcm47xx_register_bus_c
+ break;
+ #endif
+ }
++
++ bcm47xx_leds_register();
++
+ return 0;
+ }
+ device_initcall(bcm47xx_register_bus_complete);