Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: MIT */
0002 #ifndef __NVKM_DISP_H__
0003 #define __NVKM_DISP_H__
0004 #define nvkm_disp(p) container_of((p), struct nvkm_disp, engine)
0005 #include <core/engine.h>
0006 #include <core/object.h>
0007 #include <core/event.h>
0008 
0009 struct nvkm_disp {
0010     const struct nvkm_disp_func *func;
0011     struct nvkm_engine engine;
0012 
0013     struct list_head heads;
0014     struct list_head iors;
0015     struct list_head outps;
0016     struct list_head conns;
0017 
0018     struct nvkm_event hpd;
0019     struct nvkm_event vblank;
0020 
0021     struct {
0022         struct workqueue_struct *wq;
0023         struct work_struct work;
0024         u32 pending;
0025         struct mutex mutex;
0026     } super;
0027 
0028 #define NVKM_DISP_EVENT_CHAN_AWAKEN BIT(0)
0029     struct nvkm_event uevent;
0030 
0031     struct {
0032         unsigned long mask;
0033         int nr;
0034     } wndw, head, dac;
0035 
0036     struct {
0037         unsigned long mask;
0038         int nr;
0039         u32 lvdsconf;
0040     } sor;
0041 
0042     struct {
0043         unsigned long mask;
0044         int nr;
0045         u8 type[3];
0046     } pior;
0047 
0048     struct nvkm_gpuobj *inst;
0049     struct nvkm_ramht *ramht;
0050 
0051     struct nvkm_disp_chan *chan[81];
0052 
0053     struct {
0054         spinlock_t lock;
0055         struct nvkm_object object;
0056     } client;
0057 };
0058 
0059 int nv04_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0060 int nv50_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0061 int g84_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0062 int gt200_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0063 int g94_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0064 int mcp77_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0065 int gt215_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0066 int mcp89_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0067 int gf119_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0068 int gk104_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0069 int gk110_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0070 int gm107_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0071 int gm200_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0072 int gp100_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0073 int gp102_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0074 int gv100_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0075 int tu102_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0076 int ga102_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);
0077 #endif