diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2006-05-03 04:25:27 +0000 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2006-05-03 04:25:27 +0000 |
commit | 2b0cdd9448a24ea067b0d78f319b99c1041df2e0 (patch) | |
tree | bb86e941de05989d6c352ff153649a5daa197aad /src | |
parent | 36c04b88416905b9ae305583e8e34fefdbfafc50 (diff) |
Enable decoding of version 4 TMDS PLL config tables, they actually work,
the problem in the comment only concerned pre-production cards that Hui
tested apparently. Also set back the default value to what it was
initially, fixes some more cards that don't have a proper table (Mac
Mini for example)
Diffstat (limited to 'src')
-rw-r--r-- | src/radeon_bios.c | 11 | ||||
-rw-r--r-- | src/radeon_driver.c | 4 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/radeon_bios.c b/src/radeon_bios.c index dbe29784..1ea0550f 100644 --- a/src/radeon_bios.c +++ b/src/radeon_bios.c @@ -556,6 +556,17 @@ Bool RADEONGetTMDSInfoFromBIOS (ScrnInfoPtr pScrn) info->tmds_pll[i].freq = RADEON_BIOS16(tmp+i*10+0x10); } return TRUE; + } else if (RADEON_BIOS8(tmp) == 4) { + int stride = 0; + n = RADEON_BIOS8(tmp + 5) + 1; + if (n > 4) n = 4; + for (i=0; i<n; i++) { + info->tmds_pll[i].value = RADEON_BIOS32(tmp+stride+0x08); + info->tmds_pll[i].freq = RADEON_BIOS16(tmp+stride+0x10); + if (i == 0) stride += 10; + else stride += 6; + } + return TRUE; } /* revision 4 has some problem as it appears in RV280, diff --git a/src/radeon_driver.c b/src/radeon_driver.c index 6404ad13..b4c3cd48 100644 --- a/src/radeon_driver.c +++ b/src/radeon_driver.c @@ -1,5 +1,5 @@ /* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c,v 1.117 2004/02/19 22:38:12 tsi Exp $ */ -/* $XdotOrg: driver/xf86-video-ati/src/radeon_driver.c,v 1.115 2006/04/29 20:34:57 daenzer Exp $ */ +/* $XdotOrg: driver/xf86-video-ati/src/radeon_driver.c,v 1.116 2006/04/29 21:30:23 daenzer Exp $ */ /* * Copyright 2000 ATI Technologies Inc., Markham, Ontario, and * VA Linux Systems Inc., Fremont, California. @@ -524,7 +524,7 @@ static const RADEONTMDSPll default_tmds_pll[CHIP_FAMILY_LAST][4] = {{15000, 0xa1b}, {0xffffffff, 0xa3f}, {0, 0}, {0, 0}}, /*CHIP_FAMILY_R200*/ {{15500, 0x81b}, {0xffffffff, 0x83f}, {0, 0}, {0, 0}}, /*CHIP_FAMILY_RV250*/ {{0, 0}, {0, 0}, {0, 0}, {0, 0}}, /*CHIP_FAMILY_RS300*/ - {{13000, 0x400f4}, {15000, 0x400f7}, {0xffffffff, 0x400f7/*0x40111*/}, {0, 0}}, /*CHIP_FAMILY_RV280*/ + {{13000, 0x400f4}, {15000, 0x400f7}, {0xffffffff, 0x40111}, {0, 0}}, /*CHIP_FAMILY_RV280*/ {{0xffffffff, 0xb01cb}, {0, 0}, {0, 0}, {0, 0}}, /*CHIP_FAMILY_R300*/ {{0xffffffff, 0xb01cb}, {0, 0}, {0, 0}, {0, 0}}, /*CHIP_FAMILY_R350*/ {{15000, 0xb0155}, {0xffffffff, 0xb01cb}, {0, 0}, {0, 0}}, /*CHIP_FAMILY_RV350*/ |