updated proposemode to handle singlehead tvout capable cards correctly

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17384 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rudolf Cornelissen 2006-05-09 08:54:34 +00:00
parent f89ce97661
commit 4fc8655349
1 changed files with 25 additions and 14 deletions

View File

@ -4,7 +4,7 @@
Other authors for MGA driver: Other authors for MGA driver:
Mark Watson, Mark Watson,
Rudolf Cornelissen 9/2002-1/2006 Rudolf Cornelissen 9/2002-5/2006
*/ */
#define MODULE_BIT 0x00400000 #define MODULE_BIT 0x00400000
@ -387,17 +387,22 @@ status_t PROPOSE_DISPLAY_MODE(display_mode *target, const display_mode *low, con
/* set TV_CAPABLE if suitable: pixelclock is not important (defined by TVstandard) */ /* set TV_CAPABLE if suitable: pixelclock is not important (defined by TVstandard) */
switch (si->ps.card_type) switch (si->ps.card_type)
{ {
case G100:
case G200:
if (si->ps.tvout &&
(target->timing.h_display <= 1024) &&
(target->timing.v_display <= 768))
{
target->flags |= TV_CAPABLE;
}
break;
case G400: case G400:
case G400MAX: case G400MAX:
//fixme: in theory singlehead cards can do TVout as well (if MAVEN mounted) if (si->ps.tvout &&
if (target->flags & DUALHEAD_CAPABLE) (target->timing.h_display <= 1024) &&
(target->timing.v_display <= 768))
{ {
if (si->ps.tvout && target->flags |= TV_CAPABLE;
(target->timing.h_display <= 1024) &&
(target->timing.v_display <= 768))
{
target->flags |= TV_CAPABLE;
}
} }
break; break;
case G450: case G450:
@ -414,12 +419,11 @@ status_t PROPOSE_DISPLAY_MODE(display_mode *target, const display_mode *low, con
} }
break; break;
default: default:
//fixme: setup for G100 and G200 TVout later on...
break; break;
} }
/* TVout can only be done if the interface cable is connected */ /* TVout can only be done if the interface cable is connected on dualhead cards */
if ((i2c_sec_tv_adapter() != B_OK) && (target->flags & TV_CAPABLE)) if (si->ps.secondary_head && (i2c_sec_tv_adapter() != B_OK))
{ {
target->flags &= ~TV_CAPABLE; target->flags &= ~TV_CAPABLE;
LOG(1, ("PROPOSEMODE: blocking TVout: no TVout cable connected!\n")); LOG(1, ("PROPOSEMODE: blocking TVout: no TVout cable connected!\n"));
@ -431,8 +435,15 @@ status_t PROPOSE_DISPLAY_MODE(display_mode *target, const display_mode *low, con
target->flags &= ~TV_BITS; target->flags &= ~TV_BITS;
} }
/* fixme: currently the matrox driver can only do secondary TVout */ /* the matrox driver can only do secondary TVout on dualhead cards */
target->flags &= ~TV_PRIMARY; if ((target->flags & TV_BITS) && !si->ps.secondary_head)
{
target->flags |= TV_PRIMARY;
}
else
{
target->flags &= ~TV_PRIMARY;
}
/* set HARDWARE_CURSOR mode if suitable */ /* set HARDWARE_CURSOR mode if suitable */
if (si->settings.hardcursor) if (si->settings.hardcursor)