diff options
author | Michel Dänzer <daenzer@vmware.com> | 2009-09-15 11:09:27 -0400 |
---|---|---|
committer | Dave Airlie <airlied@linux.ie> | 2009-09-16 02:10:19 -0400 |
commit | 8dfaa8a7779ad2667d539aca6ae11cd87f562db6 (patch) | |
tree | e7decd381bde41c6322b867c75482f9898ecdbfa /drivers/gpu/drm/radeon/radeon_combios.c | |
parent | f657c2a7310ad56e2b67f35f4c5c6106a7146b9c (diff) |
drm/radeon/kms: Get LVDS native mode details from EDID if necessary.
Fixes RMX problems on older Apple laptops which don't have an x86 BIOS ROM.
Signed-off-by: Michel Dänzer <daenzer@vmware.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_combios.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_combios.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c index 2a027e00762a..cb60f5532334 100644 --- a/drivers/gpu/drm/radeon/radeon_combios.c +++ b/drivers/gpu/drm/radeon/radeon_combios.c | |||
@@ -863,8 +863,10 @@ struct radeon_encoder_lvds *radeon_combios_get_lvds_info(struct radeon_encoder | |||
863 | int tmp, i; | 863 | int tmp, i; |
864 | struct radeon_encoder_lvds *lvds = NULL; | 864 | struct radeon_encoder_lvds *lvds = NULL; |
865 | 865 | ||
866 | if (rdev->bios == NULL) | 866 | if (rdev->bios == NULL) { |
867 | return radeon_legacy_get_lvds_info_from_regs(rdev); | 867 | lvds = radeon_legacy_get_lvds_info_from_regs(rdev); |
868 | goto out; | ||
869 | } | ||
868 | 870 | ||
869 | lcd_info = combios_get_table_offset(dev, COMBIOS_LCD_INFO_TABLE); | 871 | lcd_info = combios_get_table_offset(dev, COMBIOS_LCD_INFO_TABLE); |
870 | 872 | ||
@@ -965,11 +967,13 @@ struct radeon_encoder_lvds *radeon_combios_get_lvds_info(struct radeon_encoder | |||
965 | lvds->native_mode.flags = 0; | 967 | lvds->native_mode.flags = 0; |
966 | } | 968 | } |
967 | } | 969 | } |
968 | encoder->native_mode = lvds->native_mode; | ||
969 | } else { | 970 | } else { |
970 | DRM_INFO("No panel info found in BIOS\n"); | 971 | DRM_INFO("No panel info found in BIOS\n"); |
971 | return radeon_legacy_get_lvds_info_from_regs(rdev); | 972 | lvds = radeon_legacy_get_lvds_info_from_regs(rdev); |
972 | } | 973 | } |
974 | out: | ||
975 | if (lvds) | ||
976 | encoder->native_mode = lvds->native_mode; | ||
973 | return lvds; | 977 | return lvds; |
974 | } | 978 | } |
975 | 979 | ||