summaryrefslogtreecommitdiffstats
path: root/0001-disp-hda-gf119-add-HAL-for-programming-device-entry-.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-disp-hda-gf119-add-HAL-for-programming-device-entry-.patch')
-rw-r--r--0001-disp-hda-gf119-add-HAL-for-programming-device-entry-.patch146
1 files changed, 146 insertions, 0 deletions
diff --git a/0001-disp-hda-gf119-add-HAL-for-programming-device-entry-.patch b/0001-disp-hda-gf119-add-HAL-for-programming-device-entry-.patch
new file mode 100644
index 000000000..cba6699dc
--- /dev/null
+++ b/0001-disp-hda-gf119-add-HAL-for-programming-device-entry-.patch
@@ -0,0 +1,146 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Ben Skeggs <bskeggs@redhat.com>
+Date: Wed, 6 May 2020 14:40:56 +1000
+Subject: [PATCH] disp/hda/gf119-: add HAL for programming device entry in SF
+
+Register has moved on GV100.
+
+Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+---
+ drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c | 11 +++++++++--
+ drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h | 2 ++
+ drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c | 1 +
+ drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c | 1 +
+ drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c | 1 +
+ drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c | 1 +
+ drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c | 1 +
+ drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c | 1 +
+ 8 files changed, 17 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c
+index 1080ba6ecd64..8a0ec7db5145 100644
+--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c
++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/hdagf119.c
+@@ -23,6 +23,14 @@
+ */
+ #include "ior.h"
+
++void
++gf119_hda_device_entry(struct nvkm_ior *ior, int head)
++{
++ struct nvkm_device *device = ior->disp->engine.subdev.device;
++ const u32 hoff = 0x800 * head;
++ nvkm_mask(device, 0x616548 + hoff, 0x00000070, 0x00000000);
++}
++
+ void
+ gf119_hda_eld(struct nvkm_ior *ior, int head, u8 *data, u8 size)
+ {
+@@ -41,11 +49,10 @@ void
+ gf119_hda_hpd(struct nvkm_ior *ior, int head, bool present)
+ {
+ struct nvkm_device *device = ior->disp->engine.subdev.device;
+- const u32 hoff = 0x800 * head;
+ u32 data = 0x80000000;
+ u32 mask = 0x80000001;
+ if (present) {
+- nvkm_mask(device, 0x616548 + hoff, 0x00000070, 0x00000000);
++ ior->func->hda.device_entry(ior, head);
+ data |= 0x00000001;
+ } else {
+ mask |= 0x00000002;
+diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h
+index c60acf71831e..eb1155e47ecd 100644
+--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h
++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h
+@@ -88,6 +88,7 @@ struct nvkm_ior_func {
+ struct {
+ void (*hpd)(struct nvkm_ior *, int head, bool present);
+ void (*eld)(struct nvkm_ior *, int head, u8 *data, u8 size);
++ void (*device_entry)(struct nvkm_ior *, int head);
+ } hda;
+ };
+
+@@ -162,6 +163,7 @@ void gt215_hda_eld(struct nvkm_ior *, int, u8 *, u8);
+
+ void gf119_hda_hpd(struct nvkm_ior *, int, bool);
+ void gf119_hda_eld(struct nvkm_ior *, int, u8 *, u8);
++void gf119_hda_device_entry(struct nvkm_ior *, int);
+
+ #define IOR_MSG(i,l,f,a...) do { \
+ struct nvkm_ior *_ior = (i); \
+diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
+index 456a5a143522..3b3643fb1019 100644
+--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
+@@ -177,6 +177,7 @@ gf119_sor = {
+ .hda = {
+ .hpd = gf119_hda_hpd,
+ .eld = gf119_hda_eld,
++ .device_entry = gf119_hda_device_entry,
+ },
+ };
+
+diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c
+index b94090edaebf..0c0925680790 100644
+--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c
++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgk104.c
+@@ -43,6 +43,7 @@ gk104_sor = {
+ .hda = {
+ .hpd = gf119_hda_hpd,
+ .eld = gf119_hda_eld,
++ .device_entry = gf119_hda_device_entry,
+ },
+ };
+
+diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c
+index e6965dec09c9..38045c92197f 100644
+--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c
++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c
+@@ -57,6 +57,7 @@ gm107_sor = {
+ .hda = {
+ .hpd = gf119_hda_hpd,
+ .eld = gf119_hda_eld,
++ .device_entry = gf119_hda_device_entry,
+ },
+ };
+
+diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c
+index 384f82652bec..cf2075db742a 100644
+--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c
++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c
+@@ -115,6 +115,7 @@ gm200_sor = {
+ .hda = {
+ .hpd = gf119_hda_hpd,
+ .eld = gf119_hda_eld,
++ .device_entry = gf119_hda_device_entry,
+ },
+ };
+
+diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c
+index b0597ff9a714..565cfbc65550 100644
+--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c
++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgv100.c
+@@ -103,6 +103,7 @@ gv100_sor = {
+ .hda = {
+ .hpd = gf119_hda_hpd,
+ .eld = gf119_hda_eld,
++ .device_entry = gf119_hda_device_entry,
+ },
+ };
+
+diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c
+index 4d5f3791ea7b..b16ecea098c7 100644
+--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c
++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sortu102.c
+@@ -88,6 +88,7 @@ tu102_sor = {
+ .hda = {
+ .hpd = gf119_hda_hpd,
+ .eld = gf119_hda_eld,
++ .device_entry = gf119_hda_device_entry,
+ },
+ };
+
+--
+2.26.2
+