summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2015-09-14 05:47:38 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2015-09-28 12:07:46 -0400
commitcb8c102131ec96767e01981dc9a9d26e30593a70 (patch)
treeb8df06b9dfbed30d70d68aab895dc6f1cde310b8 /drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
parent41f9e9747720f0658b84491fcf77010d71e1900d (diff)
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 <dnibade@nvidia.com> Reviewed-on: http://git-master/r/798747 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/fifo_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/fifo_gk20a.c49
1 files changed, 49 insertions, 0 deletions
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,
1870 return 0; 1870 return 0;
1871} 1871}
1872 1872
1873int gk20a_fifo_enable_all_engine_activity(struct gk20a *g)
1874{
1875 int i;
1876 int err = 0, ret = 0;
1877
1878 for (i = 0; i < g->fifo.max_engines; i++) {
1879 err = gk20a_fifo_enable_engine_activity(g,
1880 &g->fifo.engine_info[i]);
1881 if (err) {
1882 gk20a_err(dev_from_gk20a(g),
1883 "failed to enable engine %d activity\n", i);
1884 ret = err;
1885 }
1886 }
1887
1888 return ret;
1889}
1890
1873int gk20a_fifo_disable_engine_activity(struct gk20a *g, 1891int gk20a_fifo_disable_engine_activity(struct gk20a *g,
1874 struct fifo_engine_info_gk20a *eng_info, 1892 struct fifo_engine_info_gk20a *eng_info,
1875 bool wait_for_idle) 1893 bool wait_for_idle)
@@ -1944,6 +1962,37 @@ clean_up:
1944 return err; 1962 return err;
1945} 1963}
1946 1964
1965int gk20a_fifo_disable_all_engine_activity(struct gk20a *g,
1966 bool wait_for_idle)
1967{
1968 int i;
1969 int err = 0, ret = 0;
1970
1971 for (i = 0; i < g->fifo.max_engines; i++) {
1972 err = gk20a_fifo_disable_engine_activity(g,
1973 &g->fifo.engine_info[i],
1974 wait_for_idle);
1975 if (err) {
1976 gk20a_err(dev_from_gk20a(g),
1977 "failed to disable engine %d activity\n", i);
1978 ret = err;
1979 break;
1980 }
1981 }
1982
1983 if (err) {
1984 while (--i >= 0) {
1985 err = gk20a_fifo_enable_engine_activity(g,
1986 &g->fifo.engine_info[i]);
1987 if (err)
1988 gk20a_err(dev_from_gk20a(g),
1989 "failed to re-enable engine %d activity\n", i);
1990 }
1991 }
1992
1993 return ret;
1994}
1995
1947static void gk20a_fifo_runlist_reset_engines(struct gk20a *g, u32 runlist_id) 1996static void gk20a_fifo_runlist_reset_engines(struct gk20a *g, u32 runlist_id)
1948{ 1997{
1949 struct fifo_gk20a *f = &g->fifo; 1998 struct fifo_gk20a *f = &g->fifo;