mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
drm/radeon/kms: fix extended lvds info parsing
On rev <= 1.1 tables, the offset is absolute, on newer tables, it's relative. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=700326 Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Reviewed-by: Jerome Glisse <jglisse@redhat.com> Cc: stable@kernel.org Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
d9282fca8a
commit
05fa7ea7d2
1 changed files with 11 additions and 3 deletions
|
@ -1574,9 +1574,17 @@ struct radeon_encoder_atom_dig *radeon_atombios_get_lvds_info(struct
|
|||
ATOM_FAKE_EDID_PATCH_RECORD *fake_edid_record;
|
||||
ATOM_PANEL_RESOLUTION_PATCH_RECORD *panel_res_record;
|
||||
bool bad_record = false;
|
||||
u8 *record = (u8 *)(mode_info->atom_context->bios +
|
||||
data_offset +
|
||||
le16_to_cpu(lvds_info->info.usModePatchTableOffset));
|
||||
u8 *record;
|
||||
|
||||
if ((frev == 1) && (crev < 2))
|
||||
/* absolute */
|
||||
record = (u8 *)(mode_info->atom_context->bios +
|
||||
le16_to_cpu(lvds_info->info.usModePatchTableOffset));
|
||||
else
|
||||
/* relative */
|
||||
record = (u8 *)(mode_info->atom_context->bios +
|
||||
data_offset +
|
||||
le16_to_cpu(lvds_info->info.usModePatchTableOffset));
|
||||
while (*record != ATOM_RECORD_END_TYPE) {
|
||||
switch (*record) {
|
||||
case LCD_MODE_PATCH_RECORD_MODE_TYPE:
|
||||
|
|
Loading…
Reference in a new issue