1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Copyright (C) 2013-2016 Red Hat
4 * Author: Rob Clark <robdclark@gmail.com>
7 #ifndef __MSM_FENCE_H__
8 #define __MSM_FENCE_H__
12 struct msm_fence_context
{
13 struct drm_device
*dev
;
16 /* last_fence == completed_fence --> no pending work */
17 uint32_t last_fence
; /* last assigned fence */
18 uint32_t completed_fence
; /* last completed fence */
19 wait_queue_head_t event
;
23 struct msm_fence_context
* msm_fence_context_alloc(struct drm_device
*dev
,
25 void msm_fence_context_free(struct msm_fence_context
*fctx
);
27 int msm_wait_fence(struct msm_fence_context
*fctx
, uint32_t fence
,
28 ktime_t
*timeout
, bool interruptible
);
29 void msm_update_fence(struct msm_fence_context
*fctx
, uint32_t fence
);
31 struct dma_fence
* msm_fence_alloc(struct msm_fence_context
*fctx
);