leds-innovator.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /*
  2. * linux/arch/arm/mach-omap1/leds-innovator.c
  3. */
  4. #include <linux/config.h>
  5. #include <linux/init.h>
  6. #include <asm/hardware.h>
  7. #include <asm/leds.h>
  8. #include <asm/system.h>
  9. #include "leds.h"
  10. #define LED_STATE_ENABLED 1
  11. #define LED_STATE_CLAIMED 2
  12. static unsigned int led_state;
  13. static unsigned int hw_led_state;
  14. void innovator_leds_event(led_event_t evt)
  15. {
  16. unsigned long flags;
  17. local_irq_save(flags);
  18. switch (evt) {
  19. case led_start:
  20. hw_led_state = 0;
  21. led_state = LED_STATE_ENABLED;
  22. break;
  23. case led_stop:
  24. led_state &= ~LED_STATE_ENABLED;
  25. hw_led_state = 0;
  26. break;
  27. case led_claim:
  28. led_state |= LED_STATE_CLAIMED;
  29. hw_led_state = 0;
  30. break;
  31. case led_release:
  32. led_state &= ~LED_STATE_CLAIMED;
  33. hw_led_state = 0;
  34. break;
  35. #ifdef CONFIG_LEDS_TIMER
  36. case led_timer:
  37. if (!(led_state & LED_STATE_CLAIMED))
  38. hw_led_state ^= 0;
  39. break;
  40. #endif
  41. #ifdef CONFIG_LEDS_CPU
  42. case led_idle_start:
  43. if (!(led_state & LED_STATE_CLAIMED))
  44. hw_led_state |= 0;
  45. break;
  46. case led_idle_end:
  47. if (!(led_state & LED_STATE_CLAIMED))
  48. hw_led_state &= ~0;
  49. break;
  50. #endif
  51. case led_halted:
  52. break;
  53. case led_green_on:
  54. if (led_state & LED_STATE_CLAIMED)
  55. hw_led_state &= ~0;
  56. break;
  57. case led_green_off:
  58. if (led_state & LED_STATE_CLAIMED)
  59. hw_led_state |= 0;
  60. break;
  61. case led_amber_on:
  62. break;
  63. case led_amber_off:
  64. break;
  65. case led_red_on:
  66. if (led_state & LED_STATE_CLAIMED)
  67. hw_led_state &= ~0;
  68. break;
  69. case led_red_off:
  70. if (led_state & LED_STATE_CLAIMED)
  71. hw_led_state |= 0;
  72. break;
  73. default:
  74. break;
  75. }
  76. if (led_state & LED_STATE_ENABLED)
  77. ;
  78. local_irq_restore(flags);
  79. }