]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/nouveau/gr/gf100-: note missing 418800 modifications
authorBen Skeggs <bskeggs@redhat.com>
Tue, 8 May 2018 10:39:47 +0000 (20:39 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 18 May 2018 05:01:24 +0000 (15:01 +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/ctxgf100.h
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk104.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk110.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk110b.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk208.c

index e29ac88841ad4c1bf01c37fe27219647246d07e0..0dcb227c59f1a65708ba75b0ccd9ec891cad769c 100644 (file)
@@ -1426,6 +1426,8 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
 
        if (grctx->r419cb8)
                grctx->r419cb8(gr);
+       if (grctx->r418800)
+               grctx->r418800(gr);
 }
 
 #define CB_RESERVED 0x80000
index 67628b9a742d13ef54c7dafbdd4bc04265cde608..0d05664f9ee6c0a8746d176db250b9d0eb7e94f1 100644 (file)
@@ -65,6 +65,7 @@ struct gf100_grctx_func {
        void (*smid_config)(struct gf100_gr *);
        /* misc other things */
        void (*r419cb8)(struct gf100_gr *);
+       void (*r418800)(struct gf100_gr *);
 };
 
 extern const struct gf100_grctx_func gf100_grctx;
@@ -107,6 +108,7 @@ void gk104_grctx_generate_bundle(struct gf100_grctx *);
 void gk104_grctx_generate_pagepool(struct gf100_grctx *);
 void gk104_grctx_generate_patch_ltc(struct gf100_grctx *);
 void gk104_grctx_generate_unkn(struct gf100_gr *);
+void gk104_grctx_generate_r418800(struct gf100_gr *);
 
 extern const struct gf100_grctx_func gk110_grctx;
 extern const struct gf100_grctx_func gk110b_grctx;
index f527bca30a02eb3f9a2e07be20a38bb6a71c52fa..a4fe36c136fdc14fb7c9fe8508b61856ff50a352 100644 (file)
@@ -840,6 +840,21 @@ gk104_grctx_pack_ppc[] = {
  * PGRAPH context implementation
  ******************************************************************************/
 
+void
+gk104_grctx_generate_r418800(struct gf100_gr *gr)
+{
+       struct nvkm_device *device = gr->base.engine.subdev.device;
+       /*XXX: Not real sure where to apply these, there doesn't seem
+        *     to be any pattern to which chipsets it's done on.
+        *
+        *     Perhaps a VBIOS tweak?
+        */
+       if (0) {
+               nvkm_mask(device, 0x418800, 0x00200000, 0x00200000);
+               nvkm_mask(device, 0x41be10, 0x00800000, 0x00800000);
+       }
+}
+
 void
 gk104_grctx_generate_patch_ltc(struct gf100_grctx *info)
 {
@@ -935,8 +950,7 @@ gk104_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
        gf100_gr_mthd(gr, grctx->mthd);
        nvkm_mc_unk260(device, 1);
 
-       nvkm_mask(device, 0x418800, 0x00200000, 0x00200000);
-       nvkm_mask(device, 0x41be10, 0x00800000, 0x00800000);
+       grctx->r418800(gr);
 }
 
 void
@@ -1016,4 +1030,5 @@ gk104_grctx = {
        .dist_skip_table = gf117_grctx_generate_dist_skip_table,
        .gpc_tpc_nr = gk104_grctx_generate_gpc_tpc_nr,
        .r419f78 = gk104_grctx_generate_r419f78,
+       .r418800 = gk104_grctx_generate_r418800,
 };
index 64e00d7dffddb6b6783e0aceecd667ae8f15eec6..7102a24a934eb15ed8b0f176b7c9e8640dd7ccfd 100644 (file)
@@ -837,4 +837,5 @@ gk110_grctx = {
        .alpha_beta_tables = gk104_grctx_generate_alpha_beta_tables,
        .dist_skip_table = gf117_grctx_generate_dist_skip_table,
        .gpc_tpc_nr = gk104_grctx_generate_gpc_tpc_nr,
+       .r418800 = gk104_grctx_generate_r418800,
 };
index f800ed5562a1d07282c621f8dc42e8f7fe19ff7a..049de07d7bc56dc2bab325e2136b21f11a525639 100644 (file)
@@ -98,4 +98,5 @@ gk110b_grctx = {
        .alpha_beta_tables = gk104_grctx_generate_alpha_beta_tables,
        .dist_skip_table = gf117_grctx_generate_dist_skip_table,
        .gpc_tpc_nr = gk104_grctx_generate_gpc_tpc_nr,
+       .r418800 = gk104_grctx_generate_r418800,
 };
index 494d9a9a200a930de7fbb0b5541ad475be7bbb12..c69494f7418ef4ae4df4f4dfeb648a04a26b8f3e 100644 (file)
@@ -559,4 +559,5 @@ gk208_grctx = {
        .alpha_beta_tables = gk104_grctx_generate_alpha_beta_tables,
        .dist_skip_table = gf117_grctx_generate_dist_skip_table,
        .gpc_tpc_nr = gk104_grctx_generate_gpc_tpc_nr,
+       .r418800 = gk104_grctx_generate_r418800,
 };