1 /* 2 * linux/arch/arm/mach-ebsa110/leds.c 3 * 4 * Copyright (C) 1998 Russell King 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 * 10 * EBSA-110 LED control routines. We use the led as follows: 11 * 12 * - Red - toggles state every 50 timer interrupts 13 */ 14 #include <linux/module.h> 15 #include <linux/spinlock.h> 16 #include <linux/init.h> 17 18 #include <mach/hardware.h> 19 #include <asm/leds.h> 20 #include <asm/mach-types.h> 21 22 #include "core.h" 23 24 static spinlock_t leds_lock; 25 ebsa110_leds_event(led_event_t ledevt)26static void ebsa110_leds_event(led_event_t ledevt) 27 { 28 unsigned long flags; 29 30 spin_lock_irqsave(&leds_lock, flags); 31 32 switch(ledevt) { 33 case led_timer: 34 *(volatile unsigned char *)SOFT_BASE ^= 128; 35 break; 36 37 default: 38 break; 39 } 40 41 spin_unlock_irqrestore(&leds_lock, flags); 42 } 43 leds_init(void)44static int __init leds_init(void) 45 { 46 if (machine_is_ebsa110()) 47 leds_event = ebsa110_leds_event; 48 49 return 0; 50 } 51 52 __initcall(leds_init); 53