Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[MIPS] GPIO LED driver for the WGT634U machine

Add LED support to the WGT634U machine. It uses the new gpio-led
driver and a platform driver for the pin definitions.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

authored by

Aurelien Jarno and committed by
Ralf Baechle
21c854dc 34cc662f

+65 -1
+1 -1
arch/mips/bcm47xx/Makefile
··· 3 3 # under Linux. 4 4 # 5 5 6 - obj-y := gpio.o irq.o prom.o serial.o setup.o time.o 6 + obj-y := gpio.o irq.o prom.o serial.o setup.o time.o wgt634u.o
+64
arch/mips/bcm47xx/wgt634u.c
··· 1 + /* 2 + * This file is subject to the terms and conditions of the GNU General Public 3 + * License. See the file "COPYING" in the main directory of this archive 4 + * for more details. 5 + * 6 + * Copyright (C) 2007 Aurelien Jarno <aurelien@aurel32.net> 7 + */ 8 + 9 + #include <linux/platform_device.h> 10 + #include <linux/module.h> 11 + #include <linux/leds.h> 12 + #include <linux/ssb/ssb.h> 13 + #include <asm/mach-bcm47xx/bcm47xx.h> 14 + 15 + /* GPIO definitions for the WGT634U */ 16 + #define WGT634U_GPIO_LED 3 17 + #define WGT634U_GPIO_RESET 2 18 + #define WGT634U_GPIO_TP1 7 19 + #define WGT634U_GPIO_TP2 6 20 + #define WGT634U_GPIO_TP3 5 21 + #define WGT634U_GPIO_TP4 4 22 + #define WGT634U_GPIO_TP5 1 23 + 24 + static struct gpio_led wgt634u_leds[] = { 25 + { 26 + .name = "power", 27 + .gpio = WGT634U_GPIO_LED, 28 + .active_low = 1, 29 + .default_trigger = "heartbeat", 30 + }, 31 + }; 32 + 33 + static struct gpio_led_platform_data wgt634u_led_data = { 34 + .num_leds = ARRAY_SIZE(wgt634u_leds), 35 + .leds = wgt634u_leds, 36 + }; 37 + 38 + static struct platform_device wgt634u_gpio_leds = { 39 + .name = "leds-gpio", 40 + .id = -1, 41 + .dev = { 42 + .platform_data = &wgt634u_led_data, 43 + } 44 + }; 45 + 46 + static int __init wgt634u_init(void) 47 + { 48 + /* There is no easy way to detect that we are running on a WGT634U 49 + * machine. Use the MAC address as an heuristic. Netgear Inc. has 50 + * been allocated ranges 00:09:5b:xx:xx:xx and 00:0f:b5:xx:xx:xx. 51 + */ 52 + 53 + u8 *et0mac = ssb_bcm47xx.sprom.r1.et0mac; 54 + 55 + if (et0mac[0] == 0x00 && 56 + ((et0mac[1] == 0x09 && et0mac[2] == 0x5b) || 57 + (et0mac[1] == 0x0f && et0mac[2] == 0xb5))) 58 + return platform_device_register(&wgt634u_gpio_leds); 59 + else 60 + return -ENODEV; 61 + } 62 + 63 + module_init(wgt634u_init); 64 +