diff options
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_atombios.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c index 45bc750e9ae2..6317d2c9e6d9 100644 --- a/drivers/gpu/drm/radeon/radeon_atombios.c +++ b/drivers/gpu/drm/radeon/radeon_atombios.c | |||
@@ -313,7 +313,6 @@ static bool radeon_atom_apply_quirks(struct drm_device *dev, | |||
313 | uint16_t *line_mux, | 313 | uint16_t *line_mux, |
314 | struct radeon_hpd *hpd) | 314 | struct radeon_hpd *hpd) |
315 | { | 315 | { |
316 | struct radeon_device *rdev = dev->dev_private; | ||
317 | 316 | ||
318 | /* Asus M2A-VM HDMI board lists the DVI port as HDMI */ | 317 | /* Asus M2A-VM HDMI board lists the DVI port as HDMI */ |
319 | if ((dev->pdev->device == 0x791e) && | 318 | if ((dev->pdev->device == 0x791e) && |
@@ -425,21 +424,23 @@ static bool radeon_atom_apply_quirks(struct drm_device *dev, | |||
425 | } | 424 | } |
426 | } | 425 | } |
427 | 426 | ||
428 | /* Acer laptop reports DVI-D as DVI-I and hpd pins reversed */ | 427 | /* Acer laptop (Acer TravelMate 5730G) has an HDMI port |
428 | * on the laptop and a DVI port on the docking station and | ||
429 | * both share the same encoder, hpd pin, and ddc line. | ||
430 | * So while the bios table is technically correct, | ||
431 | * we drop the DVI port here since xrandr has no concept of | ||
432 | * encoders and will try and drive both connectors | ||
433 | * with different crtcs which isn't possible on the hardware | ||
434 | * side and leaves no crtcs for LVDS or VGA. | ||
435 | */ | ||
429 | if ((dev->pdev->device == 0x95c4) && | 436 | if ((dev->pdev->device == 0x95c4) && |
430 | (dev->pdev->subsystem_vendor == 0x1025) && | 437 | (dev->pdev->subsystem_vendor == 0x1025) && |
431 | (dev->pdev->subsystem_device == 0x013c)) { | 438 | (dev->pdev->subsystem_device == 0x013c)) { |
432 | struct radeon_gpio_rec gpio; | ||
433 | |||
434 | if ((*connector_type == DRM_MODE_CONNECTOR_DVII) && | 439 | if ((*connector_type == DRM_MODE_CONNECTOR_DVII) && |
435 | (supported_device == ATOM_DEVICE_DFP1_SUPPORT)) { | 440 | (supported_device == ATOM_DEVICE_DFP1_SUPPORT)) { |
436 | gpio = radeon_lookup_gpio(rdev, 6); | 441 | /* actually it's a DVI-D port not DVI-I */ |
437 | *hpd = radeon_atom_get_hpd_info_from_gpio(rdev, &gpio); | ||
438 | *connector_type = DRM_MODE_CONNECTOR_DVID; | 442 | *connector_type = DRM_MODE_CONNECTOR_DVID; |
439 | } else if ((*connector_type == DRM_MODE_CONNECTOR_HDMIA) && | 443 | return false; |
440 | (supported_device == ATOM_DEVICE_DFP1_SUPPORT)) { | ||
441 | gpio = radeon_lookup_gpio(rdev, 7); | ||
442 | *hpd = radeon_atom_get_hpd_info_from_gpio(rdev, &gpio); | ||
443 | } | 444 | } |
444 | } | 445 | } |
445 | 446 | ||