diff options
author | Veera Sundaram Sankaran <veeras@codeaurora.org> | 2021-01-15 16:31:46 -0800 |
---|---|---|
committer | Sumit Semwal <sumit.semwal@linaro.org> | 2021-01-22 16:17:20 +0530 |
commit | 5a164ac4dbd21b82bcdc03186d40e455ff467fdc (patch) | |
tree | 87884c1234e677cf4d77744e1ce28f0038039381 /include/linux/dma-fence.h | |
parent | c7f59e3dd60313071a989227dcb69094f499d310 (diff) | |
download | linux-5a164ac4dbd21b82bcdc03186d40e455ff467fdc.tar.gz linux-5a164ac4dbd21b82bcdc03186d40e455ff467fdc.tar.bz2 linux-5a164ac4dbd21b82bcdc03186d40e455ff467fdc.zip |
dma-fence: allow signaling drivers to set fence timestamp
Some drivers have hardware capability to get the precise HW timestamp
of certain events based on which the fences are triggered. The delta
between the event HW timestamp & current HW reference timestamp can
be used to calculate the timestamp in kernel's CLOCK_MONOTONIC time
domain. This allows it to set accurate timestamp factoring out any
software and IRQ latencies. Add a timestamp variant of fence signal
function, dma_fence_signal_timestamp to allow drivers to update the
precise timestamp for fences.
Changes in v2:
- Add a new fence signal variant instead of modifying fence struct
Changes in v3:
- Add timestamp domain information to commit-text and
dma_fence_signal_timestamp documentation
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
Reviewed-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
[sumits: minor parenthesis alignment]
Link: https://patchwork.freedesktop.org/patch/msgid/1610757107-11892-1-git-send-email-veeras@codeaurora.org
Diffstat (limited to 'include/linux/dma-fence.h')
-rw-r--r-- | include/linux/dma-fence.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h index 09e23adb351d..9f12efaaa93a 100644 --- a/include/linux/dma-fence.h +++ b/include/linux/dma-fence.h @@ -372,6 +372,9 @@ static inline void __dma_fence_might_wait(void) {} int dma_fence_signal(struct dma_fence *fence); int dma_fence_signal_locked(struct dma_fence *fence); +int dma_fence_signal_timestamp(struct dma_fence *fence, ktime_t timestamp); +int dma_fence_signal_timestamp_locked(struct dma_fence *fence, + ktime_t timestamp); signed long dma_fence_default_wait(struct dma_fence *fence, bool intr, signed long timeout); int dma_fence_add_callback(struct dma_fence *fence, |