forked from Minki/linux
drm/nouveau/fifo/gk104-: virtualise pbdma enable function
Turing will require different code. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
fb80ad15f8
commit
f37a302e67
@ -249,8 +249,16 @@ gk104_fifo_runlist = {
|
|||||||
.commit = gk104_fifo_runlist_commit,
|
.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
|
const struct gk104_fifo_pbdma_func
|
||||||
gk104_fifo_pbdma = {
|
gk104_fifo_pbdma = {
|
||||||
|
.init = gk104_fifo_pbdma_init,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -991,7 +999,7 @@ gk104_fifo_init(struct nvkm_fifo *base)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* Enable PBDMAs. */
|
/* Enable PBDMAs. */
|
||||||
nvkm_wr32(device, 0x000204, (1 << fifo->pbdma_nr) - 1);
|
fifo->func->pbdma->init(fifo);
|
||||||
|
|
||||||
/* PBDMA[n] */
|
/* PBDMA[n] */
|
||||||
for (i = 0; i < fifo->pbdma_nr; i++) {
|
for (i = 0; i < fifo->pbdma_nr; i++) {
|
||||||
|
@ -46,6 +46,7 @@ struct gk104_fifo {
|
|||||||
|
|
||||||
struct gk104_fifo_func {
|
struct gk104_fifo_func {
|
||||||
const struct gk104_fifo_pbdma_func {
|
const struct gk104_fifo_pbdma_func {
|
||||||
|
void (*init)(struct gk104_fifo *);
|
||||||
void (*init_timeout)(struct gk104_fifo *);
|
void (*init_timeout)(struct gk104_fifo *);
|
||||||
} *pbdma;
|
} *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);
|
void gk104_fifo_runlist_update(struct gk104_fifo *, int runl);
|
||||||
|
|
||||||
extern const struct gk104_fifo_pbdma_func gk104_fifo_pbdma;
|
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_access[];
|
||||||
extern const struct nvkm_enum gk104_fifo_fault_engine[];
|
extern const struct nvkm_enum gk104_fifo_fault_engine[];
|
||||||
extern const struct nvkm_enum gk104_fifo_fault_reason[];
|
extern const struct nvkm_enum gk104_fifo_fault_reason[];
|
||||||
|
@ -38,6 +38,7 @@ gk208_fifo_pbdma_init_timeout(struct gk104_fifo *fifo)
|
|||||||
|
|
||||||
const struct gk104_fifo_pbdma_func
|
const struct gk104_fifo_pbdma_func
|
||||||
gk208_fifo_pbdma = {
|
gk208_fifo_pbdma = {
|
||||||
|
.init = gk104_fifo_pbdma_init,
|
||||||
.init_timeout = gk208_fifo_pbdma_init_timeout,
|
.init_timeout = gk208_fifo_pbdma_init_timeout,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user