Commit f56cd64f authored by Alex Deucher's avatar Alex Deucher Committed by Dave Airlie

drm/radeon/kms: never combine LVDS with another encoder

When linking multiple encoders to a connector, make sure
to not link LVDS with another connector.  Some bioses
have the same i2c line for LVDS and VGA.
Signed-off-by: default avatarAlex Deucher <alexdeucher@gmail.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 36421338
...@@ -745,8 +745,7 @@ bool radeon_get_atom_connector_info_from_supported_devices_table(struct ...@@ -745,8 +745,7 @@ bool radeon_get_atom_connector_info_from_supported_devices_table(struct
else else
radeon_add_legacy_encoder(dev, radeon_add_legacy_encoder(dev,
radeon_get_encoder_id(dev, radeon_get_encoder_id(dev,
(1 << (1 << i),
i),
dac), dac),
(1 << i)); (1 << i));
} }
...@@ -758,32 +757,30 @@ bool radeon_get_atom_connector_info_from_supported_devices_table(struct ...@@ -758,32 +757,30 @@ bool radeon_get_atom_connector_info_from_supported_devices_table(struct
if (bios_connectors[j].valid && (i != j)) { if (bios_connectors[j].valid && (i != j)) {
if (bios_connectors[i].line_mux == if (bios_connectors[i].line_mux ==
bios_connectors[j].line_mux) { bios_connectors[j].line_mux) {
if (((bios_connectors[i]. /* make sure not to combine LVDS */
devices & if (bios_connectors[i].devices & (ATOM_DEVICE_LCD_SUPPORT)) {
(ATOM_DEVICE_DFP_SUPPORT)) bios_connectors[i].line_mux = 53;
&& (bios_connectors[j]. bios_connectors[i].ddc_bus.valid = false;
devices & continue;
(ATOM_DEVICE_CRT_SUPPORT))) }
|| if (bios_connectors[j].devices & (ATOM_DEVICE_LCD_SUPPORT)) {
((bios_connectors[j]. bios_connectors[j].line_mux = 53;
devices & bios_connectors[j].ddc_bus.valid = false;
(ATOM_DEVICE_DFP_SUPPORT)) continue;
&& (bios_connectors[i]. }
devices & /* combine analog and digital for DVI-I */
(ATOM_DEVICE_CRT_SUPPORT)))) { if (((bios_connectors[i].devices & (ATOM_DEVICE_DFP_SUPPORT)) &&
bios_connectors[i]. (bios_connectors[j].devices & (ATOM_DEVICE_CRT_SUPPORT))) ||
devices |= ((bios_connectors[j].devices & (ATOM_DEVICE_DFP_SUPPORT)) &&
bios_connectors[j]. (bios_connectors[i].devices & (ATOM_DEVICE_CRT_SUPPORT)))) {
devices; bios_connectors[i].devices |=
bios_connectors[i]. bios_connectors[j].devices;
connector_type = bios_connectors[i].connector_type =
DRM_MODE_CONNECTOR_DVII; DRM_MODE_CONNECTOR_DVII;
if (bios_connectors[j].devices & if (bios_connectors[j].devices & (ATOM_DEVICE_DFP_SUPPORT))
(ATOM_DEVICE_DFP_SUPPORT))
bios_connectors[i].hpd = bios_connectors[i].hpd =
bios_connectors[j].hpd; bios_connectors[j].hpd;
bios_connectors[j]. bios_connectors[j].valid = false;
valid = false;
} }
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment