timer.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. #ifndef __TIMER_H__
  2. #define __TIMER_H__
  3. #include <comdef.h>
  4. #if 0
  5. #define RUN_MODE_CONTINOUS 0
  6. #define RUN_MODE_SINGLE 1
  7. #define SOC_SYS_TIMER 0 /* system timer0 */
  8. #define CONFIG_SYS_HZ_CLOCK TIMER_CLK_HZ
  9. struct timer_driver {
  10. void *base;
  11. unsigned long freq;
  12. int irq;
  13. };
  14. struct timer_init_s{
  15. u32 int_en;
  16. u32 run_mode;
  17. u32 size;
  18. u32 one_shot;
  19. u32 count; /* TODO: time value */
  20. void (*callback)(void*);
  21. void *arg;
  22. u32 wdog_reset_en;
  23. };
  24. /*
  25. * public function definition
  26. */
  27. /*---------------------------------------------------
  28. *
  29. * timer_clr_int_status:
  30. * This function clear int_status register.
  31. *
  32. * timer_clr_int_status() interface:
  33. * id:0/1/2 indicate clear timer0/timer1/timer2
  34. int_status register.
  35. *
  36. * Returns: 0 on success, not 0 on failure
  37. */
  38. int timer_clr_int_status(u32 id);
  39. /*---------------------------------------------------
  40. *
  41. * timer_set:
  42. * This function set registers defined by timer_init_s
  43. struct.
  44. *
  45. * timer_set() interface:
  46. * id:0/1/2 indicate clear timer0/timer1/timer2
  47. int_status register.
  48. init:timer_init_s struct ptr.
  49. *
  50. * Returns: 0 on success, not 0 on failure
  51. */
  52. int timer_set(u32 id,struct timer_init_s *init);
  53. /*---------------------------------------------------
  54. *
  55. */
  56. void timer_reload(u32 id);
  57. /*---------------------------------------------------
  58. *
  59. * timer_stop:
  60. * This function disable and clear interrupt regs of the timer.
  61. *
  62. * timer_stop() interface:
  63. * id:0/1/2 indicate clear timer0/timer1/timer2
  64. int_status register.
  65. *
  66. * Returns: 0 on success, not 0 on failure
  67. */
  68. int timer_stop(u32 id);
  69. /*---------------------------------------------------
  70. *
  71. * timer_start:
  72. * This function enable the timer.
  73. *
  74. * timer_start() interface:
  75. * id:0/1/2 indicate clear timer0/timer1/timer2
  76. int_status register.
  77. *
  78. * Returns: 0 on success, not 0 on failure
  79. */
  80. int timer_start(u32 id);
  81. /*---------------------------------------------------
  82. * timer_init:
  83. * This function initialize module hardware and some software structures.
  84. * You must call this function before other operation
  85. *
  86. * Returns: 0 on success, not 0 on failure
  87. */
  88. int timer_init(int id);
  89. /*---------------------------------------------------
  90. * module_exit:
  91. * This function free memory.
  92. *
  93. * Returns: 0 on success, not 0 on failure
  94. */
  95. int timer_exit(void);
  96. #endif
  97. /*---------------------------------------------------
  98. *
  99. * udelay:
  100. * This function used for delay usec microsecond.
  101. *
  102. * udelay() interface:
  103. * usec:0~357913941(MAX) int number.
  104. *
  105. * Returns: 0 on success, not 0 on failure
  106. */
  107. int udelay(u32 usec);
  108. void mdelay(unsigned int ms);
  109. void sdelay(unsigned int s);
  110. u32 get_timer(unsigned int base);
  111. /*---------------------------------------------------
  112. *
  113. * get_ticks:
  114. * This function get system ticks number.
  115. *
  116. * get_ticks() interface:
  117. * tick_base:base number of system ticks.
  118. *
  119. * Returns: a long long int number represent how many
  120. ticks from system start based on tick_base.
  121. */
  122. unsigned long long get_ticks(void);
  123. /*---------------------------------------------------
  124. *
  125. * usec_to_tick:
  126. * This function convert microsecond to system ticks.
  127. *
  128. * usec_to_tick() interface:
  129. * usec:0~357913941(MAX) int number.
  130. *
  131. * Returns: converted system ticks.
  132. */
  133. u64 usec_to_tick(u64 usec);
  134. #define delay udelay
  135. #endif /* __TIMER_H__ */