Path: blob/master/arch/arm/mach-pxa/leds-lubbock.c
10817 views
/*1* linux/arch/arm/mach-pxa/leds-lubbock.c2*3* Copyright (C) 2000 John Dorsey <[email protected]>4*5* Copyright (c) 2001 Jeff Sutherland <[email protected]>6*7* Original (leds-footbridge.c) by Russell King8*9* Major surgery on April 2004 by Nicolas Pitre for less global10* namespace collision. Mostly adapted the Mainstone version.11*/1213#include <linux/init.h>1415#include <mach/hardware.h>16#include <asm/leds.h>17#include <asm/system.h>18#include <mach/pxa25x.h>19#include <mach/lubbock.h>2021#include "leds.h"2223/*24* 8 discrete leds available for general use:25*26* Note: bits [15-8] are used to enable/blank the 8 7 segment hex displays27* so be sure to not monkey with them here.28*/2930#define D28 (1 << 0)31#define D27 (1 << 1)32#define D26 (1 << 2)33#define D25 (1 << 3)34#define D24 (1 << 4)35#define D23 (1 << 5)36#define D22 (1 << 6)37#define D21 (1 << 7)3839#define LED_STATE_ENABLED 140#define LED_STATE_CLAIMED 24142static unsigned int led_state;43static unsigned int hw_led_state;4445void lubbock_leds_event(led_event_t evt)46{47unsigned long flags;4849local_irq_save(flags);5051switch (evt) {52case led_start:53hw_led_state = 0;54led_state = LED_STATE_ENABLED;55break;5657case led_stop:58led_state &= ~LED_STATE_ENABLED;59break;6061case led_claim:62led_state |= LED_STATE_CLAIMED;63hw_led_state = 0;64break;6566case led_release:67led_state &= ~LED_STATE_CLAIMED;68hw_led_state = 0;69break;7071#ifdef CONFIG_LEDS_TIMER72case led_timer:73hw_led_state ^= D26;74break;75#endif7677#ifdef CONFIG_LEDS_CPU78case led_idle_start:79hw_led_state &= ~D27;80break;8182case led_idle_end:83hw_led_state |= D27;84break;85#endif8687case led_halted:88break;8990case led_green_on:91hw_led_state |= D21;92break;9394case led_green_off:95hw_led_state &= ~D21;96break;9798case led_amber_on:99hw_led_state |= D22;100break;101102case led_amber_off:103hw_led_state &= ~D22;104break;105106case led_red_on:107hw_led_state |= D23;108break;109110case led_red_off:111hw_led_state &= ~D23;112break;113114default:115break;116}117118if (led_state & LED_STATE_ENABLED)119LUB_DISC_BLNK_LED = (LUB_DISC_BLNK_LED | 0xff) & ~hw_led_state;120else121LUB_DISC_BLNK_LED |= 0xff;122123local_irq_restore(flags);124}125126127