From 22d0233d3a2c7e2805f0251e43e776fa07469c8b Mon Sep 17 00:00:00 2001 From: Richard Zhao Date: Wed, 8 Jun 2016 14:57:41 -0700 Subject: gpu: nvgpu: vgpu: add read ptimer support Bug 1395833 Change-Id: Id0d427b6a1ddaecfeec33c61a6161679cf596c92 Signed-off-by: Richard Zhao Reviewed-on: http://git-master/r/1159588 (cherry picked from commit d33aa89420990626fb377c56ed5517a00f717c2a) Reviewed-on: http://git-master/r/1158897 Reviewed-by: Thomas Fleury GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/vgpu/vgpu.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'drivers/gpu/nvgpu/vgpu') diff --git a/drivers/gpu/nvgpu/vgpu/vgpu.c b/drivers/gpu/nvgpu/vgpu/vgpu.c index 0d5dd27b..399b7c67 100644 --- a/drivers/gpu/nvgpu/vgpu/vgpu.c +++ b/drivers/gpu/nvgpu/vgpu/vgpu.c @@ -312,6 +312,29 @@ static int vgpu_init_gpu_characteristics(struct gk20a *g) return 0; } +static int vgpu_read_ptimer(struct gk20a *g, u64 *value) +{ + struct gk20a_platform *platform = gk20a_get_platform(g->dev); + struct tegra_vgpu_cmd_msg msg = {0}; + struct tegra_vgpu_read_ptimer_params *p = &msg.params.read_ptimer; + int err; + + gk20a_dbg_fn(""); + + msg.cmd = TEGRA_VGPU_CMD_READ_PTIMER; + msg.handle = platform->virt_handle; + + err = vgpu_comm_sendrecv(&msg, sizeof(msg), sizeof(msg)); + err = err ? err : msg.ret; + if (!err) + *value = p->time; + else + gk20a_err(dev_from_gk20a(g), + "vgpu read ptimer failed, err=%d", err); + + return err; +} + void vgpu_init_hal_common(struct gk20a *g) { struct gpu_ops *gops = &g->ops; @@ -324,6 +347,7 @@ void vgpu_init_hal_common(struct gk20a *g) vgpu_init_fecs_trace_ops(gops); vgpu_init_tsg_ops(gops); gops->chip_init_gpu_characteristics = vgpu_init_gpu_characteristics; + gops->read_ptimer = vgpu_read_ptimer; } static int vgpu_init_hal(struct gk20a *g) -- cgit v1.2.2