diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2010-02-02 12:06:28 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-02-08 18:31:22 -0500 |
commit | 093972788f009cabf8f8fb726dc5267b60b3d09e (patch) | |
tree | d31858dcd64d393fa1150e4e34bd1914f53fa7aa /drivers/gpu | |
parent | 7c27f87d2bde885e9bcda74c208a7aae8bef8e76 (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.c | 18 |
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 | ||
1076 | static 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 | |||
1076 | union lvds_info { | 1091 | union 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; |