Blame view

drivers/dma-buf/seqno-fence.c 1.79 KB
1802d0bee   Thomas Gleixner   treewide: Replace...
1
  // SPDX-License-Identifier: GPL-2.0-only
606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
2
3
4
5
6
7
8
9
  /*
   * seqno-fence, using a dma-buf to synchronize fencing
   *
   * Copyright (C) 2012 Texas Instruments
   * Copyright (C) 2012-2014 Canonical Ltd
   * Authors:
   *   Rob Clark <robdclark@gmail.com>
   *   Maarten Lankhorst <maarten.lankhorst@canonical.com>
606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
10
11
12
13
14
   */
  
  #include <linux/slab.h>
  #include <linux/export.h>
  #include <linux/seqno-fence.h>
f54d18670   Chris Wilson   dma-buf: Rename s...
15
  static const char *seqno_fence_get_driver_name(struct dma_fence *fence)
606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
16
17
  {
  	struct seqno_fence *seqno_fence = to_seqno_fence(fence);
5136629dc   Jagan Teki   dma-buf: Minor co...
18

606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
19
20
  	return seqno_fence->ops->get_driver_name(fence);
  }
f54d18670   Chris Wilson   dma-buf: Rename s...
21
  static const char *seqno_fence_get_timeline_name(struct dma_fence *fence)
606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
22
23
  {
  	struct seqno_fence *seqno_fence = to_seqno_fence(fence);
5136629dc   Jagan Teki   dma-buf: Minor co...
24

606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
25
26
  	return seqno_fence->ops->get_timeline_name(fence);
  }
f54d18670   Chris Wilson   dma-buf: Rename s...
27
  static bool seqno_enable_signaling(struct dma_fence *fence)
606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
28
29
  {
  	struct seqno_fence *seqno_fence = to_seqno_fence(fence);
5136629dc   Jagan Teki   dma-buf: Minor co...
30

606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
31
32
  	return seqno_fence->ops->enable_signaling(fence);
  }
f54d18670   Chris Wilson   dma-buf: Rename s...
33
  static bool seqno_signaled(struct dma_fence *fence)
606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
34
35
  {
  	struct seqno_fence *seqno_fence = to_seqno_fence(fence);
5136629dc   Jagan Teki   dma-buf: Minor co...
36

606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
37
38
  	return seqno_fence->ops->signaled && seqno_fence->ops->signaled(fence);
  }
f54d18670   Chris Wilson   dma-buf: Rename s...
39
  static void seqno_release(struct dma_fence *fence)
606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
40
41
42
43
44
45
46
  {
  	struct seqno_fence *f = to_seqno_fence(fence);
  
  	dma_buf_put(f->sync_buf);
  	if (f->ops->release)
  		f->ops->release(fence);
  	else
f54d18670   Chris Wilson   dma-buf: Rename s...
47
  		dma_fence_free(&f->base);
606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
48
  }
f54d18670   Chris Wilson   dma-buf: Rename s...
49
50
  static signed long seqno_wait(struct dma_fence *fence, bool intr,
  			      signed long timeout)
606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
51
52
  {
  	struct seqno_fence *f = to_seqno_fence(fence);
5136629dc   Jagan Teki   dma-buf: Minor co...
53

606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
54
55
  	return f->ops->wait(fence, intr, timeout);
  }
f54d18670   Chris Wilson   dma-buf: Rename s...
56
  const struct dma_fence_ops seqno_fence_ops = {
606b23ad6   Maarten Lankhorst   seqno-fence: Hard...
57
58
59
60
61
62
63
64
  	.get_driver_name = seqno_fence_get_driver_name,
  	.get_timeline_name = seqno_fence_get_timeline_name,
  	.enable_signaling = seqno_enable_signaling,
  	.signaled = seqno_signaled,
  	.wait = seqno_wait,
  	.release = seqno_release,
  };
  EXPORT_SYMBOL(seqno_fence_ops);