From f3d89a2997800a185c2b645593fffe342dc332df Mon Sep 17 00:00:00 2001 From: neha Date: Mon, 11 Apr 2016 17:42:39 +0530 Subject: gpu: nvgpu: Full chip support for ctxsw nvgpu changes needed to handle the newly added ctxsw lists Fix regops support for ppc registers Squashed from: Change-Id: I08e6dec3bb2f7aa51de912c9d1c84a350ce07f72 Signed-off-by: neha Reviewed-on: http://git-master/r/1151010 (cherry picked from commit fd03ad9f09e66f78db88fb7ece448e26e0515821) and: Change-Id: I75a7f810ee0b613c22ac2cef2d936563d8067f97 Signed-off-by: Peter Daifuku Reviewed-on: http://git-master/r/1158888 (cherry picked from commit f00a7fcc57fb937b800e46760087ff6f7637520c) Bug 200180000 Bug 1771830 Reviewed-on: http://git-master/r/1164397 (cherry picked from commit 7028f051e4f37edeff90a9923f022cec6c645a8f) Signed-off-by: Peter Daifuku Change-Id: I796ddf93ef37170843a4a6b44190cd6780d25852 Reviewed-on: http://git-master/r/1183588 Reviewed-by: Vladislav Buzov GVS: Gerrit_Virtual_Submit --- drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c') diff --git a/drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c index 5029db8d..81ac341f 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_ctx_gk20a.c @@ -336,6 +336,34 @@ static int gr_gk20a_init_ctx_vars_fw(struct gk20a *g, struct gr_gk20a *gr) if (err) goto clean_up; break; + case NETLIST_REGIONID_NVPERF_SYS_ROUTER: + gk20a_dbg_info("NETLIST_REGIONID_NVPERF_SYS_ROUTER"); + err = gr_gk20a_alloc_load_netlist_aiv( + src, size, &g->gr.ctx_vars.ctxsw_regs.perf_sys_router); + if (err) + goto clean_up; + break; + case NETLIST_REGIONID_NVPERF_PMA: + gk20a_dbg_info("NETLIST_REGIONID_NVPERF_PMA"); + err = gr_gk20a_alloc_load_netlist_aiv( + src, size, &g->gr.ctx_vars.ctxsw_regs.perf_pma); + if (err) + goto clean_up; + break; + case NETLIST_REGIONID_CTXREG_PMROP: + gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PMROP"); + err = gr_gk20a_alloc_load_netlist_aiv( + src, size, &g->gr.ctx_vars.ctxsw_regs.pm_rop); + if (err) + goto clean_up; + break; + case NETLIST_REGIONID_CTXREG_PMUCGPC: + gk20a_dbg_info("NETLIST_REGIONID_CTXREG_PMUCGPC"); + err = gr_gk20a_alloc_load_netlist_aiv( + src, size, &g->gr.ctx_vars.ctxsw_regs.pm_ucgpc); + if (err) + goto clean_up; + break; default: gk20a_dbg_info("unrecognized region %d skipped", i); break; @@ -381,6 +409,11 @@ clean_up: kfree(g->gr.ctx_vars.ctxsw_regs.gpc_router.l); kfree(g->gr.ctx_vars.ctxsw_regs.pm_ltc.l); kfree(g->gr.ctx_vars.ctxsw_regs.pm_fbpa.l); + kfree(g->gr.ctx_vars.ctxsw_regs.pm_fbpa.l); + kfree(g->gr.ctx_vars.ctxsw_regs.perf_sys_router.l); + kfree(g->gr.ctx_vars.ctxsw_regs.perf_pma.l); + kfree(g->gr.ctx_vars.ctxsw_regs.pm_rop.l); + kfree(g->gr.ctx_vars.ctxsw_regs.pm_ucgpc.l); release_firmware(netlist_fw); err = -ENOENT; } -- cgit v1.2.2