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