Commit 933ad445 authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/gr/gf100-: remove hardcoded idle_timeout values

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 0cdc3fdf
...@@ -1238,6 +1238,7 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -1238,6 +1238,7 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
{ {
struct nvkm_device *device = gr->base.engine.subdev.device; struct nvkm_device *device = gr->base.engine.subdev.device;
const struct gf100_grctx_func *grctx = gr->func->grctx; const struct gf100_grctx_func *grctx = gr->func->grctx;
u32 idle_timeout;
nvkm_mc_unk260(device->mc, 0); nvkm_mc_unk260(device->mc, 0);
...@@ -1247,7 +1248,7 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -1247,7 +1248,7 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
gf100_gr_mmio(gr, grctx->tpc); gf100_gr_mmio(gr, grctx->tpc);
gf100_gr_mmio(gr, grctx->ppc); gf100_gr_mmio(gr, grctx->ppc);
nvkm_wr32(device, 0x404154, 0x00000000); idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
grctx->bundle(info); grctx->bundle(info);
grctx->pagepool(info); grctx->pagepool(info);
...@@ -1261,7 +1262,7 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -1261,7 +1262,7 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
gf100_grctx_generate_r406800(gr); gf100_grctx_generate_r406800(gr);
gf100_gr_icmd(gr, grctx->icmd); gf100_gr_icmd(gr, grctx->icmd);
nvkm_wr32(device, 0x404154, 0x00000400); nvkm_wr32(device, 0x404154, idle_timeout);
gf100_gr_mthd(gr, grctx->mthd); gf100_gr_mthd(gr, grctx->mthd);
nvkm_mc_unk260(device->mc, 1); nvkm_mc_unk260(device->mc, 1);
} }
......
...@@ -223,6 +223,7 @@ gf117_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -223,6 +223,7 @@ gf117_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
{ {
struct nvkm_device *device = gr->base.engine.subdev.device; struct nvkm_device *device = gr->base.engine.subdev.device;
const struct gf100_grctx_func *grctx = gr->func->grctx; const struct gf100_grctx_func *grctx = gr->func->grctx;
u32 idle_timeout;
int i; int i;
nvkm_mc_unk260(device->mc, 0); nvkm_mc_unk260(device->mc, 0);
...@@ -233,7 +234,7 @@ gf117_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -233,7 +234,7 @@ gf117_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
gf100_gr_mmio(gr, grctx->tpc); gf100_gr_mmio(gr, grctx->tpc);
gf100_gr_mmio(gr, grctx->ppc); gf100_gr_mmio(gr, grctx->ppc);
nvkm_wr32(device, 0x404154, 0x00000000); idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
grctx->bundle(info); grctx->bundle(info);
grctx->pagepool(info); grctx->pagepool(info);
...@@ -250,7 +251,7 @@ gf117_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -250,7 +251,7 @@ gf117_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
nvkm_wr32(device, 0x4064d0 + (i * 0x04), 0x00000000); nvkm_wr32(device, 0x4064d0 + (i * 0x04), 0x00000000);
gf100_gr_icmd(gr, grctx->icmd); gf100_gr_icmd(gr, grctx->icmd);
nvkm_wr32(device, 0x404154, 0x00000400); nvkm_wr32(device, 0x404154, idle_timeout);
gf100_gr_mthd(gr, grctx->mthd); gf100_gr_mthd(gr, grctx->mthd);
nvkm_mc_unk260(device->mc, 1); nvkm_mc_unk260(device->mc, 1);
} }
......
...@@ -956,6 +956,7 @@ gk104_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -956,6 +956,7 @@ gk104_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
{ {
struct nvkm_device *device = gr->base.engine.subdev.device; struct nvkm_device *device = gr->base.engine.subdev.device;
const struct gf100_grctx_func *grctx = gr->func->grctx; const struct gf100_grctx_func *grctx = gr->func->grctx;
u32 idle_timeout;
int i; int i;
nvkm_mc_unk260(device->mc, 0); nvkm_mc_unk260(device->mc, 0);
...@@ -966,7 +967,7 @@ gk104_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -966,7 +967,7 @@ gk104_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
gf100_gr_mmio(gr, grctx->tpc); gf100_gr_mmio(gr, grctx->tpc);
gf100_gr_mmio(gr, grctx->ppc); gf100_gr_mmio(gr, grctx->ppc);
nvkm_wr32(device, 0x404154, 0x00000000); idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
grctx->bundle(info); grctx->bundle(info);
grctx->pagepool(info); grctx->pagepool(info);
...@@ -986,7 +987,7 @@ gk104_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -986,7 +987,7 @@ gk104_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
nvkm_mask(device, 0x419f78, 0x00000001, 0x00000000); nvkm_mask(device, 0x419f78, 0x00000001, 0x00000000);
gf100_gr_icmd(gr, grctx->icmd); gf100_gr_icmd(gr, grctx->icmd);
nvkm_wr32(device, 0x404154, 0x00000400); nvkm_wr32(device, 0x404154, idle_timeout);
gf100_gr_mthd(gr, grctx->mthd); gf100_gr_mthd(gr, grctx->mthd);
nvkm_mc_unk260(device->mc, 1); nvkm_mc_unk260(device->mc, 1);
......
...@@ -29,15 +29,14 @@ gk20a_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -29,15 +29,14 @@ gk20a_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
{ {
struct nvkm_device *device = gr->base.engine.subdev.device; struct nvkm_device *device = gr->base.engine.subdev.device;
const struct gf100_grctx_func *grctx = gr->func->grctx; const struct gf100_grctx_func *grctx = gr->func->grctx;
int idle_timeout_save; u32 idle_timeout;
int i; int i;
gf100_gr_mmio(gr, gr->fuc_sw_ctx); gf100_gr_mmio(gr, gr->fuc_sw_ctx);
gf100_gr_wait_idle(gr); gf100_gr_wait_idle(gr);
idle_timeout_save = nvkm_rd32(device, 0x404154); idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
nvkm_wr32(device, 0x404154, 0x00000000);
grctx->attrib(info); grctx->attrib(info);
...@@ -59,7 +58,7 @@ gk20a_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -59,7 +58,7 @@ gk20a_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
gf100_gr_wait_idle(gr); gf100_gr_wait_idle(gr);
nvkm_wr32(device, 0x404154, idle_timeout_save); nvkm_wr32(device, 0x404154, idle_timeout);
gf100_gr_wait_idle(gr); gf100_gr_wait_idle(gr);
gf100_gr_mthd(gr, gr->fuc_method); gf100_gr_mthd(gr, gr->fuc_method);
......
...@@ -957,6 +957,7 @@ gm107_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -957,6 +957,7 @@ gm107_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
{ {
struct nvkm_device *device = gr->base.engine.subdev.device; struct nvkm_device *device = gr->base.engine.subdev.device;
const struct gf100_grctx_func *grctx = gr->func->grctx; const struct gf100_grctx_func *grctx = gr->func->grctx;
u32 idle_timeout;
int i; int i;
gf100_gr_mmio(gr, grctx->hub); gf100_gr_mmio(gr, grctx->hub);
...@@ -965,7 +966,7 @@ gm107_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -965,7 +966,7 @@ gm107_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
gf100_gr_mmio(gr, grctx->tpc); gf100_gr_mmio(gr, grctx->tpc);
gf100_gr_mmio(gr, grctx->ppc); gf100_gr_mmio(gr, grctx->ppc);
nvkm_wr32(device, 0x404154, 0x00000000); idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
grctx->bundle(info); grctx->bundle(info);
grctx->pagepool(info); grctx->pagepool(info);
...@@ -987,7 +988,7 @@ gm107_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -987,7 +988,7 @@ gm107_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
gk104_grctx_generate_rop_active_fbps(gr); gk104_grctx_generate_rop_active_fbps(gr);
gf100_gr_icmd(gr, grctx->icmd); gf100_gr_icmd(gr, grctx->icmd);
nvkm_wr32(device, 0x404154, 0x00000400); nvkm_wr32(device, 0x404154, idle_timeout);
gf100_gr_mthd(gr, grctx->mthd); gf100_gr_mthd(gr, grctx->mthd);
nvkm_mask(device, 0x419e00, 0x00808080, 0x00808080); nvkm_mask(device, 0x419e00, 0x00808080, 0x00808080);
......
...@@ -91,12 +91,12 @@ gm200_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -91,12 +91,12 @@ gm200_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
{ {
struct nvkm_device *device = gr->base.engine.subdev.device; struct nvkm_device *device = gr->base.engine.subdev.device;
const struct gf100_grctx_func *grctx = gr->func->grctx; const struct gf100_grctx_func *grctx = gr->func->grctx;
u32 tmp; u32 idle_timeout, tmp;
int i; int i;
gf100_gr_mmio(gr, gr->fuc_sw_ctx); gf100_gr_mmio(gr, gr->fuc_sw_ctx);
nvkm_wr32(device, 0x404154, 0x00000000); idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
grctx->bundle(info); grctx->bundle(info);
grctx->pagepool(info); grctx->pagepool(info);
...@@ -122,7 +122,7 @@ gm200_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -122,7 +122,7 @@ gm200_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
gm200_grctx_generate_405b60(gr); gm200_grctx_generate_405b60(gr);
gf100_gr_icmd(gr, gr->fuc_bundle); gf100_gr_icmd(gr, gr->fuc_bundle);
nvkm_wr32(device, 0x404154, 0x00000800); nvkm_wr32(device, 0x404154, idle_timeout);
gf100_gr_mthd(gr, gr->fuc_method); gf100_gr_mthd(gr, gr->fuc_method);
nvkm_mask(device, 0x418e94, 0xffffffff, 0xc4230000); nvkm_mask(device, 0x418e94, 0xffffffff, 0xc4230000);
......
...@@ -40,15 +40,14 @@ gm20b_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -40,15 +40,14 @@ gm20b_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
{ {
struct nvkm_device *device = gr->base.engine.subdev.device; struct nvkm_device *device = gr->base.engine.subdev.device;
const struct gf100_grctx_func *grctx = gr->func->grctx; const struct gf100_grctx_func *grctx = gr->func->grctx;
int idle_timeout_save; u32 idle_timeout;
int i, tmp; int i, tmp;
gf100_gr_mmio(gr, gr->fuc_sw_ctx); gf100_gr_mmio(gr, gr->fuc_sw_ctx);
gf100_gr_wait_idle(gr); gf100_gr_wait_idle(gr);
idle_timeout_save = nvkm_rd32(device, 0x404154); idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
nvkm_wr32(device, 0x404154, 0x00000000);
grctx->attrib(info); grctx->attrib(info);
...@@ -74,7 +73,7 @@ gm20b_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info) ...@@ -74,7 +73,7 @@ gm20b_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
gf100_gr_wait_idle(gr); gf100_gr_wait_idle(gr);
nvkm_wr32(device, 0x404154, idle_timeout_save); nvkm_wr32(device, 0x404154, idle_timeout);
gf100_gr_wait_idle(gr); gf100_gr_wait_idle(gr);
gf100_gr_mthd(gr, gr->fuc_method); gf100_gr_mthd(gr, gr->fuc_method);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment