Patch "drm/nouveau/disp/dp: ensure sink is powered up before attempting link training" has been added to the 4.4-stable tree
Subsystems (4)
This is a note to let you know that I've just added the patch titled
drm/nouveau/disp/dp: ensure sink is powered up before attempting link training
to the 4.4-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-dp-ensure-sink-is-powered-up-before-attempting-link-training.patch
and it can be found in the queue-4.4 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
95664e66fad964c3dd7945d6edfb1d0931844664Mon Sep 17 00:00:00 2001
From: Ben Skeggs <[email protected]>
Date: Thu, 18 Feb 2016 08:14:19 +1000
Subject: drm/nouveau/disp/dp: ensure sink is powered up before attempting link training
From: Ben Skeggs <[email protected]>
commit 95664e66fad964c3dd7945d6edfb1d0931844664 upstream.
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.
--- drivers/gpu/drm/nouveau/nvkm/engine/disp/dport.c | 10 ++++++++++ drivers/gpu/drm/nouveau/nvkm/engine/disp/dport.h | 6 ++++++ 2 files changed, 16 insertions(+)
drivers/gpu/drm/nouveau/nvkm/engine/disp/dport.c +10 -0
@@ -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 );
drivers/gpu/drm/nouveau/nvkm/engine/disp/dport.h +6 -0
@@ -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
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/drm-nouveau-platform-fix-deferred-probe.patch queue-4.4/drm-nouveau-kms-take-mode_config-mutex-in-connector-hotplug-path.patch queue-4.4/drm-nouveau-display-enable-vblank-irqs-after-display-engine-is-on-again.patch queue-4.4/drm-nouveau-disp-dp-ensure-sink-is-powered-up-before-attempting-link-training.patch