92 lines · 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 **);90int ad102_disp_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_disp **);91#endif92