drm/nouveau/fifo/gk208-: write pbdma timeout regs during initialisation
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
Родитель
8c4e9f9dff
Коммит
79bb4b617f
|
@ -962,6 +962,9 @@ gk104_fifo_init(struct nvkm_fifo *base)
|
|||
|
||||
nvkm_wr32(device, 0x002254, 0x10000000 | fifo->user.bar->addr >> 12);
|
||||
|
||||
if (fifo->func->init_pbdma_timeout)
|
||||
fifo->func->init_pbdma_timeout(fifo);
|
||||
|
||||
nvkm_wr32(device, 0x002100, 0xffffffff);
|
||||
nvkm_wr32(device, 0x002140, 0x7fffffff);
|
||||
}
|
||||
|
|
|
@ -45,6 +45,8 @@ struct gk104_fifo {
|
|||
};
|
||||
|
||||
struct gk104_fifo_func {
|
||||
void (*init_pbdma_timeout)(struct gk104_fifo *);
|
||||
|
||||
struct {
|
||||
const struct nvkm_enum *access;
|
||||
const struct nvkm_enum *engine;
|
||||
|
@ -87,6 +89,8 @@ extern const struct gk104_fifo_runlist_func gk110_fifo_runlist;
|
|||
void gk110_fifo_runlist_cgrp(struct nvkm_fifo_cgrp *,
|
||||
struct nvkm_memory *, u32);
|
||||
|
||||
void gk208_fifo_init_pbdma_timeout(struct gk104_fifo *);
|
||||
|
||||
extern const struct nvkm_enum gm107_fifo_fault_engine[];
|
||||
extern const struct nvkm_enum gp100_fifo_fault_engine[];
|
||||
#endif
|
||||
|
|
|
@ -26,8 +26,19 @@
|
|||
|
||||
#include <nvif/class.h>
|
||||
|
||||
void
|
||||
gk208_fifo_init_pbdma_timeout(struct gk104_fifo *fifo)
|
||||
{
|
||||
struct nvkm_device *device = fifo->base.engine.subdev.device;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < fifo->pbdma_nr; i++)
|
||||
nvkm_wr32(device, 0x04012c + (i * 0x2000), 0x0000ffff);
|
||||
}
|
||||
|
||||
static const struct gk104_fifo_func
|
||||
gk208_fifo = {
|
||||
.init_pbdma_timeout = gk208_fifo_init_pbdma_timeout,
|
||||
.fault.access = gk104_fifo_fault_access,
|
||||
.fault.engine = gk104_fifo_fault_engine,
|
||||
.fault.reason = gk104_fifo_fault_reason,
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
static const struct gk104_fifo_func
|
||||
gk20a_fifo = {
|
||||
.init_pbdma_timeout = gk208_fifo_init_pbdma_timeout,
|
||||
.fault.access = gk104_fifo_fault_access,
|
||||
.fault.engine = gk104_fifo_fault_engine,
|
||||
.fault.reason = gk104_fifo_fault_reason,
|
||||
|
|
|
@ -51,6 +51,7 @@ gm107_fifo_fault_engine[] = {
|
|||
|
||||
static const struct gk104_fifo_func
|
||||
gm107_fifo = {
|
||||
.init_pbdma_timeout = gk208_fifo_init_pbdma_timeout,
|
||||
.fault.access = gk104_fifo_fault_access,
|
||||
.fault.engine = gm107_fifo_fault_engine,
|
||||
.fault.reason = gk104_fifo_fault_reason,
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
static const struct gk104_fifo_func
|
||||
gm200_fifo = {
|
||||
.init_pbdma_timeout = gk208_fifo_init_pbdma_timeout,
|
||||
.fault.access = gk104_fifo_fault_access,
|
||||
.fault.engine = gm107_fifo_fault_engine,
|
||||
.fault.reason = gk104_fifo_fault_reason,
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
static const struct gk104_fifo_func
|
||||
gm20b_fifo = {
|
||||
.init_pbdma_timeout = gk208_fifo_init_pbdma_timeout,
|
||||
.fault.access = gk104_fifo_fault_access,
|
||||
.fault.engine = gm107_fifo_fault_engine,
|
||||
.fault.reason = gk104_fifo_fault_reason,
|
||||
|
|
|
@ -52,6 +52,7 @@ gp100_fifo_fault_engine[] = {
|
|||
|
||||
static const struct gk104_fifo_func
|
||||
gp100_fifo = {
|
||||
.init_pbdma_timeout = gk208_fifo_init_pbdma_timeout,
|
||||
.fault.access = gk104_fifo_fault_access,
|
||||
.fault.engine = gp100_fifo_fault_engine,
|
||||
.fault.reason = gk104_fifo_fault_reason,
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
static const struct gk104_fifo_func
|
||||
gp10b_fifo = {
|
||||
.init_pbdma_timeout = gk208_fifo_init_pbdma_timeout,
|
||||
.fault.access = gk104_fifo_fault_access,
|
||||
.fault.engine = gp100_fifo_fault_engine,
|
||||
.fault.reason = gk104_fifo_fault_reason,
|
||||
|
|
Загрузка…
Ссылка в новой задаче