On Fri, Feb 12, 2016 at 09:52:03AM +0200, Oleksandr Natalenko wrote: > 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 :). > My life would have been a bit easier if you had included the reg dumps in the mail. Copy paste manually this time. > Both HDMI and VGA cables plugged: [1] (0x000c4000): 0x00080000 (0x000c4004): 0xf1b5ffff (0x000c4008): 0x00000000 (0x000c400c): 0xffffffff (0x000c4030): 0x00101010 > Both HDMI and VGA cables unplugged: [2] (0x000c4000): 0x00000000 (0x000c4004): 0xf1b5ffff (0x000c4008): 0x00000000 (0x000c400c): 0xffffffff (0x000c4030): 0x00101010 > Only HDMI cable plugged: [3] (0x000c4000): 0x00000000 (0x000c4004): 0xf1b5ffff (0x000c4008): 0x00000000 (0x000c400c): 0xffffffff (0x000c4030): 0x00101010 > Only VGA cable plugged: [4] (0x000c4000): 0x00080000 (0x000c4004): 0xf1b4ffff (0x000c4008): 0x00000000 (0x000c400c): 0xffffffff (0x000c4030): 0x00101010 What these show is that the live status for the digital ports never goes to 1, which is rather wtf. VGA gets reported correctly. Everything else looks normal to me. > And here goes dmesg with all the stuff logged: [5] лют 12 09:37:01 pfactum.lanet kernel: port C live status __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ Same deal here. The live status never indicates anything being present during the 250ms that we poll it. Few other ideas: - Was the monitor sleeping when you tried this? Can you maybe push some button on it and then immediately run the intel_reg read command again? - Do you have another monitor to try? - Do you have another cable to try? - Maybe the pullup/down on the hpd line is misconfigured or something. Any chance of updating the BIOS on the machine? - What does 'intel_reg read 0xc2000 0xc2004 0xc2020' say? - The spec claims the TMDS vs. SDVO select has something to do with hpd generation. I can't see any difference on my IVB though, so not sure it's really true. What does 'intel_reg read 0xe1140 0xe1150 0xe1160' tell us? Let's try these anyway (with the cable plugged in): intel_reg write 0xe1140 0x0 intel_reg write 0xe1150 0x0 intel_reg write 0xe1160 0x0 sleep 1 intel_reg read 0xc4000 intel_reg write 0xe1140 0x800 intel_reg write 0xe1150 0x800 intel_reg write 0xe1160 0x800 sleep 1 intel_reg read 0xc4000 intel_reg write 0xe1140 0x800800 intel_reg write 0xe1150 0x800800 intel_reg write 0xe1160 0x800800 sleep 1 intel_reg read 0xc4000 intel_reg write 0xe1140 0x800000 intel_reg write 0xe1150 0x800000 intel_reg write 0xe1160 0x800000 sleep 1 intel_reg read 0xc4000 > > 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. > > -- Ville Syrjälä Intel OTC _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel