led_se.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * linux/arch/sh/kernel/led_se.c
  3.  *
  4.  * Copyright (C) 2000 Stuart Menefy <stuart.menefy@st.com>
  5.  *
  6.  * May be copied or modified under the terms of the GNU General Public
  7.  * License.  See linux/COPYING for more information.
  8.  *
  9.  * This file contains Solution Engine specific LED code.
  10.  */
  11. #include <linux/config.h>
  12. #include <asm/hitachi_se.h>
  13. static void mach_led(int position, int value)
  14. {
  15. volatile unsigned short* p = (volatile unsigned short*)PA_LED;
  16. if (value) {
  17. *p |= (1<<8);
  18. } else {
  19. *p &= ~(1<<8);
  20. }
  21. }
  22. #ifdef CONFIG_HEARTBEAT
  23. #include <linux/sched.h>
  24. /* Cycle the LED's in the clasic Knightrider/Sun pattern */
  25. void heartbeat_se(void)
  26. {
  27. static unsigned int cnt = 0, period = 0;
  28. volatile unsigned short* p = (volatile unsigned short*)PA_LED;
  29. static unsigned bit = 0, up = 1;
  30. cnt += 1;
  31. if (cnt < period) {
  32. return;
  33. }
  34. cnt = 0;
  35. /* Go through the points (roughly!):
  36.  * f(0)=10, f(1)=16, f(2)=20, f(5)=35,f(inf)->110
  37.  */
  38. period = 110 - ( (300<<FSHIFT)/
  39.  ((avenrun[0]/5) + (3<<FSHIFT)) );
  40. if (up) {
  41. if (bit == 7) {
  42. bit--;
  43. up=0;
  44. } else {
  45. bit ++;
  46. }
  47. } else {
  48. if (bit == 0) {
  49. bit++;
  50. up=1;
  51. } else {
  52. bit--;
  53. }
  54. }
  55. *p = 1<<(bit+8);
  56. }
  57. #endif /* CONFIG_HEARTBEAT */