summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2015-06-03 05:45:55 -0400
committerArto Merilainen <amerilainen@nvidia.com>2015-06-05 03:53:45 -0400
commitef8fa4999fcd8c01275ef3790b0abd5e69c55ea5 (patch)
tree319c9a11b69089544c97475edd6bafb1ae9df38c
parentb8aa486109a43a8c92159b0845a4adc9f6a84654 (diff)
gpu: nvgpu: use updated APIs to get/put syncpoint
Pass host1x device pointer for below APIs : nvhost_get_syncpt_host_managed() nvhost_syncpt_put_ref_ext() Also, compose a name for syncpoints in GPU driver itself. This name will be created as combination of device name and channel index Bug 1611482 Change-Id: Id1ddd0e87e0272ddb0758713d6b6c2544bc36bf4 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/751908 Reviewed-by: Arto Merilainen <amerilainen@nvidia.com> Tested-by: Arto Merilainen <amerilainen@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c
index 9b4b756d..8cc852c7 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c
@@ -286,7 +286,7 @@ static void gk20a_channel_syncpt_destroy(struct gk20a_channel_sync *s)
286 struct gk20a_channel_syncpt *sp = 286 struct gk20a_channel_syncpt *sp =
287 container_of(s, struct gk20a_channel_syncpt, ops); 287 container_of(s, struct gk20a_channel_syncpt, ops);
288 nvhost_syncpt_set_min_eq_max_ext(sp->host1x_pdev, sp->id); 288 nvhost_syncpt_set_min_eq_max_ext(sp->host1x_pdev, sp->id);
289 nvhost_syncpt_put_ref_ext(sp->id); 289 nvhost_syncpt_put_ref_ext(sp->host1x_pdev, sp->id);
290 kfree(sp); 290 kfree(sp);
291} 291}
292 292
@@ -294,6 +294,7 @@ static struct gk20a_channel_sync *
294gk20a_channel_syncpt_create(struct channel_gk20a *c) 294gk20a_channel_syncpt_create(struct channel_gk20a *c)
295{ 295{
296 struct gk20a_channel_syncpt *sp; 296 struct gk20a_channel_syncpt *sp;
297 char syncpt_name[16];
297 298
298 sp = kzalloc(sizeof(*sp), GFP_KERNEL); 299 sp = kzalloc(sizeof(*sp), GFP_KERNEL);
299 if (!sp) 300 if (!sp)
@@ -301,14 +302,19 @@ gk20a_channel_syncpt_create(struct channel_gk20a *c)
301 302
302 sp->c = c; 303 sp->c = c;
303 sp->host1x_pdev = c->g->host1x_dev; 304 sp->host1x_pdev = c->g->host1x_dev;
304 sp->id = nvhost_get_syncpt_host_managed(c->g->dev, c->hw_chid); 305
305 nvhost_syncpt_set_min_eq_max_ext(sp->host1x_pdev, sp->id); 306 sprintf(syncpt_name, "%s_%d", dev_name(&c->g->dev->dev), c->hw_chid);
307
308 sp->id = nvhost_get_syncpt_host_managed(sp->host1x_pdev,
309 c->hw_chid, syncpt_name);
306 if (!sp->id) { 310 if (!sp->id) {
307 kfree(sp); 311 kfree(sp);
308 gk20a_err(&c->g->dev->dev, "failed to get free syncpt"); 312 gk20a_err(&c->g->dev->dev, "failed to get free syncpt");
309 return NULL; 313 return NULL;
310 } 314 }
311 315
316 nvhost_syncpt_set_min_eq_max_ext(sp->host1x_pdev, sp->id);
317
312 sp->ops.wait_syncpt = gk20a_channel_syncpt_wait_syncpt; 318 sp->ops.wait_syncpt = gk20a_channel_syncpt_wait_syncpt;
313 sp->ops.wait_fd = gk20a_channel_syncpt_wait_fd; 319 sp->ops.wait_fd = gk20a_channel_syncpt_wait_fd;
314 sp->ops.incr = gk20a_channel_syncpt_incr; 320 sp->ops.incr = gk20a_channel_syncpt_incr;