blob: 72fc9a35a00246e92f81322e8f5e5fddd2ee2a5f [file] [log] [blame]
Bryan O'Donoghue970dc852016-06-05 14:03:26 +01001/*
2 * TimeSync API driver.
3 *
4 * Copyright 2016 Google Inc.
5 * Copyright 2016 Linaro Ltd.
6 *
7 * Released under the GPLv2 only.
8 */
9
10#ifndef __TIMESYNC_H
11#define __TIMESYNC_H
12
13struct gb_svc;
14struct gb_interface;
15struct gb_timesync_svc;
16
17/* Platform */
18u64 gb_timesync_platform_get_counter(void);
19u32 gb_timesync_platform_get_clock_rate(void);
20int gb_timesync_platform_lock_bus(struct gb_timesync_svc *pdata);
21void gb_timesync_platform_unlock_bus(void);
22
23int gb_timesync_platform_init(void);
24void gb_timesync_platform_exit(void);
25
26/* Core API */
27int gb_timesync_interface_add(struct gb_interface *interface);
28void gb_timesync_interface_remove(struct gb_interface *interface);
29int gb_timesync_svc_add(struct gb_svc *svc);
30void gb_timesync_svc_remove(struct gb_svc *svc);
31
32u64 gb_timesync_get_frame_time_by_interface(struct gb_interface *interface);
33u64 gb_timesync_get_frame_time_by_svc(struct gb_svc *svc);
Bryan O'Donoghue00fdbae2016-06-05 14:03:29 +010034int gb_timesync_to_timespec_by_svc(struct gb_svc *svc, u64 frame_time,
35 struct timespec *ts);
36int gb_timesync_to_timespec_by_interface(struct gb_interface *interface,
37 u64 frame_time, struct timespec *ts);
Bryan O'Donoghue970dc852016-06-05 14:03:26 +010038
39int gb_timesync_schedule_synchronous(struct gb_interface *intf);
40void gb_timesync_schedule_asynchronous(struct gb_interface *intf);
41void gb_timesync_irq(struct gb_timesync_svc *timesync_svc);
42int gb_timesync_init(void);
43void gb_timesync_exit(void);
44
45#endif /* __TIMESYNC_H */