centering update (fixed syncpol for flatpanels)

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7664 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rudolf Cornelissen 2004-05-27 19:06:30 +00:00
parent 0bedbce52c
commit 92c600065f
2 changed files with 35 additions and 32 deletions

View File

@ -1,6 +1,6 @@
/* CTRC functionality */
/* Author:
Rudolf Cornelissen 4/2003-4/2004
Rudolf Cornelissen 4/2003-5/2004
*/
#define MODULE_BIT 0x00040000
@ -105,7 +105,7 @@ status_t nm_crtc_set_timing(display_mode target, bool crt_only)
/* modify visible sceensize if needed */
/* (note that MOVE_CURSOR checks for a panning/scrolling mode itself,
* the display_mode as placed in si->dm may _not_ be modified!) */
if (!(crt_only))
if (!crt_only)
{
if (target.timing.h_display > si->ps.panel_width)
{
@ -117,6 +117,10 @@ status_t nm_crtc_set_timing(display_mode target, bool crt_only)
target.timing.v_display = si->ps.panel_height;
LOG(4, ("CRTC: req. height > panel height: setting scrolling mode\n"));
}
/* modify sync polarities (needed to maintain correct panel centering):
* both polarities must be same (confirmed NM2160) */
target.timing.flags |= (B_POSITIVE_HSYNC | B_POSITIVE_VSYNC);
}
/* Modify parameters as required by standard VGA */
@ -199,35 +203,6 @@ status_t nm_crtc_set_timing(display_mode target, bool crt_only)
((vsync_s & 0x400) >> (10 - 3))/*|
((linecomp&0x400)>>3)*/
));
/* setup HSYNC & VSYNC polarity */
LOG(2,("CRTC: sync polarity: "));
temp = ISARB(MISCR);
if (target.timing.flags & B_POSITIVE_HSYNC)
{
LOG(2,("H:pos "));
temp &= ~0x40;
}
else
{
LOG(2,("H:neg "));
temp |= 0x40;
}
if (target.timing.flags & B_POSITIVE_VSYNC)
{
LOG(2,("V:pos "));
temp &= ~0x80;
}
else
{
LOG(2,("V:neg "));
temp |= 0x80;
}
/* we need to wait a bit or the card will mess-up it's register values.. */
snooze(10);
ISAWB(MISCW, temp);
LOG(2,(", MISC reg readback: $%02x\n", ISARB(MISCR)));
}
else
{
@ -286,6 +261,34 @@ status_t nm_crtc_set_timing(display_mode target, bool crt_only)
}
}
/* setup HSYNC & VSYNC polarity */
LOG(2,("CRTC: sync polarity: "));
temp = ISARB(MISCR);
if (target.timing.flags & B_POSITIVE_HSYNC)
{
LOG(2,("H:pos "));
temp &= ~0x40;
}
else
{
LOG(2,("H:neg "));
temp |= 0x40;
}
if (target.timing.flags & B_POSITIVE_VSYNC)
{
LOG(2,("V:pos "));
temp &= ~0x80;
}
else
{
LOG(2,("V:neg "));
temp |= 0x80;
}
/* we need to wait a bit or the card will mess-up it's register values.. */
snooze(10);
ISAWB(MISCW, temp);
LOG(2,(", MISC reg readback: $%02x\n", ISARB(MISCR)));
/* program 'fixed' mode if needed */
if (si->ps.card_type != NM2070)
{

View File

@ -47,7 +47,7 @@ status_t nm_general_powerup()
{
status_t status;
LOG(1,("POWERUP: Neomagic (open)BeOS Accelerant 0.06-11 running.\n"));
LOG(1,("POWERUP: Neomagic (open)BeOS Accelerant 0.06-12 running.\n"));
/* detect card type and power it up */
switch(CFGR(DEVID))