From 9165427ef7bb0d303a37214a3f4e68efebaf1418 Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Wed, 7 Oct 2015 14:52:05 -0700 Subject: gpu: nvgpu: Hard code FE_GO_IDLE_TIMEOUT Always use the PROD value for FE_GO_IDLE_TIMEOUT. Change-Id: I455c03ae07b35a8999cd0995e458c421a10e7ca2 Signed-off-by: Terje Bergstrom Reviewed-on: http://git-master/r/813958 --- drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 18 ++++++------------ drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h | 4 ++++ drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h | 4 ++++ 3 files changed, 14 insertions(+), 12 deletions(-) (limited to 'drivers') diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 8c667ae7..f01b3f37 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c @@ -1400,13 +1400,9 @@ static u32 gk20a_init_sw_bundle(struct gk20a *g) int i; unsigned long end_jiffies = jiffies + msecs_to_jiffies(gk20a_get_gr_idle_timeout(g)); - u32 fe_go_idle_timeout_save; - /* save and disable fe_go_idle */ - fe_go_idle_timeout_save = - gk20a_readl(g, gr_fe_go_idle_timeout_r()); + /* disable fe_go_idle */ gk20a_writel(g, gr_fe_go_idle_timeout_r(), - (fe_go_idle_timeout_save & gr_fe_go_idle_timeout_count_f(0)) | gr_fe_go_idle_timeout_count_disabled_f()); /* enable pipe mode override */ gk20a_writel(g, gr_pipe_bundle_config_r(), @@ -1439,7 +1435,8 @@ static u32 gk20a_init_sw_bundle(struct gk20a *g) gr_pipe_bundle_config_override_pipe_mode_disabled_f()); /* restore fe_go_idle */ - gk20a_writel(g, gr_fe_go_idle_timeout_r(), fe_go_idle_timeout_save); + gk20a_writel(g, gr_fe_go_idle_timeout_r(), + gr_fe_go_idle_timeout_count_prod_f()); return err; } @@ -4077,7 +4074,6 @@ static int gk20a_init_gr_setup_hw(struct gk20a *g) u64 addr; unsigned long end_jiffies = jiffies + msecs_to_jiffies(gk20a_get_gr_idle_timeout(g)); - u32 fe_go_idle_timeout_save; u32 last_method_data = 0; u32 i, err; @@ -4166,11 +4162,8 @@ static int gk20a_init_gr_setup_hw(struct gk20a *g) if (err) goto out; - /* save and disable fe_go_idle */ - fe_go_idle_timeout_save = - gk20a_readl(g, gr_fe_go_idle_timeout_r()); + /* disable fe_go_idle */ gk20a_writel(g, gr_fe_go_idle_timeout_r(), - (fe_go_idle_timeout_save & gr_fe_go_idle_timeout_count_f(0)) | gr_fe_go_idle_timeout_count_disabled_f()); /* override a few ctx state registers */ @@ -4185,7 +4178,8 @@ static int gk20a_init_gr_setup_hw(struct gk20a *g) restore_fe_go_idle: /* restore fe_go_idle */ - gk20a_writel(g, gr_fe_go_idle_timeout_r(), fe_go_idle_timeout_save); + gk20a_writel(g, gr_fe_go_idle_timeout_r(), + gr_fe_go_idle_timeout_count_prod_f()); if (err || gr_gk20a_wait_idle(g, end_jiffies, GR_IDLE_CHECK_DEFAULT)) goto out; diff --git a/drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h b/drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h index 2d63147a..abe6b119 100644 --- a/drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h @@ -522,6 +522,10 @@ static inline u32 gr_fe_go_idle_timeout_count_disabled_f(void) { return 0x0; } +static inline u32 gr_fe_go_idle_timeout_count_prod_f(void) +{ + return 0x800; +} static inline u32 gr_fe_object_table_r(u32 i) { return 0x00404200 + i*4; diff --git a/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h b/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h index 2fea4e8c..d91d40af 100644 --- a/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h +++ b/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h @@ -522,6 +522,10 @@ static inline u32 gr_fe_go_idle_timeout_count_disabled_f(void) { return 0x0; } +static inline u32 gr_fe_go_idle_timeout_count_prod_f(void) +{ + return 0x800; +} static inline u32 gr_fe_object_table_r(u32 i) { return 0x00404200 + i*4; -- cgit v1.2.2