register GPIO-connected LEDs for known boards

SVN-Revision: 16887
This commit is contained in:
Florian Fainelli 2009-07-18 00:40:23 +00:00
parent af6076273a
commit ecad504c39
4 changed files with 259 additions and 2 deletions

View file

@ -0,0 +1,12 @@
#!/bin/sh
# Copyright (C) 2009 OpenWrt.org
set_state() {
case "$1" in
done)
[ -d /sys/class/leds/power ] && {
echo 1 >/sys/class/leds/power/brightness
}
;;
esac
}

View file

@ -77,6 +77,7 @@ CONFIG_GENERIC_GPIO=y
# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set # CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_DEVICE=y CONFIG_GPIO_DEVICE=y
CONFIG_GPIO_SYSFS=y
# CONFIG_HAMRADIO is not set # CONFIG_HAMRADIO is not set
CONFIG_HAS_DMA=y CONFIG_HAS_DMA=y
CONFIG_HAS_IOMEM=y CONFIG_HAS_IOMEM=y
@ -108,7 +109,7 @@ CONFIG_IRQ_CPU=y
# CONFIG_ISDN is not set # CONFIG_ISDN is not set
CONFIG_KEXEC=y CONFIG_KEXEC=y
CONFIG_LBD=y CONFIG_LBD=y
# CONFIG_LEDS_GPIO is not set CONFIG_LEDS_GPIO=y
# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
# CONFIG_LEMOTE_FULONG is not set # CONFIG_LEMOTE_FULONG is not set
# CONFIG_MACH_ALCHEMY is not set # CONFIG_MACH_ALCHEMY is not set

View file

@ -4,6 +4,7 @@
* for more details. * for more details.
* *
* Copyright (C) 2008 Maxime Bizon <mbizon@freebox.fr> * Copyright (C) 2008 Maxime Bizon <mbizon@freebox.fr>
* Copyright (C) 2009 Florian Fainelli <florian@openwrt.org>
*/ */
#include <linux/init.h> #include <linux/init.h>
@ -54,6 +55,35 @@ static struct board_info __initdata board_96338gw = {
}, },
.has_ohci0 = 1, .has_ohci0 = 1,
.leds = {
{
.name = "adsl",
.gpio = 3,
.active_low = 1,
},
{
.name = "ses",
.gpio = 5,
.active_low = 1,
},
{
.name = "ppp-fail",
.gpio = 4,
.active_low = 1,
},
{
.name = "power",
.gpio = 0,
.active_low = 1,
.default_trigger = "default-on",
},
{
.name = "stop",
.gpio = 1,
.active_low = 1,
}
},
}; };
static struct board_info __initdata board_96338w = { static struct board_info __initdata board_96338w = {
@ -64,7 +94,36 @@ static struct board_info __initdata board_96338w = {
.enet0 = { .enet0 = {
.force_speed_100 = 1, .force_speed_100 = 1,
.force_duplex_full = 1, .force_duplex_full = 1,
} },
.leds = {
{
.name = "adsl",
.gpio = 3,
.active_low = 1,
},
{
.name = "ses",
.gpio = 5,
.active_low = 1,
},
{
.name = "ppp-fail",
.gpio = 4,
.active_low = 1,
},
{
.name = "power",
.gpio = 0,
.active_low = 1,
.default_trigger = "default-on",
},
{
.name = "stop",
.gpio = 1,
.active_low = 1,
},
},
}; };
#endif #endif
@ -93,6 +152,36 @@ static struct board_info __initdata board_96348r = {
.has_phy = 1, .has_phy = 1,
.use_internal_phy = 1, .use_internal_phy = 1,
}, },
.leds = {
{
.name = "adsl-fail",
.gpio = 2,
.active_low = 1,
},
{
.name = "ppp",
.gpio = 3,
.active_low = 1,
},
{
.name = "ppp-fail",
.gpio = 4,
.active_low = 1,
},
{
.name = "power",
.gpio = 0,
.active_low = 1,
.default_trigger = "default-on",
},
{
.name = "stop",
.gpio = 1,
.active_low = 1,
},
},
}; };
static struct board_info __initdata board_96348gw_10 = { static struct board_info __initdata board_96348gw_10 = {
@ -123,6 +212,35 @@ static struct board_info __initdata board_96348gw_10 = {
.cs = 2, .cs = 2,
.ext_irq = 2, .ext_irq = 2,
}, },
.leds = {
{
.name = "adsl-fail",
.gpio = 2,
.active_low = 1,
},
{
.name = "ppp",
.gpio = 3,
.active_low = 1,
},
{
.name = "ppp-fail",
.gpio = 4,
.active_low = 1,
},
{
.name = "power",
.gpio = 0,
.active_low = 1,
.default_trigger = "default-on",
},
{
.name = "stop",
.gpio = 1,
.active_low = 1,
},
},
}; };
static struct board_info __initdata board_96348gw_11 = { static struct board_info __initdata board_96348gw_11 = {
@ -147,6 +265,35 @@ static struct board_info __initdata board_96348gw_11 = {
.has_ohci0 = 1, .has_ohci0 = 1,
.has_pccard = 1, .has_pccard = 1,
.has_ehci0 = 1, .has_ehci0 = 1,
.leds = {
{
.name = "adsl-fail",
.gpio = 2,
.active_low = 1,
},
{
.name = "ppp",
.gpio = 3,
.active_low = 1,
},
{
.name = "ppp-fail",
.gpio = 4,
.active_low = 1,
},
{
.name = "power",
.gpio = 0,
.active_low = 1,
.default_trigger = "default-on",
},
{
.name = "stop",
.gpio = 1,
.active_low = 1,
},
},
}; };
static struct board_info __initdata board_96348gw = { static struct board_info __initdata board_96348gw = {
@ -175,6 +322,35 @@ static struct board_info __initdata board_96348gw = {
.ext_irq = 2, .ext_irq = 2,
.cs = 2, .cs = 2,
}, },
.leds = {
{
.name = "adsl-fail",
.gpio = 2,
.active_low = 1,
},
{
.name = "ppp",
.gpio = 3,
.active_low = 1,
},
{
.name = "ppp-fail",
.gpio = 4,
.active_low = 1,
},
{
.name = "power",
.gpio = 0,
.active_low = 1,
.default_trigger = "default-on",
},
{
.name = "stop",
.gpio = 1,
.active_low = 1,
},
},
}; };
static struct board_info __initdata board_FAST2404 = { static struct board_info __initdata board_FAST2404 = {
@ -270,6 +446,33 @@ static struct board_info __initdata board_96358vw = {
.has_ohci0 = 1, .has_ohci0 = 1,
.has_pccard = 1, .has_pccard = 1,
.has_ehci0 = 1, .has_ehci0 = 1,
.leds = {
{
.name = "adsl-fail",
.gpio = 15,
.active_low = 1,
},
{
.name = "ppp",
.gpio = 22,
.active_low = 1,
},
{
.name = "ppp-fail",
.gpio = 23,
.active_low = 1,
},
{
.name = "power",
.gpio = 4,
.default_trigger = "default-on",
},
{
.name = "stop",
.gpio = 5,
},
},
}; };
static struct board_info __initdata board_96358vw2 = { static struct board_info __initdata board_96358vw2 = {
@ -294,6 +497,29 @@ static struct board_info __initdata board_96358vw2 = {
.has_ohci0 = 1, .has_ohci0 = 1,
.has_pccard = 1, .has_pccard = 1,
.has_ehci0 = 1, .has_ehci0 = 1,
.leds = {
{
.name = "adsl",
.gpio = 22,
.active_low = 1,
},
{
.name = "ppp-fail",
.gpio = 23,
},
{
.name = "power",
.gpio = 5,
.active_low = 1,
.default_trigger = "default-on",
},
{
.name = "stop",
.gpio = 4,
.active_low = 1,
},
},
}; };
static struct board_info __initdata board_AGPFS0 = { static struct board_info __initdata board_AGPFS0 = {
@ -546,6 +772,14 @@ static struct resource gpiodev_resource = {
.start = 0xFFFFFFFF, .start = 0xFFFFFFFF,
}; };
static struct gpio_led_platform_data bcm63xx_led_data;
static struct platform_device bcm63xx_gpio_leds = {
.name = "leds-gpio",
.id = 0,
.dev.platform_data = &bcm63xx_led_data,
};
/* /*
* third stage init callback, register all board devices. * third stage init callback, register all board devices.
*/ */
@ -606,6 +840,11 @@ int __init board_register_devices(void)
/* Register GPIODEV */ /* Register GPIODEV */
platform_device_register_simple("GPIODEV", 0, &gpiodev_resource, 1); platform_device_register_simple("GPIODEV", 0, &gpiodev_resource, 1);
bcm63xx_led_data.num_leds = ARRAY_SIZE(board.leds);
bcm63xx_led_data.leds = board.leds;
platform_device_register(&bcm63xx_gpio_leds);
return 0; return 0;
} }

View file

@ -2,6 +2,8 @@
#define BOARD_BCM963XX_H_ #define BOARD_BCM963XX_H_
#include <linux/types.h> #include <linux/types.h>
#include <linux/gpio.h>
#include <linux/leds.h>
#include <bcm63xx_dev_enet.h> #include <bcm63xx_dev_enet.h>
#include <bcm63xx_dev_dsp.h> #include <bcm63xx_dev_dsp.h>
@ -51,6 +53,9 @@ struct board_info {
/* DSP config */ /* DSP config */
struct bcm63xx_dsp_platform_data dsp; struct bcm63xx_dsp_platform_data dsp;
/* GPIO LEDs */
struct gpio_led leds[5];
}; };
#endif /* ! BOARD_BCM963XX_H_ */ #endif /* ! BOARD_BCM963XX_H_ */