summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2014-05-20 05:30:30 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:09:53 -0400
commit77a0b8eb131550b96969550e2582a2e8424eabed (patch)
tree09c96564b269d1163a3c80987690602fd6097260 /drivers
parent0d7533fb4f49b1e9f1a64f6baacf253c47b4e409 (diff)
gpu: nvgpu: gk20a: export wait_channel_idle()
- Export gk20a_wait_channel_idle() function from channel_gk20a.h - also, return error -EBUSY from this function when channel is found to be not idle Bug 1487804 Change-Id: Ia7425e9b1332260ee9a53dca55ab07541f2755a9 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/412059 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c9
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.h2
2 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index cf239b55..68a30392 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -418,7 +418,7 @@ void gk20a_disable_channel_no_update(struct channel_gk20a *ch)
418 ccsr_channel_enable_clr_true_f()); 418 ccsr_channel_enable_clr_true_f());
419} 419}
420 420
421static int gk20a_wait_channel_idle(struct channel_gk20a *ch) 421int gk20a_wait_channel_idle(struct channel_gk20a *ch)
422{ 422{
423 bool channel_idle = false; 423 bool channel_idle = false;
424 unsigned long end_jiffies = jiffies + 424 unsigned long end_jiffies = jiffies +
@@ -435,8 +435,11 @@ static int gk20a_wait_channel_idle(struct channel_gk20a *ch)
435 } while (time_before(jiffies, end_jiffies) 435 } while (time_before(jiffies, end_jiffies)
436 || !tegra_platform_is_silicon()); 436 || !tegra_platform_is_silicon());
437 437
438 if (!channel_idle) 438 if (!channel_idle) {
439 gk20a_err(dev_from_gk20a(ch->g), "channel jobs not freed"); 439 gk20a_err(dev_from_gk20a(ch->g), "jobs not freed for channel %d\n",
440 ch->hw_chid);
441 return -EBUSY;
442 }
440 443
441 return 0; 444 return 0;
442} 445}
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
index e37511cb..dd0197d6 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
@@ -170,4 +170,6 @@ void gk20a_channel_update(struct channel_gk20a *c, int nr_completed);
170 170
171void gk20a_init_channel(struct gpu_ops *gops); 171void gk20a_init_channel(struct gpu_ops *gops);
172 172
173int gk20a_wait_channel_idle(struct channel_gk20a *ch);
174
173#endif /*__CHANNEL_GK20A_H__*/ 175#endif /*__CHANNEL_GK20A_H__*/