diff options
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 18 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h | 4 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h | 4 |
3 files changed, 14 insertions, 12 deletions
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) | |||
1400 | int i; | 1400 | int i; |
1401 | unsigned long end_jiffies = jiffies + | 1401 | unsigned long end_jiffies = jiffies + |
1402 | msecs_to_jiffies(gk20a_get_gr_idle_timeout(g)); | 1402 | msecs_to_jiffies(gk20a_get_gr_idle_timeout(g)); |
1403 | u32 fe_go_idle_timeout_save; | ||
1404 | 1403 | ||
1405 | /* save and disable fe_go_idle */ | 1404 | /* disable fe_go_idle */ |
1406 | fe_go_idle_timeout_save = | ||
1407 | gk20a_readl(g, gr_fe_go_idle_timeout_r()); | ||
1408 | gk20a_writel(g, gr_fe_go_idle_timeout_r(), | 1405 | gk20a_writel(g, gr_fe_go_idle_timeout_r(), |
1409 | (fe_go_idle_timeout_save & gr_fe_go_idle_timeout_count_f(0)) | | ||
1410 | gr_fe_go_idle_timeout_count_disabled_f()); | 1406 | gr_fe_go_idle_timeout_count_disabled_f()); |
1411 | /* enable pipe mode override */ | 1407 | /* enable pipe mode override */ |
1412 | gk20a_writel(g, gr_pipe_bundle_config_r(), | 1408 | gk20a_writel(g, gr_pipe_bundle_config_r(), |
@@ -1439,7 +1435,8 @@ static u32 gk20a_init_sw_bundle(struct gk20a *g) | |||
1439 | gr_pipe_bundle_config_override_pipe_mode_disabled_f()); | 1435 | gr_pipe_bundle_config_override_pipe_mode_disabled_f()); |
1440 | 1436 | ||
1441 | /* restore fe_go_idle */ | 1437 | /* restore fe_go_idle */ |
1442 | gk20a_writel(g, gr_fe_go_idle_timeout_r(), fe_go_idle_timeout_save); | 1438 | gk20a_writel(g, gr_fe_go_idle_timeout_r(), |
1439 | gr_fe_go_idle_timeout_count_prod_f()); | ||
1443 | 1440 | ||
1444 | return err; | 1441 | return err; |
1445 | } | 1442 | } |
@@ -4077,7 +4074,6 @@ static int gk20a_init_gr_setup_hw(struct gk20a *g) | |||
4077 | u64 addr; | 4074 | u64 addr; |
4078 | unsigned long end_jiffies = jiffies + | 4075 | unsigned long end_jiffies = jiffies + |
4079 | msecs_to_jiffies(gk20a_get_gr_idle_timeout(g)); | 4076 | msecs_to_jiffies(gk20a_get_gr_idle_timeout(g)); |
4080 | u32 fe_go_idle_timeout_save; | ||
4081 | u32 last_method_data = 0; | 4077 | u32 last_method_data = 0; |
4082 | u32 i, err; | 4078 | u32 i, err; |
4083 | 4079 | ||
@@ -4166,11 +4162,8 @@ static int gk20a_init_gr_setup_hw(struct gk20a *g) | |||
4166 | if (err) | 4162 | if (err) |
4167 | goto out; | 4163 | goto out; |
4168 | 4164 | ||
4169 | /* save and disable fe_go_idle */ | 4165 | /* disable fe_go_idle */ |
4170 | fe_go_idle_timeout_save = | ||
4171 | gk20a_readl(g, gr_fe_go_idle_timeout_r()); | ||
4172 | gk20a_writel(g, gr_fe_go_idle_timeout_r(), | 4166 | gk20a_writel(g, gr_fe_go_idle_timeout_r(), |
4173 | (fe_go_idle_timeout_save & gr_fe_go_idle_timeout_count_f(0)) | | ||
4174 | gr_fe_go_idle_timeout_count_disabled_f()); | 4167 | gr_fe_go_idle_timeout_count_disabled_f()); |
4175 | 4168 | ||
4176 | /* override a few ctx state registers */ | 4169 | /* override a few ctx state registers */ |
@@ -4185,7 +4178,8 @@ static int gk20a_init_gr_setup_hw(struct gk20a *g) | |||
4185 | 4178 | ||
4186 | restore_fe_go_idle: | 4179 | restore_fe_go_idle: |
4187 | /* restore fe_go_idle */ | 4180 | /* restore fe_go_idle */ |
4188 | gk20a_writel(g, gr_fe_go_idle_timeout_r(), fe_go_idle_timeout_save); | 4181 | gk20a_writel(g, gr_fe_go_idle_timeout_r(), |
4182 | gr_fe_go_idle_timeout_count_prod_f()); | ||
4189 | 4183 | ||
4190 | if (err || gr_gk20a_wait_idle(g, end_jiffies, GR_IDLE_CHECK_DEFAULT)) | 4184 | if (err || gr_gk20a_wait_idle(g, end_jiffies, GR_IDLE_CHECK_DEFAULT)) |
4191 | goto out; | 4185 | 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) | |||
522 | { | 522 | { |
523 | return 0x0; | 523 | return 0x0; |
524 | } | 524 | } |
525 | static inline u32 gr_fe_go_idle_timeout_count_prod_f(void) | ||
526 | { | ||
527 | return 0x800; | ||
528 | } | ||
525 | static inline u32 gr_fe_object_table_r(u32 i) | 529 | static inline u32 gr_fe_object_table_r(u32 i) |
526 | { | 530 | { |
527 | return 0x00404200 + i*4; | 531 | 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) | |||
522 | { | 522 | { |
523 | return 0x0; | 523 | return 0x0; |
524 | } | 524 | } |
525 | static inline u32 gr_fe_go_idle_timeout_count_prod_f(void) | ||
526 | { | ||
527 | return 0x800; | ||
528 | } | ||
525 | static inline u32 gr_fe_object_table_r(u32 i) | 529 | static inline u32 gr_fe_object_table_r(u32 i) |
526 | { | 530 | { |
527 | return 0x00404200 + i*4; | 531 | return 0x00404200 + i*4; |