summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;