Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
 1/* SPDX-License-Identifier: MIT */
 2
 3/*
 4 * Copyright © 2019 Intel Corporation
 5 */
 6
 7#ifndef I915_SW_FENCE_WORK_H
 8#define I915_SW_FENCE_WORK_H
 9
10#include <linux/dma-fence.h>
11#include <linux/spinlock.h>
12#include <linux/workqueue.h>
13
14#include "i915_sw_fence.h"
15
16struct dma_fence_work;
17
18struct dma_fence_work_ops {
19	const char *name;
20	int (*work)(struct dma_fence_work *f);
21	void (*release)(struct dma_fence_work *f);
22};
23
24struct dma_fence_work {
25	struct dma_fence dma;
26	spinlock_t lock;
27
28	struct i915_sw_fence chain;
29	struct i915_sw_dma_fence_cb cb;
30
31	struct work_struct work;
32	const struct dma_fence_work_ops *ops;
33};
34
35void dma_fence_work_init(struct dma_fence_work *f,
36			 const struct dma_fence_work_ops *ops);
37int dma_fence_work_chain(struct dma_fence_work *f, struct dma_fence *signal);
38
39static inline void dma_fence_work_commit(struct dma_fence_work *f)
40{
41	i915_sw_fence_commit(&f->chain);
42}
43
44#endif /* I915_SW_FENCE_WORK_H */