diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2020-06-21 10:22:35 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2020-07-24 18:50:52 +1000 |
commit | 9659be21e8034528839216b21794da73fdbedec2 (patch) | |
tree | 683a22648ffeaf6d0cdd59034da070ffb638f17b | |
parent | bea8395ccf175b599fd3e36df56dd8a67adcea9e (diff) | |
download | lwn-9659be21e8034528839216b21794da73fdbedec2.tar.gz lwn-9659be21e8034528839216b21794da73fdbedec2.zip |
drm/nouveau/kms/nv50-: convert wimm update() to new push macros
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv50/curs507a.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv50/cursc37a.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv50/wimmc37b.c | 21 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/dispnv50/wndw.h | 2 |
4 files changed, 20 insertions, 15 deletions
diff --git a/drivers/gpu/drm/nouveau/dispnv50/curs507a.c b/drivers/gpu/drm/nouveau/dispnv50/curs507a.c index babf680c25fd..47f6f01b52a0 100644 --- a/drivers/gpu/drm/nouveau/dispnv50/curs507a.c +++ b/drivers/gpu/drm/nouveau/dispnv50/curs507a.c @@ -40,11 +40,13 @@ curs507a_space(struct nv50_wndw *wndw) return false; } -static void +static int curs507a_update(struct nv50_wndw *wndw, u32 *interlock) { - if (curs507a_space(wndw)) + int ret = nvif_chan_wait(&wndw->wimm, 1); + if (ret == 0) nvif_wr32(&wndw->wimm.base.user, 0x0080, 0x00000000); + return ret; } static int diff --git a/drivers/gpu/drm/nouveau/dispnv50/cursc37a.c b/drivers/gpu/drm/nouveau/dispnv50/cursc37a.c index 45c1c33e950a..9d96a246b39a 100644 --- a/drivers/gpu/drm/nouveau/dispnv50/cursc37a.c +++ b/drivers/gpu/drm/nouveau/dispnv50/cursc37a.c @@ -22,11 +22,13 @@ #include "curs.h" #include "atom.h" -static void +static int cursc37a_update(struct nv50_wndw *wndw, u32 *interlock) { - if (curs507a_space(wndw)) + int ret = nvif_chan_wait(&wndw->wimm, 1); + if (ret == 0) nvif_wr32(&wndw->wimm.base.user, 0x0200, 0x00000001); + return ret; } static int diff --git a/drivers/gpu/drm/nouveau/dispnv50/wimmc37b.c b/drivers/gpu/drm/nouveau/dispnv50/wimmc37b.c index 4eb5abfb8ebf..c2009d477736 100644 --- a/drivers/gpu/drm/nouveau/dispnv50/wimmc37b.c +++ b/drivers/gpu/drm/nouveau/dispnv50/wimmc37b.c @@ -26,18 +26,19 @@ #include <nvif/clc37b.h> #include <nvif/pushc37b.h> -static void +static int wimmc37b_update(struct nv50_wndw *wndw, u32 *interlock) { - u32 *push; - if ((push = evo_wait(&wndw->wimm, 2))) { - evo_mthd(push, 0x0200, 1); - if (interlock[NV50_DISP_INTERLOCK_WNDW] & wndw->interlock.data) - evo_data(push, 0x00000003); - else - evo_data(push, 0x00000001); - evo_kick(push, &wndw->wimm); - } + struct nvif_push *push = wndw->wimm.push; + int ret; + + if ((ret = PUSH_WAIT(push, 2))) + return ret; + + PUSH_NVSQ(push, NVC37B, 0x0200, ((interlock[NV50_DISP_INTERLOCK_WNDW] & + wndw->interlock.data) ? 0x00000002 : 0x00000000) | + 0x00000001); + return PUSH_KICK(push); } static int diff --git a/drivers/gpu/drm/nouveau/dispnv50/wndw.h b/drivers/gpu/drm/nouveau/dispnv50/wndw.h index 53e496bfbc9d..ce1b2baf9d19 100644 --- a/drivers/gpu/drm/nouveau/dispnv50/wndw.h +++ b/drivers/gpu/drm/nouveau/dispnv50/wndw.h @@ -93,7 +93,7 @@ void base907c_csc(struct nv50_wndw *, struct nv50_wndw_atom *, struct nv50_wimm_func { int (*point)(struct nv50_wndw *, struct nv50_wndw_atom *); - void (*update)(struct nv50_wndw *, u32 *interlock); + int (*update)(struct nv50_wndw *, u32 *interlock); }; extern const struct nv50_wimm_func curs507a; |