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 <asm/hardware.h> 19 #include <asm/leds.h> 20 #include <asm/system.h> 21 #include <asm/mach-types.h> 22 23 static spinlock_t leds_lock; 24 ebsa110_leds_event(led_event_t ledevt)25static void ebsa110_leds_event(led_event_t ledevt) 26 { 27 unsigned long flags; 28 29 spin_lock_irqsave(&leds_lock, flags); 30 31 switch(ledevt) { 32 case led_timer: 33 *(volatile unsigned char *)SOFT_BASE ^= 128; 34 break; 35 36 default: 37 break; 38 } 39 40 spin_unlock_irqrestore(&leds_lock, flags); 41 } 42 leds_init(void)43static int __init leds_init(void) 44 { 45 if (machine_is_ebsa110()) 46 leds_event = ebsa110_leds_event; 47 48 return 0; 49 } 50 51 __initcall(leds_init); 52