RadeonHD: Prefer edid over LVDS_Info
* Some oem sbios implementations are buggy and don't overwrite the LVDS panel info over LVDS_Info in vbios as they should. * Bit-bang EDID info from LVDS connector before falling back to the LVDS_Info table. * Partially fixes #8457
This commit is contained in:
@@ -270,12 +270,13 @@ detect_displays()
|
||||
edid1_info* edid = &gDisplay[displayIndex]->edidData;
|
||||
gDisplay[displayIndex]->attached
|
||||
= ddc2_dp_read_edid1(id, edid);
|
||||
|
||||
|
||||
if (gDisplay[displayIndex]->attached) {
|
||||
TRACE("%s: connector(%" B_PRIu32 "): Found DisplayPort EDID!\n",
|
||||
__func__);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Handle external DP brides - ??
|
||||
#if 0
|
||||
if (gConnector[id]->encoderExternal.isDPBridge == true) {
|
||||
@@ -289,16 +290,6 @@ detect_displays()
|
||||
// TODO: DDC Router switching for DisplayPort (and others?)
|
||||
}
|
||||
#endif
|
||||
if (gConnector[id]->type == VIDEO_CONNECTOR_LVDS) {
|
||||
// If plain (non-DP) laptop LVDS, read mode info from AtomBIOS
|
||||
//TRACE("%s: non-DP laptop LVDS detected\n", __func__);
|
||||
gDisplay[displayIndex]->attached = connector_read_mode_lvds(id,
|
||||
&gDisplay[displayIndex]->preferredMode);
|
||||
if (gDisplay[displayIndex]->attached) {
|
||||
TRACE("%s: connector(%" B_PRIu32 "): found LVDS preferred "
|
||||
"mode\n", __func__, id);
|
||||
}
|
||||
}
|
||||
|
||||
// If no display found yet, try more standard detection methods
|
||||
if (gDisplay[displayIndex]->attached == false) {
|
||||
@@ -343,6 +334,17 @@ detect_displays()
|
||||
}
|
||||
}
|
||||
|
||||
// If we haven't found EDID yet and LVDS, check LVDS_Info table
|
||||
if (gDisplay[displayIndex]->attached == false
|
||||
&& gConnector[id]->type == VIDEO_CONNECTOR_LVDS) {
|
||||
gDisplay[displayIndex]->attached = connector_read_mode_lvds(id,
|
||||
&gDisplay[displayIndex]->preferredMode);
|
||||
if (gDisplay[displayIndex]->attached) {
|
||||
TRACE("%s: connector(%" B_PRIu32 "): using AtomBIOS LVDS_Info "
|
||||
"preferred mode\n", __func__, id);
|
||||
}
|
||||
}
|
||||
|
||||
if (gDisplay[displayIndex]->attached != true) {
|
||||
// Nothing interesting here, move along
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user