forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/gpu/drm/nouveau/nvc0_fence.c
....@@ -21,25 +21,35 @@
2121 *
2222 * Authors: Ben Skeggs
2323 */
24
-
2524 #include "nouveau_drv.h"
2625 #include "nouveau_dma.h"
2726 #include "nouveau_fence.h"
2827
2928 #include "nv50_display.h"
3029
30
+#include <nvif/push906f.h>
31
+
32
+#include <nvhw/class/cl906f.h>
33
+
3134 static int
3235 nvc0_fence_emit32(struct nouveau_channel *chan, u64 virtual, u32 sequence)
3336 {
34
- int ret = RING_SPACE(chan, 6);
37
+ struct nvif_push *push = chan->chan.push;
38
+ int ret = PUSH_WAIT(push, 6);
3539 if (ret == 0) {
36
- BEGIN_NVC0(chan, 0, NV84_SUBCHAN_SEMAPHORE_ADDRESS_HIGH, 5);
37
- OUT_RING (chan, upper_32_bits(virtual));
38
- OUT_RING (chan, lower_32_bits(virtual));
39
- OUT_RING (chan, sequence);
40
- OUT_RING (chan, NV84_SUBCHAN_SEMAPHORE_TRIGGER_WRITE_LONG);
41
- OUT_RING (chan, 0x00000000);
42
- FIRE_RING (chan);
40
+ PUSH_MTHD(push, NV906F, SEMAPHOREA,
41
+ NVVAL(NV906F, SEMAPHOREA, OFFSET_UPPER, upper_32_bits(virtual)),
42
+
43
+ SEMAPHOREB, lower_32_bits(virtual),
44
+ SEMAPHOREC, sequence,
45
+
46
+ SEMAPHORED,
47
+ NVDEF(NV906F, SEMAPHORED, OPERATION, RELEASE) |
48
+ NVDEF(NV906F, SEMAPHORED, RELEASE_WFI, EN) |
49
+ NVDEF(NV906F, SEMAPHORED, RELEASE_SIZE, 16BYTE),
50
+
51
+ NON_STALL_INTERRUPT, 0);
52
+ PUSH_KICK(push);
4353 }
4454 return ret;
4555 }
....@@ -47,15 +57,19 @@
4757 static int
4858 nvc0_fence_sync32(struct nouveau_channel *chan, u64 virtual, u32 sequence)
4959 {
50
- int ret = RING_SPACE(chan, 5);
60
+ struct nvif_push *push = chan->chan.push;
61
+ int ret = PUSH_WAIT(push, 5);
5162 if (ret == 0) {
52
- BEGIN_NVC0(chan, 0, NV84_SUBCHAN_SEMAPHORE_ADDRESS_HIGH, 4);
53
- OUT_RING (chan, upper_32_bits(virtual));
54
- OUT_RING (chan, lower_32_bits(virtual));
55
- OUT_RING (chan, sequence);
56
- OUT_RING (chan, NV84_SUBCHAN_SEMAPHORE_TRIGGER_ACQUIRE_GEQUAL |
57
- NVC0_SUBCHAN_SEMAPHORE_TRIGGER_YIELD);
58
- FIRE_RING (chan);
63
+ PUSH_MTHD(push, NV906F, SEMAPHOREA,
64
+ NVVAL(NV906F, SEMAPHOREA, OFFSET_UPPER, upper_32_bits(virtual)),
65
+
66
+ SEMAPHOREB, lower_32_bits(virtual),
67
+ SEMAPHOREC, sequence,
68
+
69
+ SEMAPHORED,
70
+ NVDEF(NV906F, SEMAPHORED, OPERATION, ACQ_GEQ) |
71
+ NVDEF(NV906F, SEMAPHORED, ACQUIRE_SWITCH, ENABLED));
72
+ PUSH_KICK(push);
5973 }
6074 return ret;
6175 }