[REGRESSION] i915: No HDMI output with 4.4

Oleksandr Natalenko oleksandr at natalenko.name
Fri Feb 12 07:52:03 UTC 2016


Ville,

I've applied patch you've provided and did couple of replugging with 
intel_reg in between. Here are the results.

I used additional VGA cable to see what actually I type in console :).

Both HDMI and VGA cables plugged: [1]
Both HDMI and VGA cables unplugged: [2]
Only HDMI cable plugged: [3]
Only VGA cable plugged: [4]

And here goes dmesg with all the stuff logged: [5]

Hope this helps.

[1] https://gist.github.com/58a0eb50dcf84e104555
[2] https://gist.github.com/7e8749a3e2cc58ea8aac
[3] https://gist.github.com/9d76930da7380634b845
[4] https://gist.github.com/c0d2e2f64242ad4f01f2
[5] https://gist.github.com/fda3b9fed3ca4d31cd20

11.02.2016 16:01, Ville Syrjälä wrote:
> OK, so the hpd interrupt does happen, and yet the live status 
> supposedly
> claims that nothing is there. Port C live status definitely works here
> on my IVB, so not sure what the deal is.
> 
> Can you grab intel-gpu-tools and run
> intel_reg read 0xc4000 0xc4004 0xc4008 0xc400c 0xc4030
> a couple of times after plugging the monitor in, and also run it when
> nothing is plugged in.
> 
> Also you could try something like the following patch so we might
> observe the live status with a bit more detail. Though the fact that it
> doesn't seem to work for you even when the monitor was already plugged
> in is somewhat troubling:
> 
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -1392,12 +1392,17 @@ intel_hdmi_detect(struct drm_connector
> *connector, bool force)
> 
>  	intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS);
> 
> -	for (try = 0; !live_status && try < 9; try++) {
> -		if (try)
> -			msleep(10);
> -		live_status = intel_digital_port_connected(dev_priv,
> +	printk("port %c live status\n ",
> port_name(hdmi_to_dig_port(intel_hdmi)->port));
> +	for (try = 0; try < 250; try++) {
> +		bool status = intel_digital_port_connected(dev_priv,
>  				hdmi_to_dig_port(intel_hdmi));
> +		live_status |= status;
> +		printk("%c", status ? '#' : '_');
> +		if (try % 50 == 49)
> +			printk("\n ");
> +		usleep_range(1000, 1000);
>  	}
> +	printk("\n");
> 
>  	if (!live_status)
>  		DRM_DEBUG_KMS("Live status not up!");
> --
> 2.4.10
> 
> Oh, and if you have another cable you can try, might be a good idea to
> see if it behaves any better.
> 


More information about the dri-devel mailing list