leds.c 1.0 KB

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