mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 10:34:43 +03:00
gpu: nvgpu: add hal to enable/disable pipe mode override
Add hal g->ops.gr.init.pipe_mode_override in hal.gr.init unit to enable/disable pipe mode override Use new hal in gk20a_init_sw_bundle() Jira NVGPU-2961 Change-Id: Ib78c3c3662b06a2e25bc19abcdced4d303878ae4 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/2083630 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
d1127afb6d
commit
d0c4eecb31
@@ -780,8 +780,7 @@ int gk20a_init_sw_bundle(struct gk20a *g)
|
||||
unsigned int i;
|
||||
|
||||
/* enable pipe mode override */
|
||||
gk20a_writel(g, gr_pipe_bundle_config_r(),
|
||||
gr_pipe_bundle_config_override_pipe_mode_enabled_f());
|
||||
g->ops.gr.init.pipe_mode_override(g, true);
|
||||
|
||||
/* load bundle init */
|
||||
for (i = 0U; i < sw_bundle_init->count; i++) {
|
||||
@@ -823,8 +822,7 @@ int gk20a_init_sw_bundle(struct gk20a *g)
|
||||
}
|
||||
|
||||
/* disable pipe mode override */
|
||||
gk20a_writel(g, gr_pipe_bundle_config_r(),
|
||||
gr_pipe_bundle_config_override_pipe_mode_disabled_f());
|
||||
g->ops.gr.init.pipe_mode_override(g, false);
|
||||
|
||||
err = g->ops.gr.init.wait_idle(g);
|
||||
|
||||
@@ -832,8 +830,7 @@ int gk20a_init_sw_bundle(struct gk20a *g)
|
||||
|
||||
error:
|
||||
/* in case of error skip waiting for GR idle - just restore state */
|
||||
gk20a_writel(g, gr_pipe_bundle_config_r(),
|
||||
gr_pipe_bundle_config_override_pipe_mode_disabled_f());
|
||||
g->ops.gr.init.pipe_mode_override(g, false);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -468,6 +468,7 @@ static const struct gpu_ops gm20b_ops = {
|
||||
gm20b_gr_init_commit_global_attrib_cb,
|
||||
.commit_global_cb_manager =
|
||||
gm20b_gr_init_commit_global_cb_manager,
|
||||
.pipe_mode_override = gm20b_gr_init_pipe_mode_override,
|
||||
},
|
||||
.intr = {
|
||||
.enable_hww_exceptions =
|
||||
|
||||
@@ -546,6 +546,7 @@ static const struct gpu_ops gp10b_ops = {
|
||||
gp10b_gr_init_commit_global_attrib_cb,
|
||||
.commit_global_cb_manager =
|
||||
gp10b_gr_init_commit_global_cb_manager,
|
||||
.pipe_mode_override = gm20b_gr_init_pipe_mode_override,
|
||||
},
|
||||
.intr = {
|
||||
.enable_hww_exceptions =
|
||||
|
||||
@@ -689,6 +689,7 @@ static const struct gpu_ops gv100_ops = {
|
||||
gv11b_gr_init_commit_global_attrib_cb,
|
||||
.commit_global_cb_manager =
|
||||
gp10b_gr_init_commit_global_cb_manager,
|
||||
.pipe_mode_override = gm20b_gr_init_pipe_mode_override,
|
||||
},
|
||||
.intr = {
|
||||
.enable_hww_exceptions =
|
||||
|
||||
@@ -648,6 +648,7 @@ static const struct gpu_ops gv11b_ops = {
|
||||
gv11b_gr_init_commit_global_attrib_cb,
|
||||
.commit_global_cb_manager =
|
||||
gp10b_gr_init_commit_global_cb_manager,
|
||||
.pipe_mode_override = gm20b_gr_init_pipe_mode_override,
|
||||
},
|
||||
.intr = {
|
||||
.enable_hww_exceptions =
|
||||
|
||||
@@ -711,6 +711,17 @@ void gm20b_gr_init_fe_go_idle_timeout(struct gk20a *g, bool enable)
|
||||
}
|
||||
}
|
||||
|
||||
void gm20b_gr_init_pipe_mode_override(struct gk20a *g, bool enable)
|
||||
{
|
||||
if (enable) {
|
||||
nvgpu_writel(g, gr_pipe_bundle_config_r(),
|
||||
gr_pipe_bundle_config_override_pipe_mode_enabled_f());
|
||||
} else {
|
||||
nvgpu_writel(g, gr_pipe_bundle_config_r(),
|
||||
gr_pipe_bundle_config_override_pipe_mode_disabled_f());
|
||||
}
|
||||
}
|
||||
|
||||
void gm20b_gr_init_load_method_init(struct gk20a *g,
|
||||
struct netlist_av_list *sw_method_init)
|
||||
{
|
||||
|
||||
@@ -59,6 +59,7 @@ int gm20b_gr_init_wait_fe_idle(struct gk20a *g);
|
||||
int gm20b_gr_init_fe_pwr_mode_force_on(struct gk20a *g, bool force_on);
|
||||
void gm20b_gr_init_override_context_reset(struct gk20a *g);
|
||||
void gm20b_gr_init_fe_go_idle_timeout(struct gk20a *g, bool enable);
|
||||
void gm20b_gr_init_pipe_mode_override(struct gk20a *g, bool enable);
|
||||
void gm20b_gr_init_load_method_init(struct gk20a *g,
|
||||
struct netlist_av_list *sw_method_init);
|
||||
void gm20b_gr_init_commit_global_timeslice(struct gk20a *g);
|
||||
|
||||
@@ -733,6 +733,8 @@ struct gpu_ops {
|
||||
void (*commit_global_cb_manager)(struct gk20a *g,
|
||||
struct nvgpu_gr_config *config,
|
||||
struct nvgpu_gr_ctx *gr_ctx, bool patch);
|
||||
void (*pipe_mode_override)(struct gk20a *g,
|
||||
bool enable);
|
||||
} init;
|
||||
|
||||
struct {
|
||||
|
||||
@@ -722,6 +722,7 @@ static const struct gpu_ops tu104_ops = {
|
||||
gv11b_gr_init_commit_global_attrib_cb,
|
||||
.commit_global_cb_manager =
|
||||
gp10b_gr_init_commit_global_cb_manager,
|
||||
.pipe_mode_override = gm20b_gr_init_pipe_mode_override,
|
||||
},
|
||||
.intr = {
|
||||
.enable_hww_exceptions =
|
||||
|
||||
Reference in New Issue
Block a user