aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_atombios.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2011-01-04 17:42:20 -0500
committerDave Airlie <airlied@redhat.com>2011-01-05 21:59:20 -0500
commit2f299d5de02da3ffb1f9e1a05c91dcd1173ebd3c (patch)
treef77c1b5002802fd29dd3133e7d06b2729b0e6548 /drivers/gpu/drm/radeon/radeon_atombios.c
parent66b37c6777c4686f121fe4a83176e535a7f4b1af (diff)
drm/radeon/kms: adjust quirk for acer laptop
Acer laptop (TravelMate 5730G) has an HDMI connector on the laptop and a DVI connector on the docking station and both share the same encoder, hpd pin, and ddc line. The bios connector table reflects this and is technically correct, however, we drop the DVI connector here since xrandr has no concept of encoders (only crtcs and connectors) and will try and drive both connectors with different crtcs which isn't possible on the hardware side and leaves no crtcs for LVDS or VGA. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=32732 Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Cc: stable@kernel.org Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_atombios.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_atombios.c21
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