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

Commit 5e721ad1 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/fifo: perform reset from preinit



RM appears to do this really early in its initialisation, before DEVINIT.

We currently do this before BAR2 initialisation for some reason.

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent b5078d73
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ struct nvkm_engine {

struct nvkm_engine_func {
	void *(*dtor)(struct nvkm_engine *);
	void (*preinit)(struct nvkm_engine *);
	int (*oneinit)(struct nvkm_engine *);
	int (*init)(struct nvkm_engine *);
	int (*fini)(struct nvkm_engine *, bool suspend);
+10 −0
Original line number Diff line number Diff line
@@ -126,6 +126,15 @@ nvkm_engine_init(struct nvkm_subdev *subdev)
	return ret;
}

static int
nvkm_engine_preinit(struct nvkm_subdev *subdev)
{
	struct nvkm_engine *engine = nvkm_engine(subdev);
	if (engine->func->preinit)
		engine->func->preinit(engine);
	return 0;
}

static void *
nvkm_engine_dtor(struct nvkm_subdev *subdev)
{
@@ -138,6 +147,7 @@ nvkm_engine_dtor(struct nvkm_subdev *subdev)
static const struct nvkm_subdev_func
nvkm_engine_func = {
	.dtor = nvkm_engine_dtor,
	.preinit = nvkm_engine_preinit,
	.init = nvkm_engine_init,
	.fini = nvkm_engine_fini,
	.intr = nvkm_engine_intr,
+8 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include <core/client.h>
#include <core/gpuobj.h>
#include <core/notify.h>
#include <subdev/mc.h>

#include <nvif/event.h>
#include <nvif/unpack.h>
@@ -278,6 +279,12 @@ nvkm_fifo_oneinit(struct nvkm_engine *engine)
	return 0;
}

static void
nvkm_fifo_preinit(struct nvkm_engine *engine)
{
	nvkm_mc_reset(engine->subdev.device, NVKM_ENGINE_FIFO);
}

static int
nvkm_fifo_init(struct nvkm_engine *engine)
{
@@ -302,6 +309,7 @@ nvkm_fifo_dtor(struct nvkm_engine *engine)
static const struct nvkm_engine_func
nvkm_fifo = {
	.dtor = nvkm_fifo_dtor,
	.preinit = nvkm_fifo_preinit,
	.oneinit = nvkm_fifo_oneinit,
	.init = nvkm_fifo_init,
	.fini = nvkm_fifo_fini,