diff options
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; |