Skip to contentSkip to conversation

Patch "drm/nouveau/disp/sor/gm107: training pattern registers are like gm200" has been added to the 4.6-stable tree

PATCH [email protected] 1 participant 1 message Jul 24, 2016

Subsystems (4)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

drm/nouveau/disp/sor/gm107: training pattern registers are like gm200

to the 4.6-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
drm-nouveau-disp-sor-gm107-training-pattern-registers-are-like-gm200.patch
and it can be found in the queue-4.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 4691409b3e2250ed66aa8dcefa23fe765daf7add Mon Sep 17 00:00:00 2001

From: Ben Skeggs <[email protected]>
Date: Fri, 3 Jun 2016 15:05:52 +1000
Subject: drm/nouveau/disp/sor/gm107: training pattern registers are like gm200

From: Ben Skeggs <[email protected]>

commit 4691409b3e2250ed66aa8dcefa23fe765daf7add upstream.

---
 drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild     |    1 
 drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c    |    2 
 drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h   |    9 ++-
 drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c |    2 
 drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c |   53 ++++++++++++++++++++
 drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c |   15 -----
 6 files changed, 64 insertions(+), 18 deletions(-)
drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild +1 -0
@@ -18,6 +18,7 @@ nvkm-y += nvkm/engine/disp/piornv50.o
 nvkm-y += nvkm/engine/disp/sornv50.o
 nvkm-y += nvkm/engine/disp/sorg94.o
 nvkm-y += nvkm/engine/disp/sorgf119.o
+nvkm-y += nvkm/engine/disp/sorgm107.o
 nvkm-y += nvkm/engine/disp/sorgm200.o
 nvkm-y += nvkm/engine/disp/dport.o
 
drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c +1 -1
@@ -36,7 +36,7 @@ gm107_disp = {
 	.outp.internal.crt = nv50_dac_output_new,
 	.outp.internal.tmds = nv50_sor_output_new,
 	.outp.internal.lvds = nv50_sor_output_new,
-	.outp.internal.dp = gf119_sor_dp_new,
+	.outp.internal.dp = gm107_sor_dp_new,
 	.dac.nr = 3,
 	.dac.power = nv50_dac_power,
 	.dac.sense = nv50_dac_sense,
drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h +7 -2
@@ -62,7 +62,12 @@ int g94_sor_dp_lnk_pwr(struct nvkm_outpu
 int gf119_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
 		     struct nvkm_output **);
 int gf119_sor_dp_lnk_ctl(struct nvkm_output_dp *, int, int, bool);
+int gf119_sor_dp_drv_ctl(struct nvkm_output_dp *, int, int, int, int);
 
-int  gm200_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
-		      struct nvkm_output **);
+int gm107_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
+		     struct nvkm_output **);
+int gm107_sor_dp_pattern(struct nvkm_output_dp *, int);
+
+int gm200_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
+		     struct nvkm_output **);
 #endif
drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c +1 -1
@@ -63,7 +63,7 @@ gf119_sor_dp_lnk_ctl(struct nvkm_output_
 	return 0;
 }
 
-static int
+int
 gf119_sor_dp_drv_ctl(struct nvkm_output_dp *outp,
 		     int ln, int vs, int pe, int pc)
 {
drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c new file +53 -0

53 lines not on this page · raw message

drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c +1 -14
@@ -57,19 +57,6 @@ gm200_sor_dp_lane_map(struct nvkm_device
 }
 
 static int
-gm200_sor_dp_pattern(struct nvkm_output_dp *outp, int pattern)
-{
-	struct nvkm_device *device = outp->base.disp->engine.subdev.device;
-	const u32 soff = gm200_sor_soff(outp);
-	const u32 data = 0x01010101 * pattern;
-	if (outp->base.info.sorconf.link & 1)
-		nvkm_mask(device, 0x61c110 + soff, 0x0f0f0f0f, data);
-	else
-		nvkm_mask(device, 0x61c12c + soff, 0x0f0f0f0f, data);
-	return 0;
-}
-
-static int
 gm200_sor_dp_lnk_pwr(struct nvkm_output_dp *outp, int nr)
 {
 	struct nvkm_device *device = outp->base.disp->engine.subdev.device;
@@ -129,7 +116,7 @@ gm200_sor_dp_drv_ctl(struct nvkm_output_
 
 static const struct nvkm_output_dp_func
 gm200_sor_dp_func = {
-	.pattern = gm200_sor_dp_pattern,
+	.pattern = gm107_sor_dp_pattern,
 	.lnk_pwr = gm200_sor_dp_lnk_pwr,
 	.lnk_ctl = gf119_sor_dp_lnk_ctl,
 	.drv_ctl = gm200_sor_dp_drv_ctl,

Patches currently in stable-queue which might be from [email protected] are

queue-4.6/drm-nouveau-fix-for-disabled-fbdev-emulation.patch queue-4.6/drm-nouveau-disp-sor-gf119-both-links-use-the-same-training-register.patch queue-4.6/drm-nouveau-gr-gf100-update-sm-error-decoding-from-gk20a-nvgpu-headers.patch queue-4.6/drm-nouveau-revert-drm-nouveau-device-pci-set-as-non-cpu-coherent-on-arm64.patch queue-4.6/drm-nouveau-bios-disp-fix-handling-of-match-any-protocol-entries.patch queue-4.6/drm-nouveau-disp-sor-gf119-select-correct-sor-when-poking-training-pattern.patch queue-4.6/drm-nouveau-disp-sor-gm107-training-pattern-registers-are-like-gm200.patch queue-4.6/drm-nouveau-fbcon-fix-out-of-bounds-memory-accesses.patch queue-4.6/drm-nouveau-ltc-gm107-fix-typo-in-the-address-of-nv_pltcg_ltc0_lts0_intr.patch