Commit | Line | Data |
---|---|---|
57692c94 EA |
1 | // SPDX-License-Identifier: GPL-2.0+ |
2 | /* Copyright (C) 2017-2018 Broadcom */ | |
3 | ||
4 | #include "v3d_drv.h" | |
5 | ||
6 | struct dma_fence *v3d_fence_create(struct v3d_dev *v3d, enum v3d_queue queue) | |
7 | { | |
8 | struct v3d_fence *fence; | |
9 | ||
10 | fence = kzalloc(sizeof(*fence), GFP_KERNEL); | |
11 | if (!fence) | |
12 | return ERR_PTR(-ENOMEM); | |
13 | ||
14 | fence->dev = &v3d->drm; | |
15 | fence->queue = queue; | |
16 | fence->seqno = ++v3d->queue[queue].emit_seqno; | |
17 | dma_fence_init(&fence->base, &v3d_fence_ops, &v3d->job_lock, | |
18 | v3d->queue[queue].fence_context, fence->seqno); | |
19 | ||
20 | return &fence->base; | |
21 | } | |
22 | ||
23 | static const char *v3d_fence_get_driver_name(struct dma_fence *fence) | |
24 | { | |
25 | return "v3d"; | |
26 | } | |
27 | ||
28 | static const char *v3d_fence_get_timeline_name(struct dma_fence *fence) | |
29 | { | |
30 | struct v3d_fence *f = to_v3d_fence(fence); | |
31 | ||
db176f6b EA |
32 | switch (f->queue) { |
33 | case V3D_BIN: | |
57692c94 | 34 | return "v3d-bin"; |
db176f6b | 35 | case V3D_RENDER: |
57692c94 | 36 | return "v3d-render"; |
db176f6b EA |
37 | case V3D_TFU: |
38 | return "v3d-tfu"; | |
d223f98f EA |
39 | case V3D_CSD: |
40 | return "v3d-csd"; | |
db176f6b EA |
41 | default: |
42 | return NULL; | |
43 | } | |
57692c94 EA |
44 | } |
45 | ||
57692c94 EA |
46 | const struct dma_fence_ops v3d_fence_ops = { |
47 | .get_driver_name = v3d_fence_get_driver_name, | |
48 | .get_timeline_name = v3d_fence_get_timeline_name, | |
57692c94 | 49 | }; |