Re: [PATCH] Another card with wrong primary dac adj

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jul 19, 2013 at 3:08 PM, Ondrej Zary <linux@xxxxxxxxxxxxxxxxxxxx> wrote:
> Hello,
> got another card with "too bright" problem:
> Sapphire Radeon VE 7000 DDR (VGA+S-Video)
>
> lspci -vnn:
> 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI RV100 QY [Radeon 7000/VE] [1002:5159] (prog-if 00 [VGA controller])
>         Subsystem: PC Partner Limited Sapphire Radeon VE 7000 DDR [174b:7c28]
>
> The patch below fixes the problem for this card.

Applied.

> But I don't like the blacklist, couldn't some heuristic be used instead?

How about the attached patch?


> The interesting thing is that the manufacturer is the same as the other card
> needing the same quirk. I wonder how many different types are broken this way.

So far we only have two quirks, so it doesn't seem that widespread.

Alex

>
> The "wrong" ps2_pdac_adj value that comes from BIOS on this card is 0x300.
>
> ====================
> drm/radeon: Add primary dac adj quirk for Sapphire Radeon VE 7000 DDR
>
> Values from BIOS are wrong, causing too bright colors.
> Use default values instead.
>
> Signed-off-by: Ondrej Zary <linux@xxxxxxxxxxxxxxxxxxxx>
> ---
>  drivers/gpu/drm/radeon/radeon_combios.c |    8 ++++++--
>  1 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
> index 78edadc..8528b81 100644
> --- a/drivers/gpu/drm/radeon/radeon_combios.c
> +++ b/drivers/gpu/drm/radeon/radeon_combios.c
> @@ -971,10 +971,14 @@ struct radeon_encoder_primary_dac *radeon_combios_get_primary_dac_info(struct
>         }
>
>         /* quirks */
> +       /* Radeon 7000 (RV100) */
> +       if (((dev->pdev->device == 0x5159) &&
> +           (dev->pdev->subsystem_vendor == 0x174B) &&
> +           (dev->pdev->subsystem_device == 0x7c28)) ||
>         /* Radeon 9100 (R200) */
> -       if ((dev->pdev->device == 0x514D) &&
> +          ((dev->pdev->device == 0x514D) &&
>             (dev->pdev->subsystem_vendor == 0x174B) &&
> -           (dev->pdev->subsystem_device == 0x7149)) {
> +           (dev->pdev->subsystem_device == 0x7149))) {
>                 /* vbios value is bad, use the default */
>                 found = 0;
>         }
> --
> Ondrej Zary
> _______________________________________________
> dri-devel mailing list
> dri-devel@xxxxxxxxxxxxxxxxxxxxx
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
From 6ca68e557791c540200c67c09dfc6ad4a277017c Mon Sep 17 00:00:00 2001
From: Alex Deucher <alexander.deucher@xxxxxxx>
Date: Fri, 19 Jul 2013 17:44:43 -0400
Subject: [PATCH] drm/radeon: improve dac adjust heuristics for legacy pdac

Hopefully avoid more quirks in the future due to bogus
vbios dac data.

Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx>
Cc: stable@xxxxxxxxxxxxxxx
---
 drivers/gpu/drm/radeon/radeon_combios.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
index 8528b81..485f82c 100644
--- a/drivers/gpu/drm/radeon/radeon_combios.c
+++ b/drivers/gpu/drm/radeon/radeon_combios.c
@@ -965,8 +965,10 @@ struct radeon_encoder_primary_dac *radeon_combios_get_primary_dac_info(struct
 			dac = RBIOS8(dac_info + 0x3) & 0xf;
 			p_dac->ps2_pdac_adj = (bg << 8) | (dac);
 		}
-		/* if the values are all zeros, use the table */
-		if (p_dac->ps2_pdac_adj)
+		/* if the values are zeros, use the table */
+		if ((dac == 0) || (bg == 0))
+			found = 0;
+		else
 			found = 1;
 	}
 
-- 
1.7.7.5

_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel

[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux