forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-11 04dd17822334871b23ea2862f7798fb0e0007777
kernel/drivers/gpu/drm/nouveau/nvkm/subdev/fault/gp100.c
....@@ -21,31 +21,48 @@
2121 */
2222 #include "priv.h"
2323
24
-#include <subdev/mmu.h>
24
+#include <core/memory.h>
25
+#include <subdev/mc.h>
2526
26
-static void
27
+#include <nvif/class.h>
28
+
29
+void
30
+gp100_fault_buffer_intr(struct nvkm_fault_buffer *buffer, bool enable)
31
+{
32
+ struct nvkm_device *device = buffer->fault->subdev.device;
33
+ nvkm_mc_intr_mask(device, NVKM_SUBDEV_FAULT, enable);
34
+}
35
+
36
+void
2737 gp100_fault_buffer_fini(struct nvkm_fault_buffer *buffer)
2838 {
2939 struct nvkm_device *device = buffer->fault->subdev.device;
3040 nvkm_mask(device, 0x002a70, 0x00000001, 0x00000000);
3141 }
3242
33
-static void
43
+void
3444 gp100_fault_buffer_init(struct nvkm_fault_buffer *buffer)
3545 {
3646 struct nvkm_device *device = buffer->fault->subdev.device;
37
- nvkm_wr32(device, 0x002a74, upper_32_bits(buffer->vma->addr));
38
- nvkm_wr32(device, 0x002a70, lower_32_bits(buffer->vma->addr));
47
+ nvkm_wr32(device, 0x002a74, upper_32_bits(buffer->addr));
48
+ nvkm_wr32(device, 0x002a70, lower_32_bits(buffer->addr));
3949 nvkm_mask(device, 0x002a70, 0x00000001, 0x00000001);
4050 }
4151
42
-static u32
43
-gp100_fault_buffer_entries(struct nvkm_fault_buffer *buffer)
52
+u64 gp100_fault_buffer_pin(struct nvkm_fault_buffer *buffer)
4453 {
45
- return nvkm_rd32(buffer->fault->subdev.device, 0x002a78);
54
+ return nvkm_memory_bar2(buffer->mem);
4655 }
4756
48
-static void
57
+void
58
+gp100_fault_buffer_info(struct nvkm_fault_buffer *buffer)
59
+{
60
+ buffer->entries = nvkm_rd32(buffer->fault->subdev.device, 0x002a78);
61
+ buffer->get = 0x002a7c;
62
+ buffer->put = 0x002a80;
63
+}
64
+
65
+void
4966 gp100_fault_intr(struct nvkm_fault *fault)
5067 {
5168 nvkm_event_send(&fault->event, 1, 0, NULL, 0);
....@@ -56,9 +73,12 @@
5673 .intr = gp100_fault_intr,
5774 .buffer.nr = 1,
5875 .buffer.entry_size = 32,
59
- .buffer.entries = gp100_fault_buffer_entries,
76
+ .buffer.info = gp100_fault_buffer_info,
77
+ .buffer.pin = gp100_fault_buffer_pin,
6078 .buffer.init = gp100_fault_buffer_init,
6179 .buffer.fini = gp100_fault_buffer_fini,
80
+ .buffer.intr = gp100_fault_buffer_intr,
81
+ .user = { { 0, 0, MAXWELL_FAULT_BUFFER_A }, 0 },
6282 };
6383
6484 int