[Intel-gfx] A wrong DDI encoder override from HDMI to DP at hotplug

Ville Syrjälä ville.syrjala at linux.intel.com
Wed Nov 18 07:38:03 PST 2015


On Wed, Nov 18, 2015 at 04:23:06PM +0100, Takashi Iwai wrote:
> Hi,
> 
> currently a DDI port may register both DP and HDMI and it shares the
> same encoder.  The bug we've got a report is about this encoder type:
> namely, a machine using DDI port D for HDMI is screwed up because the
> encoder is switched to DP suddently.  The details are found in:
>   http://bugzilla.opensuse.org/show_bug.cgi?id=955190
> 
> The problem happens in intel_dp_hpd_pulse().  Since the machine
> declares both DP and HDMI, the driver registers this callback.  And at
> a hotplug event, the function changes the encoder type like:
> 
> 	if (intel_dig_port->base.type != INTEL_OUTPUT_EDP)
> 		intel_dig_port->base.type = INTEL_OUTPUT_DISPLAYPORT;
> 
> After this point, the encoder is handled as DP although the same HDMI
> monitor is connected.
> 
> Changing this to exclude INTEL_OUTPUT_HDMI makes the thing working in
> the bug report above, but I'm not sure what's the right fix.
> 
> Any suggestions?

This has been causing all sorts of troubles for years. I've suggested
several times that we should just split the encoder into two, like we
have for older platforms, but no one has taken the bait thus far.

This particular piece of code to change the encoder type in the
hpd_pulse hook came about with the mst code drop from Dave IIRC. At
least I never figured out what it's trying to do since -ENOCOMMENT.

-- 
Ville Syrjälä
Intel OTC


More information about the Intel-gfx mailing list