[Nouveau] [Bug 37669] [NVAC] problem when unplugging DP-1
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Thu Dec 15 07:47:52 PST 2011
https://bugs.freedesktop.org/show_bug.cgi?id=37669
--- Comment #5 from Antoine Reversat <a.reversat at gmail.com> 2011-12-15 07:47:52 PST ---
So I've gotten a bit further.
I tracked down the code that triggers the issue : it's this part of nv50_sor.c
:
if (!nv_wait(dev, NV50_PDISPLAY_SOR_DPMS_CTRL(or),
NV50_PDISPLAY_SOR_DPMS_CTRL_PENDING, 0)) {
NV_ERROR(dev, "timeout: SOR_DPMS_CTRL_PENDING(%d) == 0\n", or);
NV_ERROR(dev, "SOR_DPMS_CTRL(%d) = 0x%08x\n", or,
nv_rd32(dev, NV50_PDISPLAY_SOR_DPMS_CTRL(or)));
}
val = nv_rd32(dev, NV50_PDISPLAY_SOR_DPMS_CTRL(or));
if (mode == DRM_MODE_DPMS_ON)
val |= NV50_PDISPLAY_SOR_DPMS_CTRL_ON;
else
val &= ~NV50_PDISPLAY_SOR_DPMS_CTRL_ON;
nv_wr32(dev, NV50_PDISPLAY_SOR_DPMS_CTRL(or), val |
NV50_PDISPLAY_SOR_DPMS_CTRL_PENDING);
if (!nv_wait(dev, NV50_PDISPLAY_SOR_DPMS_STATE(or),
NV50_PDISPLAY_SOR_DPMS_STATE_WAIT, 0)) {
NV_ERROR(dev, "timeout: SOR_DPMS_STATE_WAIT(%d) == 0\n", or);
NV_ERROR(dev, "SOR_DPMS_STATE(%d) = 0x%08x\n", or,
nv_rd32(dev, NV50_PDISPLAY_SOR_DPMS_STATE(or)));
}
If I add an if to skip the code if the sor is going to DPMS off and the encoder
type is tmds then the bug doesn't happen anymore. I don't understand how this
affects sor0 (which the LVDS output is using) as the code seems pretty sane.
I also noted something and am not sure whether it's correct or not. My flat
panel is connected through a DP-DVI adapter but nv_encoder->dcb->type is
OUTPUT_TMDS not OUTPUT_DP. Is this due to the fact that it's "DVI over DP" ? Or
is this not normal ?
--
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the Nouveau
mailing list