diff options
author | Bryan O'Donoghue <bryan.odonoghue@linaro.org> | 2016-05-12 12:43:51 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@google.com> | 2016-05-14 18:26:24 +0200 |
commit | fa433b619655bf2d253094074d132004a9fa479c (patch) | |
tree | 92d260093ea1daba0fa8ec6926982525ab37f1c0 /drivers/staging/greybus/control.c | |
parent | 5705020fbe2a274a1a49709e688b4cc471425036 (diff) |
greybus: control: Add TimeSync get-last-event logic
gb_control_timesync_get_last_event() sends a request asking for the
FrameTime at the last SVC strobe event. The responding entity returns the
FrameTime in the response phase of the request. Performing this operation
to an Interface after previously:
1. Synchronizing time using timesync-enable/timesync-authoritative
2. Sending an SVC_TIMESYNC_PING
will return the FrameTime of the responding entity at the SVC-ping. If
this command is sent before synchronization has been initiated or
successfully completed the responding entity should return an error
code.
- control.c::gb_control_timesync_get_last_event(u64 *frame_time)
Returns the FrameTime at the last SVC_TIMESYNC_PING to the AP Module.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Diffstat (limited to 'drivers/staging/greybus/control.c')
-rw-r--r-- | drivers/staging/greybus/control.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/staging/greybus/control.c b/drivers/staging/greybus/control.c index 13c68f3f01de..7a838068c1ad 100644 --- a/drivers/staging/greybus/control.c +++ b/drivers/staging/greybus/control.c @@ -177,6 +177,20 @@ int gb_control_timesync_disable(struct gb_control *control) NULL, 0); } +int gb_control_timesync_get_last_event(struct gb_control *control, + u64 *frame_time) +{ + struct gb_control_timesync_get_last_event_response response; + int ret; + + ret = gb_operation_sync(control->connection, + GB_CONTROL_TYPE_TIMESYNC_GET_LAST_EVENT, + NULL, 0, &response, sizeof(response)); + if (!ret) + *frame_time = le64_to_cpu(response.frame_time); + return ret; +} + int gb_control_timesync_authoritative(struct gb_control *control, u64 *frame_time, u8 count) { |