added dualhead switch mode

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6403 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rudolf Cornelissen 2004-01-29 10:37:50 +00:00
parent 162cf2d0a5
commit 203b86df50
5 changed files with 46 additions and 45 deletions

View File

@ -478,11 +478,13 @@
#define NVDAC_CURPOS 0x00680300
#define NVDAC_PIXPLLC 0x00680508
#define NVDAC_PLLSEL 0x0068050c
#define NVDAC_OUTPUT 0x0068052c
#define NVDAC_PIXPLLC2 0x00680578 /* NV31, NV36 only */
#define NVDAC_GENCTRL 0x00680600
/* secondary head */
#define NVDAC2_CURPOS 0x00682300
#define NVDAC2_PIXPLLC 0x00680520
#define NVDAC2_OUTPUT 0x0068252c
#define NVDAC2_PIXPLLC2 0x0068057c /* NV31, NV36 only */
#define NVDAC2_GENCTRL 0x00682600

View File

@ -182,31 +182,26 @@ status_t SET_DISPLAY_MODE(display_mode *mode_to_set)
nv_crtc2_set_display_pitch ();
/*work out where the "right" screen starts*/
startadd_right=startadd+(target.timing.h_display * (colour_depth1 >> 3));
startadd_right = startadd + (target.timing.h_display * (colour_depth1 >> 3));
/* set the outputs */
switch (si->ps.card_type)
/* set the outputs if possible */
if (si->ps.secondary_head)
{
//fixme..
case G550:
switch (target.flags & DUALHEAD_BITS)
{
case DUALHEAD_ON:
case DUALHEAD_CLONE:
//fixme: set output connectors only
nv_general_dac_select(DS_CRTC1DAC_CRTC2MAVEN);
/* connect outputs straight-through */
nv_general_output_select(false);
break;
case DUALHEAD_SWITCH:
//fixme: set output connectors only
nv_general_dac_select(DS_CRTC1MAVEN_CRTC2DAC);
/* cross-connect outputs */
nv_general_output_select(true);
break;
}
break;
default:
break;
}
/*Tell card what memory to display*/
/* Tell card what memory to display */
switch (target.flags & DUALHEAD_BITS)
{
case DUALHEAD_ON:
@ -262,23 +257,12 @@ status_t SET_DISPLAY_MODE(display_mode *mode_to_set)
/* tell the card what memory to display */
nv_crtc_set_display_start(startadd,colour_depth1);
/* enable primary analog output */
switch (si->ps.card_type)
{
case NV11:
// nv_general_dac_select(DS_CRTC1DAC_CRTC2MAVEN);
break;
case NV17:
// nv_general_dac_select(DS_CRTC1CON1_CRTC2CON2);
// gx50_general_output_select();
break;
default:
break;
}
/* set the timing */
nv_crtc_set_timing(target);
/* connect outputs straight-through */
if (si->ps.secondary_head) nv_general_output_select(false);
//fixme: shut-off the videoPLL if it exists...
}

View File

@ -80,7 +80,7 @@ status_t nv_general_powerup()
{
status_t status;
LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.08-9 running.\n"));
LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.08-10 running.\n"));
/* preset no laptop */
si->ps.laptop = false;
@ -789,31 +789,45 @@ return nv_general_bios_to_powergraphics();
return B_OK;
}
status_t gx50_general_output_select()
status_t nv_general_output_select(bool cross)
{
/* make sure this call is warranted */
if ((si->ps.card_type != NV11) && (si->ps.card_type != NV17)) return B_ERROR;
/* choose primary analog outputconnector */
if ((si->ps.primary_dvi) && (si->ps.secondary_head) && (si->ps.tvout))
if (si->ps.secondary_head)
{
if (i2c_sec_tv_adapter() == B_OK)
/* NV11 cards can't switch heads */
if (si->ps.card_type != NV11)
{
LOG(4,("INIT: secondary TV-adapter detected, using primary connector\n"));
// DXIW(OUTPUTCONN,0x01);
if (cross)
{
LOG(4,("INIT: switching outputs to be cross-connected\n"));
/* enable head 2 on connector 1 */
/* (b8 = select head for output,
* b0 = enable sync signals on output (if generated)) */
DACW(OUTPUT, 0x00000101);
/* enable head 1 on connector 2 */
DAC2W(OUTPUT, 0x00000001);
}
else
{
LOG(4,("INIT: switching outputs to be straight-through\n"));
/* enable head 1 on connector 1 */
DACW(OUTPUT, 0x00000001);
/* enable head 2 on connector 2 */
DAC2W(OUTPUT, 0x00000101);
}
}
else
{
LOG(4,("INIT: no secondary TV-adapter detected, using secondary connector\n"));
// DXIW(OUTPUTCONN,0x04);
LOG(4,("INIT: NV11 outputs are hardwired to be straight-through\n"));
}
return B_OK;
}
else
{
LOG(4,("INIT: using primary connector\n"));
// DXIW(OUTPUTCONN,0x01);
return B_ERROR;
}
return B_OK;
}
/*connect CRTC1 to the specified DAC*/

View File

@ -1,7 +1,7 @@
/*general card functions*/
status_t nv_general_powerup(void);
status_t nv_set_cas_latency(void);
status_t gx50_general_output_select(void);
status_t nv_general_output_select(bool cross);
status_t nv_general_dac_select(int);
status_t nv_general_wait_retrace(void);
status_t nv_general_validate_pic_size (display_mode *target, uint32 *bytes_per_row, bool *acc_mode);

View File

@ -4,7 +4,7 @@
</head>
<body>
<p><h2>Changes done for each driverversion:</h2></p>
<p><h1>head (0.08-9, Rudolf)</h1></p>
<p><h1>head (0.08-10, Rudolf)</h1></p>
<ul>
<li>Fixed GeForceFX 5600 and FX 5700 monitor 'refresh out of range' / shutoff fault. nVidia changed the pixelPLL for the NV31 and NV36;
<li>Fixed acceleration engine restrictions code to adhere to GeForceFX 5600 restrictions: those are still NV20 style for this card;
@ -16,11 +16,12 @@
<li>Added card recognition for GeForceFX 5700, FX 5950 and some other (older) cards;
<li>Added 256Mb RAM detection;
<li>Improved startup code: this should (could) fix random trouble on some cards like for instance hardcursor trouble on especially laptops;
<li>Added dualhead support (use Mark Watson's 'G400 Dualhead Setup' from BeBits for now): Note that dualhead switch mode still has to be setup;
<li>Added dualhead support (use Mark Watson's 'G400 Dualhead Setup' from BeBits for now);
<li>Updated mode granularity and max virtual size checking/limiting to adhere to new CRTC setup for dualhead cards;
<li>Added dualhead support for 8- and 15bit colordepths;
<li>Fixed move_display distortions in virtualscreens especially visible in 8-bit colordepth (for both heads);
<li>Added 'overlay follows head' for dualhead stretch and switch modes: if more than half the overlay output is on a screen, that screen gets the overlay output.
<li>Added 'overlay follows head' for dualhead stretch and switch modes: if more than half the overlay output window is on a screen, that screen gets the overlay output;
<li>Added dualhead switch mode.
</ul>
<p><h1>nv_driver 0.07 (Rudolf)</h1></p>
<ul>