OSDN Git Service

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 e29ac88..0dcb227 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 67628b9..0d05664 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 f527bca..a4fe36c 100644 (file)
@@ -841,6 +841,21 @@ gk104_grctx_pack_ppc[] = {
  ******************************************************************************/
 
 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)
 {
        struct nvkm_device *device = info->gr->base.engine.subdev.device;
@@ -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 64e00d7..7102a24 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 f800ed5..049de07 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 494d9a9..c69494f 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,
 };