xref: /linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/gr.h (revision ab93e0dd72c37d378dd936f031ffb83ff2bd87ce)
1 /* SPDX-License-Identifier: MIT */
2 #ifndef __NVKM_RM_GR_H__
3 #define __NVKM_RM_GR_H__
4 #include "engine.h"
5 
6 #include <core/object.h>
7 #include <engine/gr.h>
8 
9 #define R515_GR_MAX_CTXBUFS 9
10 
11 struct r535_gr_chan {
12 	struct nvkm_object object;
13 	struct r535_gr *gr;
14 
15 	struct nvkm_vmm *vmm;
16 	struct nvkm_chan *chan;
17 
18 	struct nvkm_memory *mem[R515_GR_MAX_CTXBUFS];
19 	struct nvkm_vma    *vma[R515_GR_MAX_CTXBUFS];
20 };
21 
22 struct r535_gr {
23 	struct nvkm_gr base;
24 
25 	struct {
26 		u16 bufferId;
27 		u32 size;
28 		u8  page;
29 		u8  align;
30 		bool global;
31 		bool init;
32 		bool ro;
33 	} ctxbuf[R515_GR_MAX_CTXBUFS];
34 	int ctxbuf_nr;
35 
36 	struct nvkm_memory *ctxbuf_mem[R515_GR_MAX_CTXBUFS];
37 
38 	struct {
39 		int chid;
40 		struct nvkm_memory *inst;
41 		struct nvkm_vmm *vmm;
42 		struct nvkm_gsp_object chan;
43 		struct nvkm_gsp_object threed;
44 		struct {
45 			struct nvkm_memory *mem[R515_GR_MAX_CTXBUFS];
46 			struct nvkm_vma    *vma[R515_GR_MAX_CTXBUFS];
47 		} ctxbuf;
48 		bool enabled;
49 	} scrubber;
50 };
51 
52 struct NV2080_CTRL_INTERNAL_ENGINE_CONTEXT_BUFFER_INFO;
53 void r535_gr_get_ctxbuf_info(struct r535_gr *, int i,
54 			     struct NV2080_CTRL_INTERNAL_ENGINE_CONTEXT_BUFFER_INFO *);
55 #endif
56