]> Git Repo - J-linux.git/blob - drivers/gpu/drm/nouveau/include/nvkm/engine/fifo.h
Merge tag 'kbuild-v6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy...
[J-linux.git] / drivers / gpu / drm / nouveau / include / nvkm / engine / fifo.h
1 /* SPDX-License-Identifier: MIT */
2 #ifndef __NVKM_FIFO_H__
3 #define __NVKM_FIFO_H__
4 #include <core/engine.h>
5 #include <core/object.h>
6 #include <core/event.h>
7 #include <subdev/gsp.h>
8 struct nvkm_fault_data;
9
10 #define NVKM_FIFO_ENGN_NR 16
11
12 struct nvkm_chan {
13         const struct nvkm_chan_func *func;
14         char name[64];
15         struct nvkm_cgrp *cgrp;
16         int runq;
17
18         struct nvkm_gpuobj *inst;
19         struct nvkm_vmm *vmm;
20         struct nvkm_gpuobj *push;
21         int id;
22
23         struct {
24                 struct nvkm_memory *mem;
25                 u32 base;
26         } userd;
27
28         u32 ramfc_offset;
29         struct nvkm_gpuobj *ramfc;
30         struct nvkm_gpuobj *cache;
31         struct nvkm_gpuobj *eng;
32         struct nvkm_gpuobj *pgd;
33         struct nvkm_ramht *ramht;
34
35         spinlock_t lock;
36         atomic_t blocked;
37         atomic_t errored;
38
39         struct {
40                 struct nvkm_gsp_object object;
41                 struct {
42                         dma_addr_t addr;
43                         void *ptr;
44                 } mthdbuf;
45                 struct nvkm_vctx *grctx;
46         } rm;
47
48         struct list_head cctxs;
49         struct list_head head;
50 };
51
52 struct nvkm_chan *nvkm_chan_get_chid(struct nvkm_engine *, int id, unsigned long *irqflags);
53 struct nvkm_chan *nvkm_chan_get_inst(struct nvkm_engine *, u64 inst, unsigned long *irqflags);
54 void nvkm_chan_put(struct nvkm_chan **, unsigned long irqflags);
55
56 struct nvkm_chan *nvkm_uchan_chan(struct nvkm_object *);
57
58 struct nvkm_fifo {
59         const struct nvkm_fifo_func *func;
60         struct nvkm_engine engine;
61
62         struct nvkm_chid *chid;
63         struct nvkm_chid *cgid;
64
65         struct list_head runqs;
66         struct list_head runls;
67
68         struct {
69 #define NVKM_FIFO_NONSTALL_EVENT BIT(0)
70                 struct nvkm_event event;
71                 struct nvkm_inth intr;
72         } nonstall;
73
74         struct {
75                 u32 chan_msec;
76         } timeout;
77
78         struct {
79                 struct nvkm_memory *mem;
80                 struct nvkm_vma *bar1;
81
82                 struct mutex mutex;
83                 struct list_head list;
84         } userd;
85
86         struct {
87                 u32 mthdbuf_size;
88         } rm;
89
90         spinlock_t lock;
91         struct mutex mutex;
92 };
93
94 void nvkm_fifo_fault(struct nvkm_fifo *, struct nvkm_fault_data *);
95 void nvkm_fifo_pause(struct nvkm_fifo *, unsigned long *);
96 void nvkm_fifo_start(struct nvkm_fifo *, unsigned long *);
97 bool nvkm_fifo_ctxsw_in_progress(struct nvkm_engine *);
98
99 int nv04_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
100 int nv10_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
101 int nv17_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
102 int nv40_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
103 int nv50_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
104 int g84_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
105 int g98_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
106 int gf100_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
107 int gk104_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
108 int gk110_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
109 int gk208_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
110 int gk20a_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
111 int gm107_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
112 int gm200_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
113 int gp100_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
114 int gv100_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
115 int tu102_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
116 int ga100_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
117 int ga102_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **);
118 #endif
This page took 0.037018 seconds and 4 git commands to generate.