File Index
Files and directories
Sign in
FILE

disp.h

File preview with syntax highlighting.

linux-6.19.14/drivers/gpu/drm/nouveau/include/nvkm/engine/disp.h C
 1/* SPDX-License-Identifier: MIT */
 2#ifndef __NVKM_DISP_H__
 3#define __NVKM_DISP_H__
 4#define nvkm_disp(p) container_of((p), struct nvkm_disp, engine)
 5#include <core/engine.h>
 6#include <core/object.h>
 7#include <core/event.h>
 8#include <subdev/gsp.h>
 9
10struct nvkm_disp {
11	const struct nvkm_disp_func *func;
12	struct nvkm_engine engine;
13
14	struct {
15		struct nvkm_gsp_client client;
16		struct nvkm_gsp_device device;
17
18		struct nvkm_gsp_object objcom;
19		struct nvkm_gsp_object object;
20
21#define NVKM_DPYID_PLUG   BIT(0)
22#define NVKM_DPYID_UNPLUG BIT(1)
23#define NVKM_DPYID_IRQ    BIT(2)
24		struct nvkm_event event;
25		struct nvkm_gsp_event hpd;
26		struct nvkm_gsp_event irq;
27
28		u32 assigned_sors;
29	} rm;
30
31	struct list_head heads;
32	struct list_head iors;
33	struct list_head outps;
34	struct list_head conns;
35
36	struct nvkm_event hpd;
37#define NVKM_DISP_HEAD_EVENT_VBLANK BIT(0)
38	struct nvkm_event vblank;
39
40	struct {
41		struct workqueue_struct *wq;
42		struct work_struct work;
43		u32 pending;
44		struct mutex mutex;
45	} super;
46
47#define NVKM_DISP_EVENT_CHAN_AWAKEN BIT(0)
48	struct nvkm_event uevent;
49
50	struct {
51		unsigned long mask;
52		int nr;
53	} wndw, head, dac, sor;
54
55	struct {
56		unsigned long mask;
57		int nr;
58		u8 type[3];
59	} pior;
60
61	struct nvkm_gpuobj *inst;
62	struct nvkm_ramht *ramht;
63
64	struct nvkm_disp_chan *chan[81];
65
66	struct {
67		spinlock_t lock;
68		struct nvkm_object object;
69	} client;
70};
71
72int nv04_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
73int nv50_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
74int g84_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
75int gt200_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
76int g94_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
77int mcp77_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
78int gt215_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
79int mcp89_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
80int gf119_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
81int gk104_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
82int gk110_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
83int gm107_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
84int gm200_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
85int gp100_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
86int gp102_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
87int gv100_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
88int tu102_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
89int ga102_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
90#endif
~/ Read-only file preview.