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: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
This commit is contained in:
parent
e3986f6380
commit
f9f451d9ca
2 changed files with 46 additions and 1 deletions
|
@ -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 @@
|
||||||
#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)
|
||||||
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)
|
||||||
|
|
||||||
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
|
||||||
#
|
#
|
||||||
# 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
|
||||||
|
|
Loading…
Reference in a new issue