Path: blob/master/arch/arm/mach-omap1/leds-innovator.c
10817 views
/*1* linux/arch/arm/mach-omap1/leds-innovator.c2*/3#include <linux/init.h>45#include <mach/hardware.h>6#include <asm/leds.h>7#include <asm/system.h>89#include "leds.h"101112#define LED_STATE_ENABLED 113#define LED_STATE_CLAIMED 21415static unsigned int led_state;16static unsigned int hw_led_state;1718void innovator_leds_event(led_event_t evt)19{20unsigned long flags;2122local_irq_save(flags);2324switch (evt) {25case led_start:26hw_led_state = 0;27led_state = LED_STATE_ENABLED;28break;2930case led_stop:31led_state &= ~LED_STATE_ENABLED;32hw_led_state = 0;33break;3435case led_claim:36led_state |= LED_STATE_CLAIMED;37hw_led_state = 0;38break;3940case led_release:41led_state &= ~LED_STATE_CLAIMED;42hw_led_state = 0;43break;4445#ifdef CONFIG_LEDS_TIMER46case led_timer:47if (!(led_state & LED_STATE_CLAIMED))48hw_led_state ^= 0;49break;50#endif5152#ifdef CONFIG_LEDS_CPU53case led_idle_start:54if (!(led_state & LED_STATE_CLAIMED))55hw_led_state |= 0;56break;5758case led_idle_end:59if (!(led_state & LED_STATE_CLAIMED))60hw_led_state &= ~0;61break;62#endif6364case led_halted:65break;6667case led_green_on:68if (led_state & LED_STATE_CLAIMED)69hw_led_state &= ~0;70break;7172case led_green_off:73if (led_state & LED_STATE_CLAIMED)74hw_led_state |= 0;75break;7677case led_amber_on:78break;7980case led_amber_off:81break;8283case led_red_on:84if (led_state & LED_STATE_CLAIMED)85hw_led_state &= ~0;86break;8788case led_red_off:89if (led_state & LED_STATE_CLAIMED)90hw_led_state |= 0;91break;9293default:94break;95}9697local_irq_restore(flags);98}99100101