Browse Source

drm/radeon/kms: add pll quirk for toshiba laptop panel

The panel on the Toshiba A300-1BU laptop does not like the
PLL dividers selected by the avivo pll algo, but works fine
using the older method.  Add a quirk to handle it.

Should fix fdo bug 26358.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Alex Deucher 15 years ago
parent
commit
093972788f
1 changed files with 18 additions and 0 deletions
  1. 18 0
      drivers/gpu/drm/radeon/radeon_atombios.c

+ 18 - 0
drivers/gpu/drm/radeon/radeon_atombios.c

@@ -1073,6 +1073,21 @@ static struct radeon_atom_ss *radeon_atombios_get_ss_info(struct
 	return ss;
 }
 
+static void radeon_atom_apply_lvds_quirks(struct drm_device *dev,
+					  struct radeon_encoder_atom_dig *lvds)
+{
+
+	/* Toshiba A300-1BU laptop panel doesn't like new pll divider algo */
+	if ((dev->pdev->device == 0x95c4) &&
+	    (dev->pdev->subsystem_vendor == 0x1179) &&
+	    (dev->pdev->subsystem_device == 0xff50)) {
+		if ((lvds->native_mode.hdisplay == 1280) &&
+		    (lvds->native_mode.vdisplay == 800))
+			lvds->pll_algo = PLL_ALGO_LEGACY;
+	}
+
+}
+
 union lvds_info {
 	struct _ATOM_LVDS_INFO info;
 	struct _ATOM_LVDS_INFO_V12 info_12;
@@ -1151,6 +1166,9 @@ struct radeon_encoder_atom_dig *radeon_atombios_get_lvds_info(struct
 		} else
 			lvds->pll_algo = PLL_ALGO_LEGACY;
 
+		/* LVDS quirks */
+		radeon_atom_apply_lvds_quirks(dev, lvds);
+
 		encoder->native_mode = lvds->native_mode;
 	}
 	return lvds;