Skip to content

Commit

Permalink
[AVR32] leds-gpio for stk1000
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
David Brownell authored and Haavard Skinnemoen committed Aug 15, 2007
1 parent 28e8351 commit ad93ab0
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 0 deletions.
26 changes: 26 additions & 0 deletions arch/avr32/boards/atstk1000/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
62 changes: 62 additions & 0 deletions arch/avr32/boards/atstk1000/atstk1002.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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);

0 comments on commit ad93ab0

Please sign in to comment.