How to handle disconnection of eDP panels due to dynamic display mux switches

Lukas Wunner lukas at wunner.de
Thu Apr 2 18:25:04 UTC 2020


On Thu, Apr 02, 2020 at 12:56:04PM -0500, Daniel Dadap wrote:
> I'll check one of the eDP-based systems I've been experimenting on to see if
> setting the VGA_SWITCHER_NEEDS_EDP_CONFIG capability in the handler is
> sufficient to make i915 avoid poking the AUX channel when it's mux-switched
> away.

That will not be sufficient I'm afraid.  The capability was added in
preparation for taking advantage of pre-calibration by the active GPU
as permitted by the DP spec, but that feature only ever existed in the
experimental patches I linked to and which I never got around to
completing (so far).

BTW, if the inactive GPU sets up the eDP output with the precalibrated
values and the mux is switched without using the PSR trick you've
mentioned, will the transition be glitchy?

If so, is there a chance to switch the mux in a vblank to avoid glitches?


> (This would be in addition to hacking the can_switch() callback in the
> GPU drivers to allow switching while there are still active KMS clients for
> the purposes of this experiment, unless somebody can point me to a tree with
> the WIP per-output switching Daniel Vetter mentioned.

I'm not aware anyone ever bothered implementing per-output switching.
Which hardware supports that anyway?  I documented the situation on
the MacBook Pro in apple-gmux.c:

 * The external DP port is only fully switchable on the first two unibody
 * MacBook Pro generations, MBP5 2008/09 and MBP6 2010.
 * The following MacBook Pro generations replaced the external DP port with a
 * combined DP/Thunderbolt port and lost the ability to switch it between GPUs,
 * connecting it either to the discrete GPU or the Thunderbolt controller.
	
So only very old machines can switch the external DP port separately.
We just switch it in unison with the LVDS panel on those machines for
simplicity.

I'm not aware of other contemporary machines besides MacBook Pros
which allow switching the panel at runtime, let alone switch
external ports separately.  Are you at liberty to divulge what
hardware you're working on?  Just curious.

Thanks,

Lukas


More information about the dri-devel mailing list