timesync.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. * TimeSync API driver.
  3. *
  4. * Copyright 2016 Google Inc.
  5. * Copyright 2016 Linaro Ltd.
  6. *
  7. * Released under the GPLv2 only.
  8. */
  9. #ifndef __TIMESYNC_H
  10. #define __TIMESYNC_H
  11. struct gb_svc;
  12. struct gb_interface;
  13. struct gb_timesync_svc;
  14. /* Platform */
  15. u64 gb_timesync_platform_get_counter(void);
  16. u32 gb_timesync_platform_get_clock_rate(void);
  17. int gb_timesync_platform_lock_bus(struct gb_timesync_svc *pdata);
  18. void gb_timesync_platform_unlock_bus(void);
  19. int gb_timesync_platform_init(void);
  20. void gb_timesync_platform_exit(void);
  21. /* Core API */
  22. int gb_timesync_interface_add(struct gb_interface *interface);
  23. void gb_timesync_interface_remove(struct gb_interface *interface);
  24. int gb_timesync_svc_add(struct gb_svc *svc);
  25. void gb_timesync_svc_remove(struct gb_svc *svc);
  26. u64 gb_timesync_get_frame_time_by_interface(struct gb_interface *interface);
  27. u64 gb_timesync_get_frame_time_by_svc(struct gb_svc *svc);
  28. int gb_timesync_to_timespec_by_svc(struct gb_svc *svc, u64 frame_time,
  29. struct timespec *ts);
  30. int gb_timesync_to_timespec_by_interface(struct gb_interface *interface,
  31. u64 frame_time, struct timespec *ts);
  32. int gb_timesync_schedule_synchronous(struct gb_interface *intf);
  33. void gb_timesync_schedule_asynchronous(struct gb_interface *intf);
  34. void gb_timesync_irq(struct gb_timesync_svc *timesync_svc);
  35. int gb_timesync_init(void);
  36. void gb_timesync_exit(void);
  37. #endif /* __TIMESYNC_H */