diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c | 38 |
1 files changed, 2 insertions, 36 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c index 68fbb738..7a664bf8 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c | |||
@@ -372,41 +372,7 @@ static void add_sema_cmd(struct gk20a *g, struct channel_gk20a *c, | |||
372 | if (!acquire) | 372 | if (!acquire) |
373 | nvgpu_semaphore_prepare(s, c->hw_sema); | 373 | nvgpu_semaphore_prepare(s, c->hw_sema); |
374 | 374 | ||
375 | /* semaphore_a */ | 375 | g->ops.fifo.add_sema_cmd(g, s, va, cmd, off, acquire, wfi); |
376 | nvgpu_mem_wr32(g, cmd->mem, off++, 0x20010004); | ||
377 | /* offset_upper */ | ||
378 | nvgpu_mem_wr32(g, cmd->mem, off++, (va >> 32) & 0xff); | ||
379 | /* semaphore_b */ | ||
380 | nvgpu_mem_wr32(g, cmd->mem, off++, 0x20010005); | ||
381 | /* offset */ | ||
382 | nvgpu_mem_wr32(g, cmd->mem, off++, va & 0xffffffff); | ||
383 | |||
384 | if (acquire) { | ||
385 | /* semaphore_c */ | ||
386 | nvgpu_mem_wr32(g, cmd->mem, off++, 0x20010006); | ||
387 | /* payload */ | ||
388 | nvgpu_mem_wr32(g, cmd->mem, off++, | ||
389 | nvgpu_semaphore_get_value(s)); | ||
390 | /* semaphore_d */ | ||
391 | nvgpu_mem_wr32(g, cmd->mem, off++, 0x20010007); | ||
392 | /* operation: acq_geq, switch_en */ | ||
393 | nvgpu_mem_wr32(g, cmd->mem, off++, 0x4 | (0x1 << 12)); | ||
394 | } else { | ||
395 | /* semaphore_c */ | ||
396 | nvgpu_mem_wr32(g, cmd->mem, off++, 0x20010006); | ||
397 | /* payload */ | ||
398 | nvgpu_mem_wr32(g, cmd->mem, off++, | ||
399 | nvgpu_semaphore_get_value(s)); | ||
400 | /* semaphore_d */ | ||
401 | nvgpu_mem_wr32(g, cmd->mem, off++, 0x20010007); | ||
402 | /* operation: release, wfi */ | ||
403 | nvgpu_mem_wr32(g, cmd->mem, off++, | ||
404 | 0x2 | ((wfi ? 0x0 : 0x1) << 20)); | ||
405 | /* non_stall_int */ | ||
406 | nvgpu_mem_wr32(g, cmd->mem, off++, 0x20010008); | ||
407 | /* ignored */ | ||
408 | nvgpu_mem_wr32(g, cmd->mem, off++, 0); | ||
409 | } | ||
410 | 376 | ||
411 | if (acquire) | 377 | if (acquire) |
412 | gpu_sema_verbose_dbg(g, "(A) c=%d ACQ_GE %-4u pool=%-3d" | 378 | gpu_sema_verbose_dbg(g, "(A) c=%d ACQ_GE %-4u pool=%-3d" |
@@ -495,7 +461,7 @@ static int __gk20a_channel_semaphore_incr( | |||
495 | return -ENOMEM; | 461 | return -ENOMEM; |
496 | } | 462 | } |
497 | 463 | ||
498 | incr_cmd_size = 10; | 464 | incr_cmd_size = c->g->ops.fifo.get_sema_incr_cmd_size(); |
499 | err = gk20a_channel_alloc_priv_cmdbuf(c, incr_cmd_size, incr_cmd); | 465 | err = gk20a_channel_alloc_priv_cmdbuf(c, incr_cmd_size, incr_cmd); |
500 | if (err) { | 466 | if (err) { |
501 | nvgpu_err(c->g, | 467 | nvgpu_err(c->g, |