Commit 43bc83b9 authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/gr/gm200: switch over to using sw_ctx from firmware

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent b774c40b
......@@ -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
......@@ -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,
......
......@@ -23,41 +23,10 @@
*/
#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,
......
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