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>
This commit is contained in:
Deepak Nibade
2014-05-20 15:00:30 +05:30
committed by Dan Willemsen
parent 0d7533fb4f
commit 77a0b8eb13
2 changed files with 8 additions and 3 deletions

View File

@@ -418,7 +418,7 @@ void gk20a_disable_channel_no_update(struct channel_gk20a *ch)
ccsr_channel_enable_clr_true_f()); ccsr_channel_enable_clr_true_f());
} }
static int gk20a_wait_channel_idle(struct channel_gk20a *ch) int gk20a_wait_channel_idle(struct channel_gk20a *ch)
{ {
bool channel_idle = false; bool channel_idle = false;
unsigned long end_jiffies = jiffies + unsigned long end_jiffies = jiffies +
@@ -435,8 +435,11 @@ static int gk20a_wait_channel_idle(struct channel_gk20a *ch)
} while (time_before(jiffies, end_jiffies) } while (time_before(jiffies, end_jiffies)
|| !tegra_platform_is_silicon()); || !tegra_platform_is_silicon());
if (!channel_idle) if (!channel_idle) {
gk20a_err(dev_from_gk20a(ch->g), "channel jobs not freed"); gk20a_err(dev_from_gk20a(ch->g), "jobs not freed for channel %d\n",
ch->hw_chid);
return -EBUSY;
}
return 0; return 0;
} }

View File

@@ -170,4 +170,6 @@ void gk20a_channel_update(struct channel_gk20a *c, int nr_completed);
void gk20a_init_channel(struct gpu_ops *gops); void gk20a_init_channel(struct gpu_ops *gops);
int gk20a_wait_channel_idle(struct channel_gk20a *ch);
#endif /*__CHANNEL_GK20A_H__*/ #endif /*__CHANNEL_GK20A_H__*/