diff options
Diffstat (limited to 'nouveau-displayoff-fix.patch')
-rw-r--r-- | nouveau-displayoff-fix.patch | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/nouveau-displayoff-fix.patch b/nouveau-displayoff-fix.patch deleted file mode 100644 index 32045d3c8..000000000 --- a/nouveau-displayoff-fix.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 95664e66fad964c3dd7945d6edfb1d0931844664 Mon Sep 17 00:00:00 2001 -From: Ben Skeggs <bskeggs@redhat.com> -Date: Thu, 18 Feb 2016 08:14:19 +1000 -Subject: drm/nouveau/disp/dp: ensure sink is powered up before attempting link - training - -This can happen under some annoying circumstances, and is a quick fix -until more substantial changes can be made. - -Fixed eDP mode changes on (at least) the Lenovo P50. - -Signed-off-by: Ben Skeggs <bskeggs@redhat.com> -Cc: stable@vger.kernel.org - -diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/dport.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/dport.c -index 74e2f7c..9688970 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/dport.c -+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/dport.c -@@ -328,6 +328,7 @@ nvkm_dp_train(struct work_struct *w) - .outp = outp, - }, *dp = &_dp; - u32 datarate = 0; -+ u8 pwr; - int ret; - - if (!outp->base.info.location && disp->func->sor.magic) -@@ -355,6 +356,15 @@ nvkm_dp_train(struct work_struct *w) - /* disable link interrupt handling during link training */ - nvkm_notify_put(&outp->irq); - -+ /* ensure sink is not in a low-power state */ -+ if (!nvkm_rdaux(outp->aux, DPCD_SC00, &pwr, 1)) { -+ if ((pwr & DPCD_SC00_SET_POWER) != DPCD_SC00_SET_POWER_D0) { -+ pwr &= ~DPCD_SC00_SET_POWER; -+ pwr |= DPCD_SC00_SET_POWER_D0; -+ nvkm_wraux(outp->aux, DPCD_SC00, &pwr, 1); -+ } -+ } -+ - /* enable down-spreading and execute pre-train script from vbios */ - dp_link_train_init(dp, outp->dpcd[3] & 0x01); - -diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/dport.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/dport.h -index 9596290..6e10c5e 100644 ---- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/dport.h -+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/dport.h -@@ -71,5 +71,11 @@ - #define DPCD_LS0C_LANE1_POST_CURSOR2 0x0c - #define DPCD_LS0C_LANE0_POST_CURSOR2 0x03 - -+/* DPCD Sink Control */ -+#define DPCD_SC00 0x00600 -+#define DPCD_SC00_SET_POWER 0x03 -+#define DPCD_SC00_SET_POWER_D0 0x01 -+#define DPCD_SC00_SET_POWER_D3 0x03 -+ - void nvkm_dp_train(struct work_struct *); - #endif --- -cgit v0.10.2 - |