leds.c 1021 B

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