[ARM] 4758/1: [AT91] LEDs
Move the LED initialization code out of the various *_devices.c files, and into leds.c. Also add support for NEW_LEDs. Patch from David Brownell. Signed-off-by: Andrew Victor <linux@maxim.org.za> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
committed by
Russell King
parent
c8f385a631
commit
a04ff1af97
@@ -45,7 +45,7 @@ obj-$(CONFIG_MACH_AT91SAM9RLEK) += board-sam9rlek.o
|
|||||||
obj-$(CONFIG_MACH_AT91EB01) += board-eb01.o
|
obj-$(CONFIG_MACH_AT91EB01) += board-eb01.o
|
||||||
|
|
||||||
# Drivers
|
# Drivers
|
||||||
obj-$(CONFIG_LEDS) += leds.o
|
obj-y += leds.o
|
||||||
|
|
||||||
# Power Management
|
# Power Management
|
||||||
obj-$(CONFIG_PM) += pm.o
|
obj-$(CONFIG_PM) += pm.o
|
||||||
|
@@ -613,28 +613,6 @@ static void __init at91_add_device_watchdog(void) {}
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
|
||||||
* LEDs
|
|
||||||
* -------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
#if defined(CONFIG_LEDS)
|
|
||||||
u8 at91_leds_cpu;
|
|
||||||
u8 at91_leds_timer;
|
|
||||||
|
|
||||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led)
|
|
||||||
{
|
|
||||||
/* Enable GPIO to access the LEDs */
|
|
||||||
at91_set_gpio_output(cpu_led, 1);
|
|
||||||
at91_set_gpio_output(timer_led, 1);
|
|
||||||
|
|
||||||
at91_leds_cpu = cpu_led;
|
|
||||||
at91_leds_timer = timer_led;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* SSC -- Synchronous Serial Controller
|
* SSC -- Synchronous Serial Controller
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
@@ -584,28 +584,6 @@ static void __init at91_add_device_watchdog(void) {}
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
|
||||||
* LEDs
|
|
||||||
* -------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
#if defined(CONFIG_LEDS)
|
|
||||||
u8 at91_leds_cpu;
|
|
||||||
u8 at91_leds_timer;
|
|
||||||
|
|
||||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led)
|
|
||||||
{
|
|
||||||
/* Enable GPIO to access the LEDs */
|
|
||||||
at91_set_gpio_output(cpu_led, 1);
|
|
||||||
at91_set_gpio_output(timer_led, 1);
|
|
||||||
|
|
||||||
at91_leds_cpu = cpu_led;
|
|
||||||
at91_leds_timer = timer_led;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* SSC -- Synchronous Serial Controller
|
* SSC -- Synchronous Serial Controller
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
@@ -596,28 +596,6 @@ static void __init at91_add_device_watchdog(void) {}
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
|
||||||
* LEDs
|
|
||||||
* -------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
#if defined(CONFIG_LEDS)
|
|
||||||
u8 at91_leds_cpu;
|
|
||||||
u8 at91_leds_timer;
|
|
||||||
|
|
||||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led)
|
|
||||||
{
|
|
||||||
/* Enable GPIO to access the LEDs */
|
|
||||||
at91_set_gpio_output(cpu_led, 1);
|
|
||||||
at91_set_gpio_output(timer_led, 1);
|
|
||||||
|
|
||||||
at91_leds_cpu = cpu_led;
|
|
||||||
at91_leds_timer = timer_led;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* SSC -- Synchronous Serial Controller
|
* SSC -- Synchronous Serial Controller
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
@@ -843,28 +843,6 @@ static void __init at91_add_device_watchdog(void) {}
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
|
||||||
* LEDs
|
|
||||||
* -------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
#if defined(CONFIG_LEDS)
|
|
||||||
u8 at91_leds_cpu;
|
|
||||||
u8 at91_leds_timer;
|
|
||||||
|
|
||||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led)
|
|
||||||
{
|
|
||||||
/* Enable GPIO to access the LEDs */
|
|
||||||
at91_set_gpio_output(cpu_led, 1);
|
|
||||||
at91_set_gpio_output(timer_led, 1);
|
|
||||||
|
|
||||||
at91_leds_cpu = cpu_led;
|
|
||||||
at91_leds_timer = timer_led;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* SSC -- Synchronous Serial Controller
|
* SSC -- Synchronous Serial Controller
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
@@ -449,28 +449,6 @@ static void __init at91_add_device_watchdog(void) {}
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
|
||||||
* LEDs
|
|
||||||
* -------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
#if defined(CONFIG_LEDS)
|
|
||||||
u8 at91_leds_cpu;
|
|
||||||
u8 at91_leds_timer;
|
|
||||||
|
|
||||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led)
|
|
||||||
{
|
|
||||||
/* Enable GPIO to access the LEDs */
|
|
||||||
at91_set_gpio_output(cpu_led, 1);
|
|
||||||
at91_set_gpio_output(timer_led, 1);
|
|
||||||
|
|
||||||
at91_leds_cpu = cpu_led;
|
|
||||||
at91_leds_timer = timer_led;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* SSC -- Synchronous Serial Controller
|
* SSC -- Synchronous Serial Controller
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
@@ -14,11 +14,62 @@
|
|||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
|
||||||
#include <asm/mach-types.h>
|
#include <asm/mach-types.h>
|
||||||
#include <asm/leds.h>
|
|
||||||
#include <asm/arch/board.h>
|
#include <asm/arch/board.h>
|
||||||
#include <asm/arch/gpio.h>
|
#include <asm/arch/gpio.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#if defined(CONFIG_NEW_LEDS)
|
||||||
|
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* New cross-platform LED support.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static struct gpio_led_platform_data led_data;
|
||||||
|
|
||||||
|
static struct platform_device at91_leds = {
|
||||||
|
.name = "leds-gpio",
|
||||||
|
.id = -1,
|
||||||
|
.dev.platform_data = &led_data,
|
||||||
|
};
|
||||||
|
|
||||||
|
void __init at91_gpio_leds(struct gpio_led *leds, int nr)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!nr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; i < nr; i++)
|
||||||
|
at91_set_gpio_output(leds[i].gpio, leds[i].active_low);
|
||||||
|
|
||||||
|
led_data.leds = leds;
|
||||||
|
led_data.num_leds = nr;
|
||||||
|
platform_device_register(&at91_leds);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
void __init at91_gpio_leds(struct gpio_led *leds, int nr) {}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* ------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#if defined(CONFIG_LEDS)
|
||||||
|
|
||||||
|
#include <asm/leds.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Old ARM-specific LED framework; not fully functional when generic time is
|
||||||
|
* in use.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static u8 at91_leds_cpu;
|
||||||
|
static u8 at91_leds_timer;
|
||||||
|
|
||||||
static inline void at91_led_on(unsigned int led)
|
static inline void at91_led_on(unsigned int led)
|
||||||
{
|
{
|
||||||
at91_set_gpio_value(led, 0);
|
at91_set_gpio_value(led, 0);
|
||||||
@@ -93,3 +144,18 @@ static int __init leds_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
__initcall(leds_init);
|
__initcall(leds_init);
|
||||||
|
|
||||||
|
|
||||||
|
void __init at91_init_leds(u8 cpu_led, u8 timer_led)
|
||||||
|
{
|
||||||
|
/* Enable GPIO to access the LEDs */
|
||||||
|
at91_set_gpio_output(cpu_led, 1);
|
||||||
|
at91_set_gpio_output(timer_led, 1);
|
||||||
|
|
||||||
|
at91_leds_cpu = cpu_led;
|
||||||
|
at91_leds_timer = timer_led;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
|
||||||
|
#endif
|
||||||
|
@@ -34,6 +34,7 @@
|
|||||||
#include <linux/mtd/partitions.h>
|
#include <linux/mtd/partitions.h>
|
||||||
#include <linux/device.h>
|
#include <linux/device.h>
|
||||||
#include <linux/i2c.h>
|
#include <linux/i2c.h>
|
||||||
|
#include <linux/leds.h>
|
||||||
#include <linux/spi/spi.h>
|
#include <linux/spi/spi.h>
|
||||||
|
|
||||||
/* USB Device */
|
/* USB Device */
|
||||||
@@ -157,9 +158,8 @@ extern void __init at91_add_device_ac97(struct atmel_ac97_data *data);
|
|||||||
extern void __init at91_add_device_isi(void);
|
extern void __init at91_add_device_isi(void);
|
||||||
|
|
||||||
/* LEDs */
|
/* LEDs */
|
||||||
extern u8 at91_leds_cpu;
|
|
||||||
extern u8 at91_leds_timer;
|
|
||||||
extern void __init at91_init_leds(u8 cpu_led, u8 timer_led);
|
extern void __init at91_init_leds(u8 cpu_led, u8 timer_led);
|
||||||
|
extern void __init at91_gpio_leds(struct gpio_led *leds, int nr);
|
||||||
|
|
||||||
/* FIXME: this needs a better location, but gets stuff building again */
|
/* FIXME: this needs a better location, but gets stuff building again */
|
||||||
extern int at91_suspend_entering_slow_clock(void);
|
extern int at91_suspend_entering_slow_clock(void);
|
||||||
|
Reference in New Issue
Block a user