diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/flcn_gk20a.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/flcn_gk20a.c b/drivers/gpu/nvgpu/gk20a/flcn_gk20a.c index 8d459903..83850a19 100644 --- a/drivers/gpu/nvgpu/gk20a/flcn_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/flcn_gk20a.c | |||
@@ -402,6 +402,36 @@ static int gk20a_falcon_bootstrap(struct nvgpu_falcon *flcn, | |||
402 | return 0; | 402 | return 0; |
403 | } | 403 | } |
404 | 404 | ||
405 | static u32 gk20a_falcon_mailbox_read(struct nvgpu_falcon *flcn, | ||
406 | u32 mailbox_index) | ||
407 | { | ||
408 | struct gk20a *g = flcn->g; | ||
409 | u32 data = 0; | ||
410 | |||
411 | if (mailbox_index < FALCON_MAILBOX_COUNT) | ||
412 | data = gk20a_readl(g, flcn->flcn_base + (mailbox_index ? | ||
413 | falcon_falcon_mailbox1_r() : | ||
414 | falcon_falcon_mailbox0_r())); | ||
415 | else | ||
416 | nvgpu_err(g, "incorrect mailbox id %d", mailbox_index); | ||
417 | |||
418 | return data; | ||
419 | } | ||
420 | |||
421 | static void gk20a_falcon_mailbox_write(struct nvgpu_falcon *flcn, | ||
422 | u32 mailbox_index, u32 data) | ||
423 | { | ||
424 | struct gk20a *g = flcn->g; | ||
425 | |||
426 | if (mailbox_index < FALCON_MAILBOX_COUNT) | ||
427 | gk20a_writel(g, flcn->flcn_base + (mailbox_index ? | ||
428 | falcon_falcon_mailbox1_r() : | ||
429 | falcon_falcon_mailbox0_r()), | ||
430 | data); | ||
431 | else | ||
432 | nvgpu_err(g, "incorrect mailbox id %d", mailbox_index); | ||
433 | } | ||
434 | |||
405 | static void gk20a_falcon_dump_imblk(struct nvgpu_falcon *flcn) | 435 | static void gk20a_falcon_dump_imblk(struct nvgpu_falcon *flcn) |
406 | { | 436 | { |
407 | struct gk20a *g = flcn->g; | 437 | struct gk20a *g = flcn->g; |
@@ -612,6 +642,8 @@ void gk20a_falcon_ops(struct nvgpu_falcon *flcn) | |||
612 | flcn_ops->copy_from_imem = gk20a_flcn_copy_from_imem; | 642 | flcn_ops->copy_from_imem = gk20a_flcn_copy_from_imem; |
613 | flcn_ops->bootstrap = gk20a_falcon_bootstrap; | 643 | flcn_ops->bootstrap = gk20a_falcon_bootstrap; |
614 | flcn_ops->dump_falcon_stats = gk20a_falcon_dump_stats; | 644 | flcn_ops->dump_falcon_stats = gk20a_falcon_dump_stats; |
645 | flcn_ops->mailbox_read = gk20a_falcon_mailbox_read; | ||
646 | flcn_ops->mailbox_write = gk20a_falcon_mailbox_write; | ||
615 | 647 | ||
616 | gk20a_falcon_engine_dependency_ops(flcn); | 648 | gk20a_falcon_engine_dependency_ops(flcn); |
617 | } | 649 | } |