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:
parent
162cf2d0a5
commit
203b86df50
@ -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
|
||||
|
||||
|
@ -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...
|
||||
}
|
||||
|
||||
|
@ -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*/
|
||||
|
@ -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);
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user