timer.c 470 B

123456789101112131415161718192021222324
  1. #include "platform.h"
  2. #include "timer.h"
  3. #include "sys.h"
  4. #include "clkgen_ctrl_macro.h"
  5. #define TIMER_CLK_HZ 25000000
  6. u64 usec_to_tick(u32 usec)
  7. {
  8. u64 value;
  9. value = usec*(TIMER_CLK_HZ/1000000);
  10. return value;
  11. }
  12. /* delay x useconds */
  13. void udelay(unsigned long usec)
  14. {
  15. unsigned long tmp;
  16. tmp = readq((volatile void *)CLINT_CTRL_MTIME) + usec_to_tick(usec); /* get current timestamp */
  17. while (readq((volatile void *)CLINT_CTRL_MTIME) < tmp);
  18. }