diff options
Diffstat (limited to 'target/linux')
4 files changed, 259 insertions, 2 deletions
diff --git a/target/linux/brcm63xx/base-files/etc/diag.sh b/target/linux/brcm63xx/base-files/etc/diag.sh new file mode 100755 index 000000000..325e4806e --- /dev/null +++ b/target/linux/brcm63xx/base-files/etc/diag.sh @@ -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 +} diff --git a/target/linux/brcm63xx/config-2.6.27 b/target/linux/brcm63xx/config-2.6.27 index 387df15f7..1b638dc25 100644 --- a/target/linux/brcm63xx/config-2.6.27 +++ b/target/linux/brcm63xx/config-2.6.27 @@ -77,6 +77,7 @@ CONFIG_GENERIC_GPIO=y  # CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set  CONFIG_GPIOLIB=y  CONFIG_GPIO_DEVICE=y +CONFIG_GPIO_SYSFS=y  # CONFIG_HAMRADIO is not set  CONFIG_HAS_DMA=y  CONFIG_HAS_IOMEM=y @@ -108,7 +109,7 @@ CONFIG_IRQ_CPU=y  # CONFIG_ISDN is not set  CONFIG_KEXEC=y  CONFIG_LBD=y -# CONFIG_LEDS_GPIO is not set +CONFIG_LEDS_GPIO=y  # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set  # CONFIG_LEMOTE_FULONG is not set  # CONFIG_MACH_ALCHEMY is not set diff --git a/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c b/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c index e3ae72bff..52d4c27a0 100644 --- a/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c @@ -4,6 +4,7 @@   * for more details.   *   * Copyright (C) 2008 Maxime Bizon <mbizon@freebox.fr> + * Copyright (C) 2009 Florian Fainelli <florian@openwrt.org>   */  #include <linux/init.h> @@ -54,6 +55,35 @@ static struct board_info __initdata board_96338gw = {  	},  	.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 = { @@ -64,7 +94,36 @@ static struct board_info __initdata board_96338w = {  	.enet0 = {  		.force_speed_100	= 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 @@ -93,6 +152,36 @@ static struct board_info __initdata board_96348r = {  		.has_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 = {  @@ -123,6 +212,35 @@ static struct board_info __initdata board_96348gw_10 = {  		.cs			= 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 = { @@ -147,6 +265,35 @@ static struct board_info __initdata board_96348gw_11 = {  	.has_ohci0 = 1,  	.has_pccard = 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 = { @@ -175,6 +322,35 @@ static struct board_info __initdata board_96348gw = {  		.ext_irq		= 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 = { @@ -270,6 +446,33 @@ static struct board_info __initdata board_96358vw = {  	.has_ohci0 = 1,  	.has_pccard = 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 = { @@ -294,6 +497,29 @@ static struct board_info __initdata board_96358vw2 = {  	.has_ohci0 = 1,  	.has_pccard = 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 = { @@ -546,6 +772,14 @@ static struct resource gpiodev_resource = {  	.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.   */ @@ -606,6 +840,11 @@ int __init board_register_devices(void)  	/* Register GPIODEV */  	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;  } diff --git a/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/board_bcm963xx.h b/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/board_bcm963xx.h index 85d1e5f41..d154b2859 100644 --- a/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/board_bcm963xx.h +++ b/target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/board_bcm963xx.h @@ -2,6 +2,8 @@  #define BOARD_BCM963XX_H_  #include <linux/types.h> +#include <linux/gpio.h> +#include <linux/leds.h>  #include <bcm63xx_dev_enet.h>  #include <bcm63xx_dev_dsp.h> @@ -51,6 +53,9 @@ struct board_info {  	/* DSP config */  	struct bcm63xx_dsp_platform_data dsp; + +	/* GPIO LEDs */ +	struct gpio_led leds[5];  };  #endif /* ! BOARD_BCM963XX_H_ */  | 
