From 57ea545fa646c8cdc291aa14a6ef7504468a67c9 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Sat, 29 Apr 2006 12:46:24 +0000 Subject: [PATCH] finally fixed the colorpalette trouble on 'special versions of the G200'. That cost me 4 years... It turns out the driver ID'd G100 and G200 cards with a MAVEN as dualhead cards. This enabled secondary head programming stuff, resulting in broken colorpalette. Looks like CRTC2 DPMS turn-off was responsible for killing the palette. So, the only thing special about these G200's was the MAVEN connected to them. Apparantly. Bumped version to 0.29. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17258 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/accelerants/matrox/engine/mga_general.c | 2 +- src/add-ons/accelerants/matrox/engine/mga_info.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/add-ons/accelerants/matrox/engine/mga_general.c b/src/add-ons/accelerants/matrox/engine/mga_general.c index a65c6c4824..0cc1155688 100644 --- a/src/add-ons/accelerants/matrox/engine/mga_general.c +++ b/src/add-ons/accelerants/matrox/engine/mga_general.c @@ -54,7 +54,7 @@ status_t gx00_general_powerup() status_t status; uint8 card_class; - LOG(1,("POWERUP: Haiku Matrox Accelerant 0.28 running.\n")); + LOG(1,("POWERUP: Haiku Matrox Accelerant 0.29 running.\n")); /* log VBLANK INT usability status */ if (si->ps.int_assigned) diff --git a/src/add-ons/accelerants/matrox/engine/mga_info.c b/src/add-ons/accelerants/matrox/engine/mga_info.c index 9d3eed24cb..642d222069 100644 --- a/src/add-ons/accelerants/matrox/engine/mga_info.c +++ b/src/add-ons/accelerants/matrox/engine/mga_info.c @@ -2,7 +2,7 @@ /* some bits are hacks, where PINS is not known */ /* Authors: Mark Watson 2/2000, - Rudolf Cornelissen 10/2002-1/2004 + Rudolf Cornelissen 10/2002-4/2006 */ #define MODULE_BIT 0x00002000 @@ -244,8 +244,10 @@ status_t pins3_read(uint8 *pins, uint8 length) si->ps.v3_option2_reg = pins[58]; /* for cards using this version of PINS both functions are in maven */ - si->ps.secondary_head = !(pins[59] & 0x01); si->ps.secondary_tvout = !(pins[59] & 0x01); + /* G200 and earlier cards are always singlehead cards */ + si->ps.secondary_head = false; + if (si->ps.card_type >= G400) si->ps.secondary_head = !(pins[59] & 0x01); /* setup via gathered info from pins */ si->ps.option_reg = 0; @@ -398,8 +400,10 @@ status_t pins4_read(uint8 *pins, uint8 length) si->ps.option_reg |= (rfhcnt << 15); /* for cards using this version of PINS both functions are in maven */ - si->ps.secondary_head = !(pins[91] & 0x01); si->ps.secondary_tvout = !(pins[91] & 0x01); + /* G200 and earlier cards are always singlehead cards */ + si->ps.secondary_head = false; + if (si->ps.card_type >= G400) si->ps.secondary_head = !(pins[91] & 0x01); /* assuming the only possible panellink will be on the first head */ si->ps.primary_dvi = !(pins[91] & 0x40); @@ -577,7 +581,8 @@ void fake_pins(void) if (i2c_maven_probe() == B_OK) { si->ps.secondary_tvout = true; - si->ps.secondary_head = true; + /* G200 and earlier cards are always singlehead cards */ + if (si->ps.card_type >= G400) si->ps.secondary_head = true; } }