|
@@ -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:
|