diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c | 15 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h | 3 |
2 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c index e965a329..18d61faa 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c | |||
@@ -301,6 +301,13 @@ static u64 gk20a_channel_syncpt_address(struct gk20a_channel_sync *s) | |||
301 | return sp->syncpt_buf.gpu_va; | 301 | return sp->syncpt_buf.gpu_va; |
302 | } | 302 | } |
303 | 303 | ||
304 | static u32 gk20a_channel_add_user_incrs(struct gk20a_channel_sync *s, u32 val) | ||
305 | { | ||
306 | struct gk20a_channel_syncpt *sp = | ||
307 | container_of(s, struct gk20a_channel_syncpt, ops); | ||
308 | return nvgpu_nvhost_syncpt_incr_max_ext(sp->nvhost_dev, sp->id, val); | ||
309 | } | ||
310 | |||
304 | static void gk20a_channel_syncpt_destroy(struct gk20a_channel_sync *s) | 311 | static void gk20a_channel_syncpt_destroy(struct gk20a_channel_sync *s) |
305 | { | 312 | { |
306 | struct gk20a_channel_syncpt *sp = | 313 | struct gk20a_channel_syncpt *sp = |
@@ -353,6 +360,7 @@ gk20a_channel_syncpt_create(struct channel_gk20a *c) | |||
353 | sp->ops.signal_timeline = gk20a_channel_syncpt_signal_timeline; | 360 | sp->ops.signal_timeline = gk20a_channel_syncpt_signal_timeline; |
354 | sp->ops.syncpt_id = gk20a_channel_syncpt_id; | 361 | sp->ops.syncpt_id = gk20a_channel_syncpt_id; |
355 | sp->ops.syncpt_address = gk20a_channel_syncpt_address; | 362 | sp->ops.syncpt_address = gk20a_channel_syncpt_address; |
363 | sp->ops.add_user_incrs = gk20a_channel_add_user_incrs; | ||
356 | sp->ops.destroy = gk20a_channel_syncpt_destroy; | 364 | sp->ops.destroy = gk20a_channel_syncpt_destroy; |
357 | 365 | ||
358 | return &sp->ops; | 366 | return &sp->ops; |
@@ -878,6 +886,12 @@ static u64 gk20a_channel_semaphore_syncpt_address(struct gk20a_channel_sync *s) | |||
878 | return 0; | 886 | return 0; |
879 | } | 887 | } |
880 | 888 | ||
889 | static u32 gk20a_channel_semaphore_add_user_incrs(struct gk20a_channel_sync *s, | ||
890 | u32 val) | ||
891 | { | ||
892 | return 0; | ||
893 | } | ||
894 | |||
881 | static void gk20a_channel_semaphore_destroy(struct gk20a_channel_sync *s) | 895 | static void gk20a_channel_semaphore_destroy(struct gk20a_channel_sync *s) |
882 | { | 896 | { |
883 | struct gk20a_channel_semaphore *sema = | 897 | struct gk20a_channel_semaphore *sema = |
@@ -930,6 +944,7 @@ gk20a_channel_semaphore_create(struct channel_gk20a *c) | |||
930 | sema->ops.signal_timeline = gk20a_channel_semaphore_signal_timeline; | 944 | sema->ops.signal_timeline = gk20a_channel_semaphore_signal_timeline; |
931 | sema->ops.syncpt_id = gk20a_channel_semaphore_syncpt_id; | 945 | sema->ops.syncpt_id = gk20a_channel_semaphore_syncpt_id; |
932 | sema->ops.syncpt_address = gk20a_channel_semaphore_syncpt_address; | 946 | sema->ops.syncpt_address = gk20a_channel_semaphore_syncpt_address; |
947 | sema->ops.add_user_incrs = gk20a_channel_semaphore_add_user_incrs; | ||
933 | sema->ops.destroy = gk20a_channel_semaphore_destroy; | 948 | sema->ops.destroy = gk20a_channel_semaphore_destroy; |
934 | 949 | ||
935 | return &sema->ops; | 950 | return &sema->ops; |
diff --git a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h index fe1d8526..c80ebd38 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h | |||
@@ -105,6 +105,9 @@ struct gk20a_channel_sync { | |||
105 | /* Returns the sync point address of sync point or 0 if not supported */ | 105 | /* Returns the sync point address of sync point or 0 if not supported */ |
106 | u64 (*syncpt_address)(struct gk20a_channel_sync *s); | 106 | u64 (*syncpt_address)(struct gk20a_channel_sync *s); |
107 | 107 | ||
108 | /* Handle user added increments in the push buffer */ | ||
109 | u32 (*add_user_incrs)(struct gk20a_channel_sync *s, u32 val); | ||
110 | |||
108 | /* Free the resources allocated by gk20a_channel_sync_create. */ | 111 | /* Free the resources allocated by gk20a_channel_sync_create. */ |
109 | void (*destroy)(struct gk20a_channel_sync *s); | 112 | void (*destroy)(struct gk20a_channel_sync *s); |
110 | }; | 113 | }; |