diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_gk20a.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c index 6eecebf5..654388cb 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c | |||
@@ -214,6 +214,12 @@ u32 channel_gk20a_pbdma_acquire_val(struct channel_gk20a *c) | |||
214 | u64 timeout; | 214 | u64 timeout; |
215 | int val_len; | 215 | int val_len; |
216 | 216 | ||
217 | val = pbdma_acquire_retry_man_2_f() | | ||
218 | pbdma_acquire_retry_exp_2_f(); | ||
219 | |||
220 | if (!c->g->timeouts_enabled) | ||
221 | return val; | ||
222 | |||
217 | timeout = gk20a_get_channel_watchdog_timeout(c); | 223 | timeout = gk20a_get_channel_watchdog_timeout(c); |
218 | do_div(timeout, 2); /* set acquire timeout to half of channel wdt */ | 224 | do_div(timeout, 2); /* set acquire timeout to half of channel wdt */ |
219 | timeout *= 1000000UL; /* ms -> ns */ | 225 | timeout *= 1000000UL; /* ms -> ns */ |
@@ -232,11 +238,10 @@ u32 channel_gk20a_pbdma_acquire_val(struct channel_gk20a *c) | |||
232 | man = timeout; | 238 | man = timeout; |
233 | } | 239 | } |
234 | 240 | ||
235 | val = pbdma_acquire_retry_man_2_f() | | 241 | val |= pbdma_acquire_timeout_exp_f(exp) | |
236 | pbdma_acquire_retry_exp_2_f() | | ||
237 | pbdma_acquire_timeout_exp_f(exp) | | ||
238 | pbdma_acquire_timeout_man_f(man) | | 242 | pbdma_acquire_timeout_man_f(man) | |
239 | pbdma_acquire_timeout_en_enable_f(); | 243 | pbdma_acquire_timeout_en_enable_f(); |
244 | |||
240 | return val; | 245 | return val; |
241 | } | 246 | } |
242 | 247 | ||