summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2016-03-31 03:04:05 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2016-04-07 11:44:58 -0400
commitce04ae15bb0952ce994cb6842ac6e6f34e85d064 (patch)
tree5ae30fb507d470c1f732bcd5649d1a7fe8352101 /drivers
parent5f10073540acba056ccf905010dd400d8f32ca31 (diff)
gpu: nvgpu: APIs to post event id events
Add below channel and TSG APIs to post events on event_id interface gk20a_channel_event_id_post_event() gk20a_tsg_event_id_post_event() Bug 200089620 Change-Id: I0cfadc9ffdb880b2410f97758fad47905c620db1 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1112267 (cherry picked from commit 9f50d7da4500af4dbf4dabe7916eda6fc220f4fb) Reviewed-on: http://git-master/r/1120320 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c22
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.h2
-rw-r--r--drivers/gpu/nvgpu/gk20a/tsg_gk20a.c22
-rw-r--r--drivers/gpu/nvgpu/gk20a/tsg_gk20a.h3
4 files changed, 49 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index 4ad9d85b..468ee7f1 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -2583,6 +2583,28 @@ static int gk20a_channel_get_event_data_from_id(struct channel_gk20a *ch,
2583 } 2583 }
2584} 2584}
2585 2585
2586void gk20a_channel_event_id_post_event(struct channel_gk20a *ch,
2587 int event_id)
2588{
2589 struct gk20a_event_id_data *event_id_data;
2590 int err = 0;
2591
2592 err = gk20a_channel_get_event_data_from_id(ch, event_id,
2593 &event_id_data);
2594 if (err)
2595 return;
2596
2597 mutex_lock(&event_id_data->lock);
2598
2599 gk20a_dbg_info(
2600 "posting event for event_id=%d on ch=%d\n",
2601 event_id, ch->hw_chid);
2602
2603 wake_up_interruptible_all(&event_id_data->event_id_wq);
2604
2605 mutex_unlock(&event_id_data->lock);
2606}
2607
2586static int gk20a_channel_event_id_enable(struct channel_gk20a *ch, 2608static int gk20a_channel_event_id_enable(struct channel_gk20a *ch,
2587 int event_id, 2609 int event_id,
2588 int *fd) 2610 int *fd)
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
index 577e3861..ca11739e 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
@@ -281,5 +281,7 @@ int gk20a_channel_get_timescale_from_timeslice(struct gk20a *g,
281 int *__timeslice_timeout, int *__timeslice_scale); 281 int *__timeslice_timeout, int *__timeslice_scale);
282int gk20a_channel_set_priority(struct channel_gk20a *ch, u32 priority); 282int gk20a_channel_set_priority(struct channel_gk20a *ch, u32 priority);
283int gk20a_channel_set_timeslice(struct channel_gk20a *ch, u32 timeslice); 283int gk20a_channel_set_timeslice(struct channel_gk20a *ch, u32 timeslice);
284void gk20a_channel_event_id_post_event(struct channel_gk20a *ch,
285 int event_id);
284 286
285#endif /* CHANNEL_GK20A_H */ 287#endif /* CHANNEL_GK20A_H */
diff --git a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
index a0232a69..51e6407c 100644
--- a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
@@ -212,6 +212,28 @@ static int gk20a_tsg_get_event_data_from_id(struct tsg_gk20a *tsg,
212 } 212 }
213} 213}
214 214
215void gk20a_tsg_event_id_post_event(struct tsg_gk20a *tsg,
216 int event_id)
217{
218 struct gk20a_event_id_data *event_id_data;
219 int err = 0;
220
221 err = gk20a_tsg_get_event_data_from_id(tsg, event_id,
222 &event_id_data);
223 if (err)
224 return;
225
226 mutex_lock(&event_id_data->lock);
227
228 gk20a_dbg_info(
229 "posting event for event_id=%d on tsg=%d\n",
230 event_id, tsg->tsgid);
231
232 wake_up_interruptible_all(&event_id_data->event_id_wq);
233
234 mutex_unlock(&event_id_data->lock);
235}
236
215static int gk20a_tsg_event_id_enable(struct tsg_gk20a *tsg, 237static int gk20a_tsg_event_id_enable(struct tsg_gk20a *tsg,
216 int event_id, 238 int event_id,
217 int *fd) 239 int *fd)
diff --git a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.h b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.h
index ac872e30..9a23c973 100644
--- a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.h
@@ -59,4 +59,7 @@ struct tsg_gk20a {
59int gk20a_enable_tsg(struct tsg_gk20a *tsg); 59int gk20a_enable_tsg(struct tsg_gk20a *tsg);
60int gk20a_disable_tsg(struct tsg_gk20a *tsg); 60int gk20a_disable_tsg(struct tsg_gk20a *tsg);
61 61
62void gk20a_tsg_event_id_post_event(struct tsg_gk20a *tsg,
63 int event_id);
64
62#endif /* __TSG_GK20A_H_ */ 65#endif /* __TSG_GK20A_H_ */