mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
[AVR32] leds-gpio for stk1000
Add GPIO led support: J2 to either block of LEDs on the STK1000. This uses the new LEDS_GPIO driver, and sets up a heartbeat trigger by default ... either bright (!!) amber, or a more interesting purple. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
This commit is contained in:
parent
28e8351ac2
commit
ad93ab0a6e
2 changed files with 88 additions and 0 deletions
|
@ -50,4 +50,30 @@ config BOARD_ATSTK1002_SPI1
|
|||
GPIO lines and accessed through the J1 jumper block. Say "y"
|
||||
here to configure that SPI controller.
|
||||
|
||||
config BOARD_ATSTK1002_J2_LED
|
||||
bool
|
||||
default BOARD_ATSTK1002_J2_LED8 || BOARD_ATSTK1002_J2_RGB
|
||||
|
||||
choice
|
||||
prompt "LEDs connected to J2:"
|
||||
depends on LEDS_GPIO && !BOARD_ATSTK1002_SW4_CUSTOM
|
||||
optional
|
||||
help
|
||||
Select this if you have jumpered the J2 jumper block to the
|
||||
LED0..LED7 amber leds, or to the RGB leds, using a ten-pin
|
||||
IDC cable. A default "heartbeat" trigger is provided, but
|
||||
you can of course override this.
|
||||
|
||||
config BOARD_ATSTK1002_J2_LED8
|
||||
bool "LED0..LED7"
|
||||
help
|
||||
Select this if J2 is jumpered to LED0..LED7 amber leds.
|
||||
|
||||
config BOARD_ATSTK1002_J2_RGB
|
||||
bool "RGB leds"
|
||||
help
|
||||
Select this if J2 is jumpered to the RGB leds.
|
||||
|
||||
endchoice
|
||||
|
||||
endif # stk 1002
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <linux/etherdevice.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/types.h>
|
||||
|
@ -120,6 +121,65 @@ static void __init set_hw_addr(struct platform_device *pdev)
|
|||
clk_put(pclk);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BOARD_ATSTK1002_J2_LED
|
||||
|
||||
static struct gpio_led stk_j2_led[] = {
|
||||
#ifdef CONFIG_BOARD_ATSTK1002_J2_LED8
|
||||
#define LEDSTRING "J2 jumpered to LED8"
|
||||
{ .name = "led0:amber", .gpio = GPIO_PIN_PB( 8), },
|
||||
{ .name = "led1:amber", .gpio = GPIO_PIN_PB( 9), },
|
||||
{ .name = "led2:amber", .gpio = GPIO_PIN_PB(10), },
|
||||
{ .name = "led3:amber", .gpio = GPIO_PIN_PB(13), },
|
||||
{ .name = "led4:amber", .gpio = GPIO_PIN_PB(14), },
|
||||
{ .name = "led5:amber", .gpio = GPIO_PIN_PB(15), },
|
||||
{ .name = "led6:amber", .gpio = GPIO_PIN_PB(16), },
|
||||
{ .name = "led7:amber", .gpio = GPIO_PIN_PB(30),
|
||||
.default_trigger = "heartbeat", },
|
||||
#else /* RGB */
|
||||
#define LEDSTRING "J2 jumpered to RGB LEDs"
|
||||
{ .name = "r1:red", .gpio = GPIO_PIN_PB( 8), },
|
||||
{ .name = "g1:green", .gpio = GPIO_PIN_PB(10), },
|
||||
{ .name = "b1:blue", .gpio = GPIO_PIN_PB(14), },
|
||||
|
||||
{ .name = "r2:red", .gpio = GPIO_PIN_PB( 9),
|
||||
.default_trigger = "heartbeat", },
|
||||
{ .name = "g2:green", .gpio = GPIO_PIN_PB(13), },
|
||||
{ .name = "b2:blue", .gpio = GPIO_PIN_PB(15),
|
||||
.default_trigger = "heartbeat", },
|
||||
/* PB16, PB30 unused */
|
||||
#endif
|
||||
};
|
||||
|
||||
static struct gpio_led_platform_data stk_j2_led_data = {
|
||||
.num_leds = ARRAY_SIZE(stk_j2_led),
|
||||
.leds = stk_j2_led,
|
||||
};
|
||||
|
||||
static struct platform_device stk_j2_led_dev = {
|
||||
.name = "leds-gpio",
|
||||
.id = 2, /* gpio block J2 */
|
||||
.dev = {
|
||||
.platform_data = &stk_j2_led_data,
|
||||
},
|
||||
};
|
||||
|
||||
static void setup_j2_leds(void)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(stk_j2_led); i++)
|
||||
at32_select_gpio(stk_j2_led[i].gpio, AT32_GPIOF_OUTPUT);
|
||||
|
||||
printk("STK1002: " LEDSTRING "\n");
|
||||
platform_device_register(&stk_j2_led_dev);
|
||||
}
|
||||
|
||||
#else
|
||||
static void setup_j2_leds(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
void __init setup_board(void)
|
||||
{
|
||||
#ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM
|
||||
|
@ -185,6 +245,8 @@ static int __init atstk1002_init(void)
|
|||
at32_add_device_ssc(0, ATMEL_SSC_TX);
|
||||
#endif
|
||||
|
||||
setup_j2_leds();
|
||||
|
||||
return 0;
|
||||
}
|
||||
postcore_initcall(atstk1002_init);
|
||||
|
|
Loading…
Reference in a new issue