aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-02-02 12:06:28 -0500
committerDave Airlie <airlied@redhat.com>2010-02-08 18:31:22 -0500
commit093972788f009cabf8f8fb726dc5267b60b3d09e (patch)
treed31858dcd64d393fa1150e4e34bd1914f53fa7aa /drivers/gpu
parent7c27f87d2bde885e9bcda74c208a7aae8bef8e76 (diff)
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>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/radeon/radeon_atombios.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
index 667f099e84af..d33fb4174b13 100644
--- a/drivers/gpu/drm/radeon/radeon_atombios.c
+++ b/drivers/gpu/drm/radeon/radeon_atombios.c
@@ -1073,6 +1073,21 @@ static struct radeon_atom_ss *radeon_atombios_get_ss_info(struct
1073 return ss; 1073 return ss;
1074} 1074}
1075 1075
1076static void radeon_atom_apply_lvds_quirks(struct drm_device *dev,
1077 struct radeon_encoder_atom_dig *lvds)
1078{
1079
1080 /* Toshiba A300-1BU laptop panel doesn't like new pll divider algo */
1081 if ((dev->pdev->device == 0x95c4) &&
1082 (dev->pdev->subsystem_vendor == 0x1179) &&
1083 (dev->pdev->subsystem_device == 0xff50)) {
1084 if ((lvds->native_mode.hdisplay == 1280) &&
1085 (lvds->native_mode.vdisplay == 800))
1086 lvds->pll_algo = PLL_ALGO_LEGACY;
1087 }
1088
1089}
1090
1076union lvds_info { 1091union lvds_info {
1077 struct _ATOM_LVDS_INFO info; 1092 struct _ATOM_LVDS_INFO info;
1078 struct _ATOM_LVDS_INFO_V12 info_12; 1093 struct _ATOM_LVDS_INFO_V12 info_12;
@@ -1151,6 +1166,9 @@ struct radeon_encoder_atom_dig *radeon_atombios_get_lvds_info(struct
1151 } else 1166 } else
1152 lvds->pll_algo = PLL_ALGO_LEGACY; 1167 lvds->pll_algo = PLL_ALGO_LEGACY;
1153 1168
1169 /* LVDS quirks */
1170 radeon_atom_apply_lvds_quirks(dev, lvds);
1171
1154 encoder->native_mode = lvds->native_mode; 1172 encoder->native_mode = lvds->native_mode;
1155 } 1173 }
1156 return lvds; 1174 return lvds;