From cb8c102131ec96767e01981dc9a9d26e30593a70 Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Mon, 14 Sep 2015 15:17:38 +0530 Subject: gpu: nvgpu: APIs to disable/enable all engines' activity Add below APIs to disable/re-enable activity on all engines gk20a_fifo_disable_all_engine_activity() gk20a_fifo_enable_all_engine_activity() Bug 200133289 Change-Id: Ie01a260d587807a3c1712ee32fe870fbcb08f9cd Signed-off-by: Deepak Nibade Reviewed-on: http://git-master/r/798747 Reviewed-by: Terje Bergstrom Tested-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | 49 ++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'drivers/gpu/nvgpu/gk20a/fifo_gk20a.c') diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c index 0bd75026..069ea82a 100644 --- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c @@ -1870,6 +1870,24 @@ int gk20a_fifo_enable_engine_activity(struct gk20a *g, return 0; } +int gk20a_fifo_enable_all_engine_activity(struct gk20a *g) +{ + int i; + int err = 0, ret = 0; + + for (i = 0; i < g->fifo.max_engines; i++) { + err = gk20a_fifo_enable_engine_activity(g, + &g->fifo.engine_info[i]); + if (err) { + gk20a_err(dev_from_gk20a(g), + "failed to enable engine %d activity\n", i); + ret = err; + } + } + + return ret; +} + int gk20a_fifo_disable_engine_activity(struct gk20a *g, struct fifo_engine_info_gk20a *eng_info, bool wait_for_idle) @@ -1944,6 +1962,37 @@ clean_up: return err; } +int gk20a_fifo_disable_all_engine_activity(struct gk20a *g, + bool wait_for_idle) +{ + int i; + int err = 0, ret = 0; + + for (i = 0; i < g->fifo.max_engines; i++) { + err = gk20a_fifo_disable_engine_activity(g, + &g->fifo.engine_info[i], + wait_for_idle); + if (err) { + gk20a_err(dev_from_gk20a(g), + "failed to disable engine %d activity\n", i); + ret = err; + break; + } + } + + if (err) { + while (--i >= 0) { + err = gk20a_fifo_enable_engine_activity(g, + &g->fifo.engine_info[i]); + if (err) + gk20a_err(dev_from_gk20a(g), + "failed to re-enable engine %d activity\n", i); + } + } + + return ret; +} + static void gk20a_fifo_runlist_reset_engines(struct gk20a *g, u32 runlist_id) { struct fifo_gk20a *f = &g->fifo; -- cgit v1.2.2