Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 80bc340b authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/disp: implement nvif event sources for vblank/connector notifiers



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent b76f1529
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@

#include <core/os.h>
#include <nvif/unpack.h>
#include <nvif/class.h>
#include <nvif/event.h>

#include "priv.h"
@@ -92,6 +93,24 @@ nouveau_disp_hpd_func = {
	.ctor = nouveau_disp_hpd_ctor
};

int
nouveau_disp_ntfy(struct nouveau_object *object, u32 type,
		  struct nvkm_event **event)
{
	struct nouveau_disp *disp = (void *)object->engine;
	switch (type) {
	case NV04_DISP_NTFY_VBLANK:
		*event = &disp->vblank;
		return 0;
	case NV04_DISP_NTFY_CONN:
		*event = &disp->hpd;
		return 0;
	default:
		break;
	}
	return -EINVAL;
}

int
_nouveau_disp_fini(struct nouveau_object *object, bool suspend)
{
+1 −0
Original line number Diff line number Diff line
@@ -112,6 +112,7 @@ nv04_disp_ofuncs = {
	.init = nouveau_object_init,
	.fini = nouveau_object_fini,
	.mthd = nv04_disp_mthd,
	.ntfy = nouveau_disp_ntfy,
};

static struct nouveau_oclass
+1 −0
Original line number Diff line number Diff line
@@ -1142,6 +1142,7 @@ nv50_disp_base_ofuncs = {
	.init = nv50_disp_base_init,
	.fini = nv50_disp_base_fini,
	.mthd = nv50_disp_base_mthd,
	.ntfy = nouveau_disp_ntfy,
};

static struct nouveau_oclass
+1 −0
Original line number Diff line number Diff line
@@ -716,6 +716,7 @@ nvd0_disp_base_ofuncs = {
	.init = nvd0_disp_base_init,
	.fini = nvd0_disp_base_fini,
	.mthd = nv50_disp_base_mthd,
	.ntfy = nouveau_disp_ntfy,
};

static struct nouveau_oclass
+1 −0
Original line number Diff line number Diff line
@@ -42,5 +42,6 @@ extern struct nouveau_oclass *nvkm_connector_oclass;

int  nouveau_disp_vblank_ctor(void *data, u32 size, struct nvkm_notify *);
void nouveau_disp_vblank(struct nouveau_disp *, int head);
int  nouveau_disp_ntfy(struct nouveau_object *, u32, struct nvkm_event **);

#endif
Loading