drm/i915: Extend hotplug detect retry on TypeC connectors to 5 seconds
On TypeC ports if a sink deasserts/reasserts its HPD signal, generating a hotplug interrupt without the sink getting unplugged/replugged from the connector, there can be an up to 3 seconds delay until the AUX channel gets functional. To avoid detection failures this delay causes retry the detection for 5 seconds. I noticed this on ICL/TGL RVPs and a DELL XPS 13 7390 ICL laptop. References: https://gitlab.freedesktop.org/drm/intel/issues/1067 Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: José Roberto de Souza <jose.souza@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200330095425.29113-2-imre.deak@intel.comalistair/sunxi64-5.8
parent
8c8919c7c9
commit
b4df5405f3
|
@ -4520,7 +4520,10 @@ static enum intel_hotplug_state
|
|||
intel_ddi_hotplug(struct intel_encoder *encoder,
|
||||
struct intel_connector *connector)
|
||||
{
|
||||
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
|
||||
struct intel_digital_port *dig_port = enc_to_dig_port(encoder);
|
||||
enum phy phy = intel_port_to_phy(i915, encoder->port);
|
||||
bool is_tc = intel_phy_is_tc(i915, phy);
|
||||
struct drm_modeset_acquire_ctx ctx;
|
||||
enum intel_hotplug_state state;
|
||||
int ret;
|
||||
|
@ -4563,8 +4566,15 @@ intel_ddi_hotplug(struct intel_encoder *encoder,
|
|||
* valid EDID. To solve this schedule another detection cycle if this
|
||||
* time around we didn't detect any change in the sink's connection
|
||||
* status.
|
||||
*
|
||||
* Type-c connectors which get their HPD signal deasserted then
|
||||
* reasserted, without unplugging/replugging the sink from the
|
||||
* connector, introduce a delay until the AUX channel communication
|
||||
* becomes functional. Retry the detection for 5 seconds on type-c
|
||||
* connectors to account for this delay.
|
||||
*/
|
||||
if (state == INTEL_HOTPLUG_UNCHANGED && !connector->hotplug_retries &&
|
||||
if (state == INTEL_HOTPLUG_UNCHANGED &&
|
||||
connector->hotplug_retries < (is_tc ? 5 : 1) &&
|
||||
!dig_port->dp.is_mst)
|
||||
state = INTEL_HOTPLUG_RETRY;
|
||||
|
||||
|
|
Loading…
Reference in New Issue