summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.h')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
index a17e6ea9..aa87464b 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
@@ -157,6 +157,12 @@ struct channel_gk20a {
157 157
158 /* event support */ 158 /* event support */
159 struct channel_gk20a_poll_events poll_events; 159 struct channel_gk20a_poll_events poll_events;
160
161 /* signal channel owner via a callback, if set, in gk20a_channel_update
162 * via schedule_work */
163 void (*update_fn)(struct channel_gk20a *, void *);
164 void *update_fn_data;
165 struct work_struct update_fn_work;
160}; 166};
161 167
162static inline bool gk20a_channel_as_bound(struct channel_gk20a *ch) 168static inline bool gk20a_channel_as_bound(struct channel_gk20a *ch)
@@ -196,6 +202,9 @@ void gk20a_init_channel(struct gpu_ops *gops);
196 202
197int gk20a_wait_channel_idle(struct channel_gk20a *ch); 203int gk20a_wait_channel_idle(struct channel_gk20a *ch);
198struct channel_gk20a *gk20a_open_new_channel(struct gk20a *g); 204struct channel_gk20a *gk20a_open_new_channel(struct gk20a *g);
205struct channel_gk20a *gk20a_open_new_channel_with_cb(struct gk20a *g,
206 void (*update_fn)(struct channel_gk20a *, void *),
207 void *update_fn_data);
199void channel_gk20a_unbind(struct channel_gk20a *ch_gk20a); 208void channel_gk20a_unbind(struct channel_gk20a *ch_gk20a);
200 209
201int gk20a_submit_channel_gpfifo(struct channel_gk20a *c, 210int gk20a_submit_channel_gpfifo(struct channel_gk20a *c,