wndw.c (1590700d94ac53772491ed3103a4e8b8de01640a) wndw.c (ccd27db8c731817ef36e75de2b5fdc2e79550213)
1/*
2 * Copyright 2018 Red Hat Inc.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the

--- 84 unchanged lines hidden (view full) ---

93 }
94
95 return ctxdma;
96}
97
98int
99nv50_wndw_wait_armed(struct nv50_wndw *wndw, struct nv50_wndw_atom *asyw)
100{
1/*
2 * Copyright 2018 Red Hat Inc.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the

--- 84 unchanged lines hidden (view full) ---

93 }
94
95 return ctxdma;
96}
97
98int
99nv50_wndw_wait_armed(struct nv50_wndw *wndw, struct nv50_wndw_atom *asyw)
100{
101 if (asyw->set.ntfy)
102 return wndw->func->ntfy_wait_begun(wndw, asyw);
101 struct nv50_disp *disp = nv50_disp(wndw->plane.dev);
102 if (asyw->set.ntfy) {
103 return wndw->func->ntfy_wait_begun(disp->sync,
104 asyw->ntfy.offset,
105 wndw->wndw.base.device);
106 }
103 return 0;
104}
105
106u32
107nv50_wndw_flush_clr(struct nv50_wndw *wndw, u32 interlock, bool flush,
108 struct nv50_wndw_atom *asyw)
109{
110 if (asyw->clr.sema && (!asyw->set.sema || flush))

--- 22 unchanged lines hidden (view full) ---

133 if (asyw->set.point) {
134 wndw->immd->point(wndw, asyw);
135 wndw->immd->update(wndw, interlock);
136 }
137
138 return wndw->func->update ? wndw->func->update(wndw, interlock) : 0;
139}
140
107 return 0;
108}
109
110u32
111nv50_wndw_flush_clr(struct nv50_wndw *wndw, u32 interlock, bool flush,
112 struct nv50_wndw_atom *asyw)
113{
114 if (asyw->clr.sema && (!asyw->set.sema || flush))

--- 22 unchanged lines hidden (view full) ---

137 if (asyw->set.point) {
138 wndw->immd->point(wndw, asyw);
139 wndw->immd->update(wndw, interlock);
140 }
141
142 return wndw->func->update ? wndw->func->update(wndw, interlock) : 0;
143}
144
145void
146nv50_wndw_ntfy_enable(struct nv50_wndw *wndw, struct nv50_wndw_atom *asyw)
147{
148 struct nv50_disp *disp = nv50_disp(wndw->plane.dev);
149
150 asyw->ntfy.handle = wndw->wndw.sync.handle;
151 asyw->ntfy.offset = wndw->ntfy;
152 asyw->ntfy.awaken = false;
153 asyw->set.ntfy = true;
154
155 wndw->func->ntfy_reset(disp->sync, wndw->ntfy);
156 wndw->ntfy ^= 0x10;
157}
158
141static void
142nv50_wndw_atomic_check_release(struct nv50_wndw *wndw,
143 struct nv50_wndw_atom *asyw,
144 struct nv50_head_atom *asyh)
145{
146 struct nouveau_drm *drm = nouveau_drm(wndw->plane.dev);
147 NV_ATOMIC(drm, "%s release\n", wndw->plane.name);
148 wndw->func->release(wndw, asyw, asyh);

--- 286 unchanged lines hidden ---
159static void
160nv50_wndw_atomic_check_release(struct nv50_wndw *wndw,
161 struct nv50_wndw_atom *asyw,
162 struct nv50_head_atom *asyh)
163{
164 struct nouveau_drm *drm = nouveau_drm(wndw->plane.dev);
165 NV_ATOMIC(drm, "%s release\n", wndw->plane.name);
166 wndw->func->release(wndw, asyw, asyh);

--- 286 unchanged lines hidden ---