drm/nouveau/gr/gm200: switch over to using sw_ctx from firmware
authorBen Skeggs <bskeggs@redhat.com>
Wed, 24 Feb 2016 23:48:37 +0000 (09:48 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Mon, 14 Mar 2016 00:13:27 +0000 (10:13 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.h
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm200.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm206.c

index b96d19f..71473b6 100644 (file)
@@ -214,15 +214,4 @@ extern const struct gf100_gr_init gm107_grctx_init_wwdx_0[];
 extern const struct gf100_gr_pack gm200_grctx_pack_icmd[];
 
 extern const struct gf100_gr_pack gm200_grctx_pack_mthd[];
-
-extern const struct gf100_gr_pack gm200_grctx_pack_hub[];
-
-extern const struct gf100_gr_init gm200_grctx_init_prop_0[];
-extern const struct gf100_gr_init gm200_grctx_init_setup_0[];
-extern const struct gf100_gr_init gm200_grctx_init_gpm_0[];
-extern const struct gf100_gr_init gm200_grctx_init_gpc_unk_2[];
-
-extern const struct gf100_gr_pack gm200_grctx_pack_tpc[];
-
-extern const struct gf100_gr_pack gm200_grctx_pack_ppc[];
 #endif
index ba25474..d2d7160 100644 (file)
@@ -649,271 +649,6 @@ gm200_grctx_pack_mthd[] = {
        {}
 };
 
-static const struct gf100_gr_init
-gm200_grctx_init_fe_0[] = {
-       { 0x404004,   8, 0x04, 0x00000000 },
-       { 0x404024,   1, 0x04, 0x0000e000 },
-       { 0x404028,   8, 0x04, 0x00000000 },
-       { 0x4040a8,   8, 0x04, 0x00000000 },
-       { 0x4040c8,   1, 0x04, 0xf801008f },
-       { 0x4040d0,   6, 0x04, 0x00000000 },
-       { 0x4040f8,   1, 0x04, 0x00000000 },
-       { 0x404100,  10, 0x04, 0x00000000 },
-       { 0x404130,   2, 0x04, 0x00000000 },
-       { 0x404150,   1, 0x04, 0x0000002e },
-       { 0x404154,   2, 0x04, 0x00000800 },
-       { 0x404164,   1, 0x04, 0x00000045 },
-       { 0x40417c,   2, 0x04, 0x00000000 },
-       { 0x404194,   1, 0x04, 0x33000700 },
-       { 0x4041a0,   4, 0x04, 0x00000000 },
-       { 0x4041c4,   2, 0x04, 0x00000000 },
-       {}
-};
-
-static const struct gf100_gr_init
-gm200_grctx_init_ds_0[] = {
-       { 0x405800,   1, 0x04, 0x8f8001bf },
-       { 0x405830,   1, 0x04, 0x04001000 },
-       { 0x405834,   1, 0x04, 0x08000000 },
-       { 0x405838,   1, 0x04, 0x00010000 },
-       { 0x405854,   1, 0x04, 0x00000000 },
-       { 0x405870,   4, 0x04, 0x00000001 },
-       { 0x405a00,   2, 0x04, 0x00000000 },
-       { 0x405a18,   1, 0x04, 0x00000000 },
-       { 0x405a1c,   1, 0x04, 0x000000ff },
-       {}
-};
-
-static const struct gf100_gr_init
-gm200_grctx_init_cwd_0[] = {
-       { 0x405b00,   1, 0x04, 0x00000000 },
-       { 0x405b10,   1, 0x04, 0x00001000 },
-       { 0x405b20,   1, 0x04, 0x04000000 },
-       { 0x405b60,   6, 0x04, 0x00000000 },
-       { 0x405ba0,   6, 0x04, 0x00000000 },
-       {}
-};
-
-static const struct gf100_gr_init
-gm200_grctx_init_pd_0[] = {
-       { 0x406020,   1, 0x04, 0x17410001 },
-       { 0x406028,   4, 0x04, 0x00000001 },
-       { 0x4064a8,   1, 0x04, 0x00000000 },
-       { 0x4064ac,   1, 0x04, 0x00003fff },
-       { 0x4064b0,   3, 0x04, 0x00000000 },
-       { 0x4064c0,   1, 0x04, 0x80400280 },
-       { 0x4064c4,   1, 0x04, 0x0400ffff },
-       { 0x4064c8,   1, 0x04, 0x01800780 },
-       { 0x4064cc,   9, 0x04, 0x00000000 },
-       { 0x4064fc,   1, 0x04, 0x0000022a },
-       { 0x406500,   1, 0x04, 0x00000000 },
-       {}
-};
-
-static const struct gf100_gr_init
-gm200_grctx_init_be_0[] = {
-       { 0x408800,   1, 0x04, 0x32882a3c },
-       { 0x408804,   1, 0x04, 0x00000040 },
-       { 0x408808,   1, 0x04, 0x1003e005 },
-       { 0x408840,   1, 0x04, 0x00000e0b },
-       { 0x408900,   1, 0x04, 0xb080b801 },
-       { 0x408904,   1, 0x04, 0x63038001 },
-       { 0x408908,   1, 0x04, 0x12c8502f },
-       { 0x408980,   1, 0x04, 0x0000011d },
-       {}
-};
-
-const struct gf100_gr_pack
-gm200_grctx_pack_hub[] = {
-       { gf100_grctx_init_main_0 },
-       { gm200_grctx_init_fe_0 },
-       { gk110_grctx_init_pri_0 },
-       { gk104_grctx_init_memfmt_0 },
-       { gm200_grctx_init_ds_0 },
-       { gm200_grctx_init_cwd_0 },
-       { gm200_grctx_init_pd_0 },
-       { gk208_grctx_init_rstr2d_0 },
-       { gk104_grctx_init_scc_0 },
-       { gm200_grctx_init_be_0 },
-       {}
-};
-
-const struct gf100_gr_init
-gm200_grctx_init_prop_0[] = {
-       { 0x418400,   1, 0x04, 0x38e01e00 },
-       { 0x418404,   1, 0x04, 0x70001fff },
-       { 0x41840c,   1, 0x04, 0x20001008 },
-       { 0x418410,   2, 0x04, 0x0fff0fff },
-       { 0x418418,   1, 0x04, 0x07ff07ff },
-       { 0x41841c,   1, 0x04, 0x3feffbff },
-       { 0x418450,   6, 0x04, 0x00000000 },
-       { 0x418468,   1, 0x04, 0x00000001 },
-       { 0x41846c,   2, 0x04, 0x00000000 },
-       {}
-};
-
-static const struct gf100_gr_init
-gm200_grctx_init_gpc_unk_1[] = {
-       { 0x418600,   1, 0x04, 0x0000007f },
-       { 0x418684,   1, 0x04, 0x0000001f },
-       { 0x418700,   1, 0x04, 0x00000002 },
-       { 0x418704,   1, 0x04, 0x00000080 },
-       { 0x418708,   1, 0x04, 0x40000000 },
-       { 0x41870c,   2, 0x04, 0x00000000 },
-       { 0x418728,   1, 0x04, 0x00010000 },
-       {}
-};
-
-const struct gf100_gr_init
-gm200_grctx_init_setup_0[] = {
-       { 0x418800,   1, 0x04, 0x7006863a },
-       { 0x418808,   1, 0x04, 0x00000000 },
-       { 0x418810,   1, 0x04, 0x00000000 },
-       { 0x418828,   1, 0x04, 0x00000044 },
-       { 0x418830,   1, 0x04, 0x10000001 },
-       { 0x4188d8,   1, 0x04, 0x00000008 },
-       { 0x4188e0,   1, 0x04, 0x01000000 },
-       { 0x4188e8,   5, 0x04, 0x00000000 },
-       { 0x4188fc,   1, 0x04, 0x20100058 },
-       {}
-};
-
-const struct gf100_gr_init
-gm200_grctx_init_gpm_0[] = {
-       { 0x418c10,   8, 0x04, 0x00000000 },
-       { 0x418c40,   1, 0x04, 0xffffffff },
-       { 0x418c6c,   1, 0x04, 0x00000001 },
-       { 0x418c80,   1, 0x04, 0x20200000 },
-       {}
-};
-
-const struct gf100_gr_init
-gm200_grctx_init_gpc_unk_2[] = {
-       { 0x418e00,   1, 0x04, 0x90040000 },
-       { 0x418e24,   1, 0x04, 0x00000000 },
-       { 0x418e28,   1, 0x04, 0x00000030 },
-       { 0x418e2c,   1, 0x04, 0x00000100 },
-       { 0x418e30,   3, 0x04, 0x00000000 },
-       { 0x418e40,  22, 0x04, 0x00000000 },
-       { 0x418ea0,  12, 0x04, 0x00000000 },
-       {}
-};
-
-static const struct gf100_gr_pack
-gm200_grctx_pack_gpc[] = {
-       { gm107_grctx_init_gpc_unk_0 },
-       { gm200_grctx_init_prop_0 },
-       { gm200_grctx_init_gpc_unk_1 },
-       { gm200_grctx_init_setup_0 },
-       { gf100_grctx_init_zcull_0 },
-       { gk208_grctx_init_crstr_0 },
-       { gm200_grctx_init_gpm_0 },
-       { gm200_grctx_init_gpc_unk_2 },
-       { gf100_grctx_init_gcc_0 },
-       {}
-};
-
-static const struct gf100_gr_init
-gm200_grctx_init_pe_0[] = {
-       { 0x419848,   1, 0x04, 0x00000000 },
-       { 0x419864,   1, 0x04, 0x00000029 },
-       { 0x419888,   1, 0x04, 0x00000000 },
-       {}
-};
-
-static const struct gf100_gr_init
-gm200_grctx_init_tex_0[] = {
-       { 0x419a00,   1, 0x04, 0x000100f0 },
-       { 0x419a04,   1, 0x04, 0x00000005 },
-       { 0x419a08,   1, 0x04, 0x00000621 },
-       { 0x419a0c,   1, 0x04, 0x00320000 },
-       { 0x419a10,   1, 0x04, 0x00000000 },
-       { 0x419a14,   1, 0x04, 0x00000200 },
-       { 0x419a1c,   1, 0x04, 0x0010c000 },
-       { 0x419a20,   1, 0x04, 0x20008a00 },
-       { 0x419a30,   1, 0x04, 0x00000001 },
-       { 0x419a3c,   1, 0x04, 0x0000181e },
-       { 0x419ac4,   1, 0x04, 0x00000000 },
-       {}
-};
-
-static const struct gf100_gr_init
-gm200_grctx_init_mpc_0[] = {
-       { 0x419c00,   1, 0x04, 0x0000009a },
-       { 0x419c04,   1, 0x04, 0x80000bd6 },
-       { 0x419c08,   1, 0x04, 0x00000002 },
-       { 0x419c20,   1, 0x04, 0x00000000 },
-       { 0x419c24,   1, 0x04, 0x00084210 },
-       { 0x419c28,   1, 0x04, 0x3efbefbe },
-       { 0x419c2c,   1, 0x04, 0x00000000 },
-       { 0x419c34,   1, 0x04, 0x71ff1ff3 },
-       { 0x419c3c,   1, 0x04, 0x00001919 },
-       { 0x419c50,   1, 0x04, 0x00000005 },
-       {}
-};
-
-static const struct gf100_gr_init
-gm200_grctx_init_l1c_0[] = {
-       { 0x419c84,   1, 0x04, 0x0000003e },
-       { 0x419c90,   1, 0x04, 0x0000000a },
-       {}
-};
-
-static const struct gf100_gr_init
-gm200_grctx_init_sm_0[] = {
-       { 0x419e04,   3, 0x04, 0x00000000 },
-       { 0x419e10,   1, 0x04, 0x00001c02 },
-       { 0x419e44,   1, 0x04, 0x00d3eff2 },
-       { 0x419e48,   1, 0x04, 0x00000000 },
-       { 0x419e4c,   1, 0x04, 0x0000007f },
-       { 0x419e50,   1, 0x04, 0x00000000 },
-       { 0x419e58,   6, 0x04, 0x00000000 },
-       { 0x419e74,  10, 0x04, 0x00000000 },
-       { 0x419eac,   1, 0x04, 0x0001cf8b },
-       { 0x419eb0,   1, 0x04, 0x00030300 },
-       { 0x419eb8,   1, 0x04, 0x40000000 },
-       { 0x419ef0,  24, 0x04, 0x00000000 },
-       { 0x419f68,   2, 0x04, 0x00000000 },
-       { 0x419f70,   1, 0x04, 0x00000020 },
-       { 0x419f78,   1, 0x04, 0x00010beb },
-       { 0x419f7c,   1, 0x04, 0x00000000 },
-       {}
-};
-
-const struct gf100_gr_pack
-gm200_grctx_pack_tpc[] = {
-       { gm200_grctx_init_pe_0 },
-       { gm200_grctx_init_tex_0 },
-       { gm200_grctx_init_mpc_0 },
-       { gm200_grctx_init_l1c_0 },
-       { gm200_grctx_init_sm_0 },
-       {}
-};
-
-static const struct gf100_gr_init
-gm200_grctx_init_pes_0[] = {
-       { 0x41be24,   1, 0x04, 0x0000000e },
-       {}
-};
-
-static const struct gf100_gr_init
-gm200_grctx_init_cbm_0[] = {
-       { 0x41bec0,   1, 0x04, 0x00000000 },
-       { 0x41bec4,   1, 0x04, 0x01030000 },
-       { 0x41bee4,   1, 0x04, 0x00000000 },
-       { 0x41bef0,   1, 0x04, 0x000003ff },
-       { 0x41bef4,   2, 0x04, 0x00000000 },
-       {}
-};
-
-const struct gf100_gr_pack
-gm200_grctx_pack_ppc[] = {
-       { gm200_grctx_init_pes_0 },
-       { gm200_grctx_init_cbm_0 },
-       { gm107_grctx_init_wwdx_0 },
-       {}
-};
-
 /*******************************************************************************
  * PGRAPH context implementation
  ******************************************************************************/
@@ -985,11 +720,7 @@ gm200_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
        u32 tmp;
        int i;
 
-       gf100_gr_mmio(gr, grctx->hub);
-       gf100_gr_mmio(gr, grctx->gpc);
-       gf100_gr_mmio(gr, grctx->zcull);
-       gf100_gr_mmio(gr, grctx->tpc);
-       gf100_gr_mmio(gr, grctx->ppc);
+       gf100_gr_mmio(gr, gr->fuc_sw_ctx);
 
        nvkm_wr32(device, 0x404154, 0x00000000);
 
@@ -1028,11 +759,6 @@ const struct gf100_grctx_func
 gm200_grctx = {
        .main  = gm200_grctx_generate_main,
        .unkn  = gk104_grctx_generate_unkn,
-       .hub   = gm200_grctx_pack_hub,
-       .gpc   = gm200_grctx_pack_gpc,
-       .zcull = gf100_grctx_pack_zcull,
-       .tpc   = gm200_grctx_pack_tpc,
-       .ppc   = gm200_grctx_pack_ppc,
        .icmd  = gm200_grctx_pack_icmd,
        .mthd  = gm200_grctx_pack_mthd,
        .bundle = gm107_grctx_generate_bundle,
index 6a36c5c..66fe517 100644 (file)
  */
 #include "ctxgf100.h"
 
-static const struct gf100_gr_init
-gm206_grctx_init_gpc_unk_1[] = {
-       { 0x418600,   1, 0x04, 0x0000007f },
-       { 0x418684,   1, 0x04, 0x0000001f },
-       { 0x418700,   1, 0x04, 0x00000002 },
-       { 0x418704,   1, 0x04, 0x00000080 },
-       { 0x418708,   1, 0x04, 0x40000000 },
-       { 0x41870c,   2, 0x04, 0x00000000 },
-       { 0x418728,   1, 0x04, 0x00300020 },
-       {}
-};
-
-static const struct gf100_gr_pack
-gm206_grctx_pack_gpc[] = {
-       { gm107_grctx_init_gpc_unk_0 },
-       { gm200_grctx_init_prop_0 },
-       { gm206_grctx_init_gpc_unk_1 },
-       { gm200_grctx_init_setup_0 },
-       { gf100_grctx_init_zcull_0 },
-       { gk208_grctx_init_crstr_0 },
-       { gm200_grctx_init_gpm_0 },
-       { gm200_grctx_init_gpc_unk_2 },
-       { gf100_grctx_init_gcc_0 },
-       {}
-};
-
 const struct gf100_grctx_func
 gm206_grctx = {
        .main  = gm200_grctx_generate_main,
        .unkn  = gk104_grctx_generate_unkn,
-       .hub   = gm200_grctx_pack_hub,
-       .gpc   = gm206_grctx_pack_gpc,
-       .zcull = gf100_grctx_pack_zcull,
-       .tpc   = gm200_grctx_pack_tpc,
-       .ppc   = gm200_grctx_pack_ppc,
        .icmd  = gm200_grctx_pack_icmd,
        .mthd  = gm200_grctx_pack_mthd,
        .bundle = gm107_grctx_generate_bundle,