diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c | 12 |
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 * | |||
294 | gk20a_channel_syncpt_create(struct channel_gk20a *c) | 294 | gk20a_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; |