[PATCH] drm/radeon/kms: fix extended lvds info parsing
Jerome Glisse
j.glisse at gmail.com
Wed May 11 11:03:43 PDT 2011
On Wed, May 11, 2011 at 2:02 PM, Alex Deucher <alexdeucher at gmail.com> wrote:
> 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 at gmail.com>
> Cc: stable at kernel.org
Reviewed-by: Jerome Glisse <jglisse at redhat.com>
> ---
> drivers/gpu/drm/radeon/radeon_atombios.c | 14 +++++++++++---
> 1 files changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
> index 7615aaa..fd6f4f3 100644
> --- a/drivers/gpu/drm/radeon/radeon_atombios.c
> +++ b/drivers/gpu/drm/radeon/radeon_atombios.c
> @@ -1585,9 +1585,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:
> --
> 1.7.1.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
More information about the dri-devel
mailing list