diff options
author | Thorsten Leemhuis <fedora@leemhuis.info> | 2020-05-29 19:50:14 +0200 |
---|---|---|
committer | Thorsten Leemhuis <fedora@leemhuis.info> | 2020-05-29 19:50:14 +0200 |
commit | 59adb3dc6384af48c3b97589c8d887c87689e0e4 (patch) | |
tree | c0fb7c5ecc5260b57173619973336989e0b8a256 /0001-kms-gv100-Add-support-for-interlaced-modes.patch | |
parent | d48a756e71e269ecef24682ba38b6b49ed2a6abe (diff) | |
parent | 42bbfcc428758569177d4e644fddfb5ed46c57a5 (diff) | |
download | kernel-59adb3dc6384af48c3b97589c8d887c87689e0e4.tar.gz kernel-59adb3dc6384af48c3b97589c8d887c87689e0e4.tar.xz kernel-59adb3dc6384af48c3b97589c8d887c87689e0e4.zip |
Merge remote-tracking branch 'origin/master' into rawhide-user-thl-vanilla-fedorakernel-5.7.0-0.rc7.20200529gitb0c3ba31be3e.1.vanilla.1.fc32
Diffstat (limited to '0001-kms-gv100-Add-support-for-interlaced-modes.patch')
-rw-r--r-- | 0001-kms-gv100-Add-support-for-interlaced-modes.patch | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/0001-kms-gv100-Add-support-for-interlaced-modes.patch b/0001-kms-gv100-Add-support-for-interlaced-modes.patch new file mode 100644 index 000000000..c50c826b8 --- /dev/null +++ b/0001-kms-gv100-Add-support-for-interlaced-modes.patch @@ -0,0 +1,64 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Lyude Paul <lyude@redhat.com> +Date: Mon, 11 May 2020 18:41:25 -0400 +Subject: [PATCH] kms/gv100-: Add support for interlaced modes + +We advertise being able to set interlaced modes, so let's actually make +sure to do that. Otherwise, we'll end up hanging the display engine due +to trying to set a mode with timings adjusted for interlacing without +telling the hardware it's actually an interlaced mode. + +Signed-off-by: Lyude Paul <lyude@redhat.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/dispnv50/headc37d.c | 5 +++-- + drivers/gpu/drm/nouveau/dispnv50/headc57d.c | 5 +++-- + 2 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/dispnv50/headc37d.c b/drivers/gpu/drm/nouveau/dispnv50/headc37d.c +index 00011ce109a6..4a9a32b89f74 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/headc37d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/headc37d.c +@@ -168,14 +168,15 @@ headc37d_mode(struct nv50_head *head, struct nv50_head_atom *asyh) + struct nv50_dmac *core = &nv50_disp(head->base.base.dev)->core->chan; + struct nv50_head_mode *m = &asyh->mode; + u32 *push; +- if ((push = evo_wait(core, 12))) { ++ if ((push = evo_wait(core, 13))) { + evo_mthd(push, 0x2064 + (head->base.index * 0x400), 5); + evo_data(push, (m->v.active << 16) | m->h.active ); + evo_data(push, (m->v.synce << 16) | m->h.synce ); + evo_data(push, (m->v.blanke << 16) | m->h.blanke ); + evo_data(push, (m->v.blanks << 16) | m->h.blanks ); + evo_data(push, (m->v.blank2e << 16) | m->v.blank2s); +- evo_mthd(push, 0x200c + (head->base.index * 0x400), 1); ++ evo_mthd(push, 0x2008 + (head->base.index * 0x400), 2); ++ evo_data(push, m->interlace); + evo_data(push, m->clock * 1000); + evo_mthd(push, 0x2028 + (head->base.index * 0x400), 1); + evo_data(push, m->clock * 1000); +diff --git a/drivers/gpu/drm/nouveau/dispnv50/headc57d.c b/drivers/gpu/drm/nouveau/dispnv50/headc57d.c +index 938d910a1b1e..859131a8bc3c 100644 +--- a/drivers/gpu/drm/nouveau/dispnv50/headc57d.c ++++ b/drivers/gpu/drm/nouveau/dispnv50/headc57d.c +@@ -173,14 +173,15 @@ headc57d_mode(struct nv50_head *head, struct nv50_head_atom *asyh) + struct nv50_dmac *core = &nv50_disp(head->base.base.dev)->core->chan; + struct nv50_head_mode *m = &asyh->mode; + u32 *push; +- if ((push = evo_wait(core, 12))) { ++ if ((push = evo_wait(core, 13))) { + evo_mthd(push, 0x2064 + (head->base.index * 0x400), 5); + evo_data(push, (m->v.active << 16) | m->h.active ); + evo_data(push, (m->v.synce << 16) | m->h.synce ); + evo_data(push, (m->v.blanke << 16) | m->h.blanke ); + evo_data(push, (m->v.blanks << 16) | m->h.blanks ); + evo_data(push, (m->v.blank2e << 16) | m->v.blank2s); +- evo_mthd(push, 0x200c + (head->base.index * 0x400), 1); ++ evo_mthd(push, 0x2008 + (head->base.index * 0x400), 2); ++ evo_data(push, m->interlace); + evo_data(push, m->clock * 1000); + evo_mthd(push, 0x2028 + (head->base.index * 0x400), 1); + evo_data(push, m->clock * 1000); +-- +2.26.2 + |