Commit f37a302e authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/fifo/gk104-: virtualise pbdma enable function



Turing will require different code.

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent fb80ad15
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -249,8 +249,16 @@ gk104_fifo_runlist = {
	.commit = gk104_fifo_runlist_commit,
};

void
gk104_fifo_pbdma_init(struct gk104_fifo *fifo)
{
	struct nvkm_device *device = fifo->base.engine.subdev.device;
	nvkm_wr32(device, 0x000204, (1 << fifo->pbdma_nr) - 1);
}

const struct gk104_fifo_pbdma_func
gk104_fifo_pbdma = {
	.init = gk104_fifo_pbdma_init,
};

static void
@@ -991,7 +999,7 @@ gk104_fifo_init(struct nvkm_fifo *base)
	int i;

	/* Enable PBDMAs. */
	nvkm_wr32(device, 0x000204, (1 << fifo->pbdma_nr) - 1);
	fifo->func->pbdma->init(fifo);

	/* PBDMA[n] */
	for (i = 0; i < fifo->pbdma_nr; i++) {
+2 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ struct gk104_fifo {

struct gk104_fifo_func {
	const struct gk104_fifo_pbdma_func {
		void (*init)(struct gk104_fifo *);
		void (*init_timeout)(struct gk104_fifo *);
	} *pbdma;

@@ -88,6 +89,7 @@ void gk104_fifo_runlist_remove(struct gk104_fifo *, struct gk104_fifo_chan *);
void gk104_fifo_runlist_update(struct gk104_fifo *, int runl);

extern const struct gk104_fifo_pbdma_func gk104_fifo_pbdma;
void gk104_fifo_pbdma_init(struct gk104_fifo *);
extern const struct nvkm_enum gk104_fifo_fault_access[];
extern const struct nvkm_enum gk104_fifo_fault_engine[];
extern const struct nvkm_enum gk104_fifo_fault_reason[];
+1 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ gk208_fifo_pbdma_init_timeout(struct gk104_fifo *fifo)

const struct gk104_fifo_pbdma_func
gk208_fifo_pbdma = {
	.init = gk104_fifo_pbdma_init,
	.init_timeout = gk208_fifo_pbdma_init_timeout,
};