Commit f9f451d9 authored by David Brownell's avatar David Brownell Committed by Richard Purdie

leds: leds-gpio for ngw100

Add GPIO leds to the NGW100 platform and its defconfig.
Access through /sys/class/leds/{a,b,sys}/* files; one
defaults to a heartbeat.
Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarRichard Purdie <rpurdie@rpsys.net>
parent e3986f63
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <linux/linkage.h> #include <linux/linkage.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/leds.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <asm/io.h> #include <asm/io.h>
...@@ -21,6 +22,7 @@ ...@@ -21,6 +22,7 @@
#include <asm/arch/at32ap7000.h> #include <asm/arch/at32ap7000.h>
#include <asm/arch/board.h> #include <asm/arch/board.h>
#include <asm/arch/init.h> #include <asm/arch/init.h>
#include <asm/arch/portmux.h>
/* Initialized by bootloader-specific startup code. */ /* Initialized by bootloader-specific startup code. */
struct tag *bootloader_tags __initdata; struct tag *bootloader_tags __initdata;
...@@ -100,8 +102,31 @@ void __init setup_board(void) ...@@ -100,8 +102,31 @@ void __init setup_board(void)
at32_setup_serial_console(0); at32_setup_serial_console(0);
} }
static const struct gpio_led ngw_leds[] = {
{ .name = "sys", .gpio = GPIO_PIN_PA(16), .active_low = 1,
.default_trigger = "heartbeat",
},
{ .name = "a", .gpio = GPIO_PIN_PA(19), .active_low = 1, },
{ .name = "b", .gpio = GPIO_PIN_PE(19), .active_low = 1, },
};
static const struct gpio_led_platform_data ngw_led_data = {
.num_leds = ARRAY_SIZE(ngw_leds),
.leds = (void *) ngw_leds,
};
static struct platform_device ngw_gpio_leds = {
.name = "leds-gpio",
.id = -1,
.dev = {
.platform_data = (void *) &ngw_led_data,
}
};
static int __init atngw100_init(void) static int __init atngw100_init(void)
{ {
unsigned i;
/* /*
* ATNGW100 uses 16-bit SDRAM interface, so we don't need to * ATNGW100 uses 16-bit SDRAM interface, so we don't need to
* reserve any pins for it. * reserve any pins for it.
...@@ -116,6 +141,12 @@ static int __init atngw100_init(void) ...@@ -116,6 +141,12 @@ static int __init atngw100_init(void)
at32_add_device_spi(0, spi0_board_info, ARRAY_SIZE(spi0_board_info)); at32_add_device_spi(0, spi0_board_info, ARRAY_SIZE(spi0_board_info));
for (i = 0; i < ARRAY_SIZE(ngw_leds); i++) {
at32_select_gpio(ngw_leds[i].gpio,
AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
}
platform_device_register(&ngw_gpio_leds);
return 0; return 0;
} }
postcore_initcall(atngw100_init); postcore_initcall(atngw100_init);
...@@ -712,7 +712,21 @@ CONFIG_SPI_ATMEL=y ...@@ -712,7 +712,21 @@ CONFIG_SPI_ATMEL=y
# #
# LED devices # LED devices
# #
# CONFIG_NEW_LEDS is not set CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
#
# LED drivers
#
CONFIG_LEDS_GPIO=y
#
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
# #
# LED drivers # LED drivers
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment