Path: blob/master/arch/arm/mach-pxa/leds-mainstone.c
10817 views
/*1* linux/arch/arm/mach-pxa/leds-mainstone.c2*3* Author: Nicolas Pitre4* Created: Nov 05, 20025* Copyright: MontaVista Software Inc.6*7* This program is free software; you can redistribute it and/or modify8* it under the terms of the GNU General Public License version 2 as9* published by the Free Software Foundation.10*/1112#include <linux/init.h>1314#include <mach/hardware.h>15#include <asm/leds.h>16#include <asm/system.h>1718#include <mach/pxa27x.h>19#include <mach/mainstone.h>2021#include "leds.h"222324/* 8 discrete leds available for general use: */25#define D28 (1 << 0)26#define D27 (1 << 1)27#define D26 (1 << 2)28#define D25 (1 << 3)29#define D24 (1 << 4)30#define D23 (1 << 5)31#define D22 (1 << 6)32#define D21 (1 << 7)3334#define LED_STATE_ENABLED 135#define LED_STATE_CLAIMED 23637static unsigned int led_state;38static unsigned int hw_led_state;3940void mainstone_leds_event(led_event_t evt)41{42unsigned long flags;4344local_irq_save(flags);4546switch (evt) {47case led_start:48hw_led_state = 0;49led_state = LED_STATE_ENABLED;50break;5152case led_stop:53led_state &= ~LED_STATE_ENABLED;54break;5556case led_claim:57led_state |= LED_STATE_CLAIMED;58hw_led_state = 0;59break;6061case led_release:62led_state &= ~LED_STATE_CLAIMED;63hw_led_state = 0;64break;6566#ifdef CONFIG_LEDS_TIMER67case led_timer:68hw_led_state ^= D26;69break;70#endif7172#ifdef CONFIG_LEDS_CPU73case led_idle_start:74hw_led_state &= ~D27;75break;7677case led_idle_end:78hw_led_state |= D27;79break;80#endif8182case led_halted:83break;8485case led_green_on:86hw_led_state |= D21;87break;8889case led_green_off:90hw_led_state &= ~D21;91break;9293case led_amber_on:94hw_led_state |= D22;95break;9697case led_amber_off:98hw_led_state &= ~D22;99break;100101case led_red_on:102hw_led_state |= D23;103break;104105case led_red_off:106hw_led_state &= ~D23;107break;108109default:110break;111}112113if (led_state & LED_STATE_ENABLED)114MST_LEDCTRL = (MST_LEDCTRL | 0xff) & ~hw_led_state;115else116MST_LEDCTRL |= 0xff;117118local_irq_restore(flags);119}120121122