summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
diff options
context:
space:
mode:
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;