summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2017-09-13 08:02:21 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-09-15 15:48:20 -0400
commit7d6d0405311337456f50d6fa032963c18d2c9f9f (patch)
treef49b3eaca16726ef471a37b92130c54f04625d03 /drivers/gpu/nvgpu/gk20a
parentef6ea3475cac013c174905ab4f7f187700ae2a33 (diff)
gpu: nvgpu: support platform specific TSG enable/disable
Add platform specific operations to enable/disable a TSG and use them instead of directly calling enable/disable APIs For gm20b/gp106/gp10b we continue to use gk20a_enable_tsg() and gk20a_disable_tsg() as platform specific operations Bug 1739362 Change-Id: I2dd0f38c8303757e8c7a47d8da0e30a790e514f0 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1560635 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c4
-rw-r--r--drivers/gpu/nvgpu/gk20a/fifo_gk20a.c2
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h2
3 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index 89862e63..d0d5c41f 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -200,7 +200,7 @@ int gk20a_enable_channel_tsg(struct gk20a *g, struct channel_gk20a *ch)
200 200
201 if (gk20a_is_channel_marked_as_tsg(ch)) { 201 if (gk20a_is_channel_marked_as_tsg(ch)) {
202 tsg = &g->fifo.tsg[ch->tsgid]; 202 tsg = &g->fifo.tsg[ch->tsgid];
203 gk20a_enable_tsg(tsg); 203 g->ops.fifo.enable_tsg(tsg);
204 } else { 204 } else {
205 g->ops.fifo.enable_channel(ch); 205 g->ops.fifo.enable_channel(ch);
206 } 206 }
@@ -214,7 +214,7 @@ int gk20a_disable_channel_tsg(struct gk20a *g, struct channel_gk20a *ch)
214 214
215 if (gk20a_is_channel_marked_as_tsg(ch)) { 215 if (gk20a_is_channel_marked_as_tsg(ch)) {
216 tsg = &g->fifo.tsg[ch->tsgid]; 216 tsg = &g->fifo.tsg[ch->tsgid];
217 gk20a_disable_tsg(tsg); 217 g->ops.fifo.disable_tsg(tsg);
218 } else { 218 } else {
219 g->ops.fifo.disable_channel(ch); 219 g->ops.fifo.disable_channel(ch);
220 } 220 }
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
index 7062a8a0..88ce6a83 100644
--- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
@@ -1383,7 +1383,7 @@ void gk20a_fifo_abort_tsg(struct gk20a *g, u32 tsgid, bool preempt)
1383 1383
1384 gk20a_dbg_fn(""); 1384 gk20a_dbg_fn("");
1385 1385
1386 gk20a_disable_tsg(tsg); 1386 g->ops.fifo.disable_tsg(tsg);
1387 1387
1388 if (preempt) 1388 if (preempt)
1389 g->ops.fifo.preempt_tsg(g, tsgid); 1389 g->ops.fifo.preempt_tsg(g, tsgid);
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index d2a752d7..4564b6e9 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -475,6 +475,8 @@ struct gpu_ops {
475 int (*resetup_ramfc)(struct channel_gk20a *c); 475 int (*resetup_ramfc)(struct channel_gk20a *c);
476 int (*preempt_channel)(struct gk20a *g, u32 chid); 476 int (*preempt_channel)(struct gk20a *g, u32 chid);
477 int (*preempt_tsg)(struct gk20a *g, u32 tsgid); 477 int (*preempt_tsg)(struct gk20a *g, u32 tsgid);
478 int (*enable_tsg)(struct tsg_gk20a *tsg);
479 int (*disable_tsg)(struct tsg_gk20a *tsg);
478 int (*reschedule_runlist)(struct gk20a *g, u32 runlist_id); 480 int (*reschedule_runlist)(struct gk20a *g, u32 runlist_id);
479 int (*update_runlist)(struct gk20a *g, u32 runlist_id, 481 int (*update_runlist)(struct gk20a *g, u32 runlist_id,
480 u32 chid, bool add, 482 u32 chid, bool add,