Merge tag 'drm-next-2022-08-03' of git://anongit.freedesktop.org/drm/drm
[linux-2.6-microblaze.git] / drivers / gpu / drm / nouveau / include / nvkm / engine / disp.h
index d08d333..8b5d8a4 100644 (file)
@@ -3,23 +3,56 @@
 #define __NVKM_DISP_H__
 #define nvkm_disp(p) container_of((p), struct nvkm_disp, engine)
 #include <core/engine.h>
+#include <core/object.h>
 #include <core/event.h>
 
 struct nvkm_disp {
        const struct nvkm_disp_func *func;
        struct nvkm_engine engine;
 
-       struct list_head head;
-       struct list_head ior;
-       struct list_head outp;
-       struct list_head conn;
+       struct list_head heads;
+       struct list_head iors;
+       struct list_head outps;
+       struct list_head conns;
 
        struct nvkm_event hpd;
        struct nvkm_event vblank;
 
+       struct {
+               struct workqueue_struct *wq;
+               struct work_struct work;
+               u32 pending;
+               struct mutex mutex;
+       } super;
+
+#define NVKM_DISP_EVENT_CHAN_AWAKEN BIT(0)
+       struct nvkm_event uevent;
+
+       struct {
+               unsigned long mask;
+               int nr;
+       } wndw, head, dac;
+
+       struct {
+               unsigned long mask;
+               int nr;
+               u32 lvdsconf;
+       } sor;
+
+       struct {
+               unsigned long mask;
+               int nr;
+               u8 type[3];
+       } pior;
+
+       struct nvkm_gpuobj *inst;
+       struct nvkm_ramht *ramht;
+
+       struct nvkm_disp_chan *chan[81];
+
        struct {
                spinlock_t lock;
-               struct nvkm_oproxy *object;
+               struct nvkm_object object;
        } client;
 };