leds.c 998 B

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