drm/nouveau/gr/gf100-: remove hardcoded idle_timeout values
authorBen Skeggs <bskeggs@redhat.com>
Thu, 14 Apr 2016 02:57:01 +0000 (12:57 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 20 May 2016 04:43:04 +0000 (14:43 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf117.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk104.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk20a.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm107.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm200.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm20b.c

index 56f392d3d4fdc0cecf7726a0cdec91e5ea81e80a..a54b5537677ebeb9870a11596eabc6ed7821bd04 100644 (file)
@@ -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;
        const struct gf100_grctx_func *grctx = gr->func->grctx;
+       u32 idle_timeout;
 
        nvkm_mc_unk260(device->mc, 0);
 
@@ -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->ppc);
 
-       nvkm_wr32(device, 0x404154, 0x00000000);
+       idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
 
        grctx->bundle(info);
        grctx->pagepool(info);
@@ -1261,7 +1262,7 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
        gf100_grctx_generate_r406800(gr);
 
        gf100_gr_icmd(gr, grctx->icmd);
-       nvkm_wr32(device, 0x404154, 0x00000400);
+       nvkm_wr32(device, 0x404154, idle_timeout);
        gf100_gr_mthd(gr, grctx->mthd);
        nvkm_mc_unk260(device->mc, 1);
 }
index 74de7a96c22afea939059db4a20ebc5adef162e1..f521de11a299f3cdaac3241fbb62f101ce653dc1 100644 (file)
@@ -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;
        const struct gf100_grctx_func *grctx = gr->func->grctx;
+       u32 idle_timeout;
        int i;
 
        nvkm_mc_unk260(device->mc, 0);
@@ -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->ppc);
 
-       nvkm_wr32(device, 0x404154, 0x00000000);
+       idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
 
        grctx->bundle(info);
        grctx->pagepool(info);
@@ -250,7 +251,7 @@ gf117_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
                nvkm_wr32(device, 0x4064d0 + (i * 0x04), 0x00000000);
 
        gf100_gr_icmd(gr, grctx->icmd);
-       nvkm_wr32(device, 0x404154, 0x00000400);
+       nvkm_wr32(device, 0x404154, idle_timeout);
        gf100_gr_mthd(gr, grctx->mthd);
        nvkm_mc_unk260(device->mc, 1);
 }
index a843e3689c3c46e59b5f5aef940841be62807ba0..2be27179a2613819ffd28e2138cac5ad94ab4f9f 100644 (file)
@@ -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;
        const struct gf100_grctx_func *grctx = gr->func->grctx;
+       u32 idle_timeout;
        int i;
 
        nvkm_mc_unk260(device->mc, 0);
@@ -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->ppc);
 
-       nvkm_wr32(device, 0x404154, 0x00000000);
+       idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
 
        grctx->bundle(info);
        grctx->pagepool(info);
@@ -986,7 +987,7 @@ gk104_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
        nvkm_mask(device, 0x419f78, 0x00000001, 0x00000000);
 
        gf100_gr_icmd(gr, grctx->icmd);
-       nvkm_wr32(device, 0x404154, 0x00000400);
+       nvkm_wr32(device, 0x404154, idle_timeout);
        gf100_gr_mthd(gr, grctx->mthd);
        nvkm_mc_unk260(device->mc, 1);
 
index ad0a6cfe7580d97a205882e07ed82d5882ef8efd..7625d6f73e8a166b7a059ae3edfc6a9f1c3f0a27 100644 (file)
@@ -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;
        const struct gf100_grctx_func *grctx = gr->func->grctx;
-       int idle_timeout_save;
+       u32 idle_timeout;
        int i;
 
        gf100_gr_mmio(gr, gr->fuc_sw_ctx);
 
        gf100_gr_wait_idle(gr);
 
-       idle_timeout_save = nvkm_rd32(device, 0x404154);
-       nvkm_wr32(device, 0x404154, 0x00000000);
+       idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
 
        grctx->attrib(info);
 
@@ -59,7 +58,7 @@ gk20a_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
 
        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_mthd(gr, gr->fuc_method);
index 95f59e3169f25c9e523d06034c64b83794107057..e77fb3d290d80d9afeaf151138325799192a365b 100644 (file)
@@ -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;
        const struct gf100_grctx_func *grctx = gr->func->grctx;
+       u32 idle_timeout;
        int i;
 
        gf100_gr_mmio(gr, grctx->hub);
@@ -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->ppc);
 
-       nvkm_wr32(device, 0x404154, 0x00000000);
+       idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
 
        grctx->bundle(info);
        grctx->pagepool(info);
@@ -987,7 +988,7 @@ gm107_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
        gk104_grctx_generate_rop_active_fbps(gr);
 
        gf100_gr_icmd(gr, grctx->icmd);
-       nvkm_wr32(device, 0x404154, 0x00000400);
+       nvkm_wr32(device, 0x404154, idle_timeout);
        gf100_gr_mthd(gr, grctx->mthd);
 
        nvkm_mask(device, 0x419e00, 0x00808080, 0x00808080);
index e586699fc43f89608f11cdd971163e680f80f4ac..7d08564d79de9da1bce1f129345b89a5d925b678 100644 (file)
@@ -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;
        const struct gf100_grctx_func *grctx = gr->func->grctx;
-       u32 tmp;
+       u32 idle_timeout, tmp;
        int i;
 
        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->pagepool(info);
@@ -122,7 +122,7 @@ gm200_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
        gm200_grctx_generate_405b60(gr);
 
        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);
 
        nvkm_mask(device, 0x418e94, 0xffffffff, 0xc4230000);
index a8827efa90ae18f0de690a97d2a01db135970654..ba30d94a2ffc56eb3bf7c7f0f01497ff4c8524f5 100644 (file)
@@ -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;
        const struct gf100_grctx_func *grctx = gr->func->grctx;
-       int idle_timeout_save;
+       u32 idle_timeout;
        int i, tmp;
 
        gf100_gr_mmio(gr, gr->fuc_sw_ctx);
 
        gf100_gr_wait_idle(gr);
 
-       idle_timeout_save = nvkm_rd32(device, 0x404154);
-       nvkm_wr32(device, 0x404154, 0x00000000);
+       idle_timeout = nvkm_mask(device, 0x404154, 0xffffffff, 0x00000000);
 
        grctx->attrib(info);
 
@@ -74,7 +73,7 @@ gm20b_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
 
        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_mthd(gr, gr->fuc_method);