summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r--drivers/gpu/nvgpu/gk20a/flcn_gk20a.c32
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
405static 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
421static 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
405static void gk20a_falcon_dump_imblk(struct nvgpu_falcon *flcn) 435static 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}