forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-10 61598093bbdd283a7edc367d900f223070ead8d2
kernel/drivers/gpu/drm/nouveau/nvkm/engine/disp/gf119.c
....@@ -91,15 +91,21 @@
9191 {
9292 struct nvkm_subdev *subdev = &disp->base.engine.subdev;
9393 struct nvkm_device *device = subdev->device;
94
- u32 mthd = nvkm_rd32(device, 0x6101f0 + (chid * 12));
94
+ u32 stat = nvkm_rd32(device, 0x6101f0 + (chid * 12));
95
+ u32 type = (stat & 0x00007000) >> 12;
96
+ u32 mthd = (stat & 0x00000ffc);
9597 u32 data = nvkm_rd32(device, 0x6101f4 + (chid * 12));
96
- u32 unkn = nvkm_rd32(device, 0x6101f8 + (chid * 12));
98
+ u32 code = nvkm_rd32(device, 0x6101f8 + (chid * 12));
99
+ const struct nvkm_enum *reason =
100
+ nvkm_enum_find(nv50_disp_intr_error_type, type);
97101
98
- nvkm_error(subdev, "chid %d mthd %04x data %08x %08x %08x\n",
99
- chid, (mthd & 0x0000ffc), data, mthd, unkn);
102
+ nvkm_error(subdev, "chid %d stat %08x reason %d [%s] mthd %04x "
103
+ "data %08x code %08x\n",
104
+ chid, stat, type, reason ? reason->name : "",
105
+ mthd, data, code);
100106
101107 if (chid < ARRAY_SIZE(disp->chan)) {
102
- switch (mthd & 0xffc) {
108
+ switch (mthd) {
103109 case 0x0080:
104110 nv50_disp_chan_mthd(disp->chan[chid], NV_DBG_ERROR);
105111 break;