diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2014-05-20 05:30:30 -0400 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:09:53 -0400 |
commit | 77a0b8eb131550b96969550e2582a2e8424eabed (patch) | |
tree | 09c96564b269d1163a3c80987690602fd6097260 /drivers/gpu/nvgpu | |
parent | 0d7533fb4f49b1e9f1a64f6baacf253c47b4e409 (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/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_gk20a.c | 9 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_gk20a.h | 2 |
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 | ||
421 | static int gk20a_wait_channel_idle(struct channel_gk20a *ch) | 421 | int 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 | ||
171 | void gk20a_init_channel(struct gpu_ops *gops); | 171 | void gk20a_init_channel(struct gpu_ops *gops); |
172 | 172 | ||
173 | int gk20a_wait_channel_idle(struct channel_gk20a *ch); | ||
174 | |||
173 | #endif /*__CHANNEL_GK20A_H__*/ | 175 | #endif /*__CHANNEL_GK20A_H__*/ |