[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