added support for TVout on G100-G400 via add-in daughterboards. Note: MGA_TVO (maven) revB requires more tweaks than MGA_TVO rev C. Both differ from G400 maven timing wise. I'll probably work my way down: first fix RevC, then rev B. add-in boards work just as good (or bad) as G100/G200 'standard' TVout boards now. RevC chips work better than revB chips. Both fixable to math G400 and later, I hope. Bumped version to 0.31
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17434 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -54,7 +54,7 @@ status_t gx00_general_powerup()
|
|||||||
status_t status;
|
status_t status;
|
||||||
uint8 card_class;
|
uint8 card_class;
|
||||||
|
|
||||||
LOG(1,("POWERUP: Haiku Matrox Accelerant 0.30 running.\n"));
|
LOG(1,("POWERUP: Haiku Matrox Accelerant 0.31 running.\n"));
|
||||||
|
|
||||||
/* log VBLANK INT usability status */
|
/* log VBLANK INT usability status */
|
||||||
if (si->ps.int_assigned)
|
if (si->ps.int_assigned)
|
||||||
|
|||||||
@@ -245,6 +245,12 @@ status_t pins3_read(uint8 *pins, uint8 length)
|
|||||||
|
|
||||||
/* for cards using this version of PINS both functions are in maven */
|
/* for cards using this version of PINS both functions are in maven */
|
||||||
si->ps.tvout = !(pins[59] & 0x01);
|
si->ps.tvout = !(pins[59] & 0x01);
|
||||||
|
/* beware of TVout add-on boards: test for the MAVEN ourself! */
|
||||||
|
if (i2c_maven_probe() == B_OK)
|
||||||
|
{
|
||||||
|
si->ps.tvout = true;
|
||||||
|
}
|
||||||
|
|
||||||
/* G200 and earlier cards are always singlehead cards */
|
/* G200 and earlier cards are always singlehead cards */
|
||||||
si->ps.secondary_head = false;
|
si->ps.secondary_head = false;
|
||||||
if (si->ps.card_type >= G400) si->ps.secondary_head = !(pins[59] & 0x01);
|
if (si->ps.card_type >= G400) si->ps.secondary_head = !(pins[59] & 0x01);
|
||||||
@@ -401,6 +407,12 @@ status_t pins4_read(uint8 *pins, uint8 length)
|
|||||||
|
|
||||||
/* for cards using this version of PINS both functions are in maven */
|
/* for cards using this version of PINS both functions are in maven */
|
||||||
si->ps.tvout = !(pins[91] & 0x01);
|
si->ps.tvout = !(pins[91] & 0x01);
|
||||||
|
/* beware of TVout add-on boards: test for the MAVEN ourself! */
|
||||||
|
if (i2c_maven_probe() == B_OK)
|
||||||
|
{
|
||||||
|
si->ps.tvout = true;
|
||||||
|
}
|
||||||
|
|
||||||
/* G200 and earlier cards are always singlehead cards */
|
/* G200 and earlier cards are always singlehead cards */
|
||||||
si->ps.secondary_head = false;
|
si->ps.secondary_head = false;
|
||||||
if (si->ps.card_type >= G400) si->ps.secondary_head = !(pins[91] & 0x01);
|
if (si->ps.card_type >= G400) si->ps.secondary_head = !(pins[91] & 0x01);
|
||||||
@@ -523,8 +535,10 @@ status_t pins5_read(uint8 *pins, uint8 length)
|
|||||||
si->ps.mctlwtst_reg = (pins[83] << 24) | (pins[82] << 16) | (pins[81] << 8) | pins [80];
|
si->ps.mctlwtst_reg = (pins[83] << 24) | (pins[82] << 16) | (pins[81] << 8) | pins [80];
|
||||||
si->ps.memrdbk_reg = (pins[91] << 24) | (pins[90] << 16) | (pins[89] << 8) | pins [88];
|
si->ps.memrdbk_reg = (pins[91] << 24) | (pins[90] << 16) | (pins[89] << 8) | pins [88];
|
||||||
|
|
||||||
|
/* both the secondary head and MAVEN are on die, (so) no add-on boards exist */
|
||||||
si->ps.secondary_head = (pins[117] & 0x70);
|
si->ps.secondary_head = (pins[117] & 0x70);
|
||||||
si->ps.tvout = (pins[117] & 0x40);
|
si->ps.tvout = (pins[117] & 0x40);
|
||||||
|
|
||||||
si->ps.primary_dvi = (pins[117] & 0x02);
|
si->ps.primary_dvi = (pins[117] & 0x02);
|
||||||
si->ps.secondary_dvi = (pins[117] & 0x20);
|
si->ps.secondary_dvi = (pins[117] & 0x20);
|
||||||
|
|
||||||
@@ -951,9 +965,13 @@ void dump_pins(void)
|
|||||||
if (si->ps.secondary_head) LOG(2,("present\n")); else LOG(2,("absent\n"));
|
if (si->ps.secondary_head) LOG(2,("present\n")); else LOG(2,("absent\n"));
|
||||||
LOG(2,("tvout: "));
|
LOG(2,("tvout: "));
|
||||||
if (si->ps.tvout) LOG(2,("present\n")); else LOG(2,("absent\n"));
|
if (si->ps.tvout) LOG(2,("present\n")); else LOG(2,("absent\n"));
|
||||||
|
//fixme: probably only valid for pre-G400 cards...(?)
|
||||||
if ((si->ps.tvout) && (si->ps.card_type < G450))
|
if ((si->ps.tvout) && (si->ps.card_type < G450))
|
||||||
{
|
{
|
||||||
LOG(2,("MAVEN version: "));
|
if (si->ps.card_type < G400)
|
||||||
|
LOG(2,("MGA_TVO version: "));
|
||||||
|
else
|
||||||
|
LOG(2,("MAVEN version: "));
|
||||||
if ((MAVR(VERSION)) < 20)
|
if ((MAVR(VERSION)) < 20)
|
||||||
LOG(2,("rev. B\n"));
|
LOG(2,("rev. B\n"));
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user