updated some panel stuff, added some new card ID's
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7103 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -121,6 +121,9 @@ status_t nv_crtc_set_timing(display_mode target)
|
|||||||
target.timing.v_total = target.timing.v_display + 6;
|
target.timing.v_total = target.timing.v_display + 6;
|
||||||
target.timing.v_sync_start = target.timing.v_total - 3;
|
target.timing.v_sync_start = target.timing.v_total - 3;
|
||||||
target.timing.v_sync_end = target.timing.v_total - 2;
|
target.timing.v_sync_end = target.timing.v_total - 2;
|
||||||
|
|
||||||
|
/* disable GPU scaling testmode so automatic scaling will be done */
|
||||||
|
DACW(FP_DEBUG1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Modify parameters as required by standard VGA */
|
/* Modify parameters as required by standard VGA */
|
||||||
@@ -263,6 +266,9 @@ status_t nv_crtc_set_timing(display_mode target)
|
|||||||
{
|
{
|
||||||
uint32 iscale_x, iscale_y;
|
uint32 iscale_x, iscale_y;
|
||||||
|
|
||||||
|
/* powerup both LVDS (laptop panellink) and TMDS (DVI panellink) transmitters */
|
||||||
|
DACW(FP_DEBUG0, (DACR(FP_DEBUG0) & 0xcfffffff));
|
||||||
|
|
||||||
/* calculate inverse scaling factors used by hardware in 20.12 format */
|
/* calculate inverse scaling factors used by hardware in 20.12 format */
|
||||||
iscale_x = (((1 << 12) * target.timing.h_display) / si->ps.panel1_width);
|
iscale_x = (((1 << 12) * target.timing.h_display) / si->ps.panel1_width);
|
||||||
iscale_y = (((1 << 12) * target.timing.v_display) / si->ps.panel1_height);
|
iscale_y = (((1 << 12) * target.timing.v_display) / si->ps.panel1_height);
|
||||||
@@ -270,6 +276,8 @@ status_t nv_crtc_set_timing(display_mode target)
|
|||||||
/* unblock flatpanel timing programming (or something like that..) */
|
/* unblock flatpanel timing programming (or something like that..) */
|
||||||
CRTCW(FP_HTIMING, 0);
|
CRTCW(FP_HTIMING, 0);
|
||||||
CRTCW(FP_VTIMING, 0);
|
CRTCW(FP_VTIMING, 0);
|
||||||
|
LOG(2,("CRTC: FP_HTIMING reg readback: $%02x\n", CRTCR(FP_HTIMING)));
|
||||||
|
LOG(2,("CRTC: FP_VTIMING reg readback: $%02x\n", CRTCR(FP_VTIMING)));
|
||||||
|
|
||||||
/* enable full width visibility on flatpanel */
|
/* enable full width visibility on flatpanel */
|
||||||
DACW(FP_HVALID_S, 0);
|
DACW(FP_HVALID_S, 0);
|
||||||
@@ -279,7 +287,8 @@ status_t nv_crtc_set_timing(display_mode target)
|
|||||||
DACW(FP_VVALID_E, (si->ps.panel1_height - 1));
|
DACW(FP_VVALID_E, (si->ps.panel1_height - 1));
|
||||||
|
|
||||||
/* nVidia cards support upscaling except on NV11 */
|
/* nVidia cards support upscaling except on NV11 */
|
||||||
if (si->ps.card_type == NV11)
|
//fixme? logfiles tell me this is nonsense...
|
||||||
|
if (0)//si->ps.card_type == NV11)
|
||||||
{
|
{
|
||||||
/* disable last fetched line limiting */
|
/* disable last fetched line limiting */
|
||||||
DACW(FP_DEBUG2, 0x00000000);
|
DACW(FP_DEBUG2, 0x00000000);
|
||||||
@@ -313,9 +322,6 @@ status_t nv_crtc_set_timing(display_mode target)
|
|||||||
/* inform panel not to scale */
|
/* inform panel not to scale */
|
||||||
DACW(FP_TG_CTRL, (DACR(FP_TG_CTRL) & 0xfffffeff));
|
DACW(FP_TG_CTRL, (DACR(FP_TG_CTRL) & 0xfffffeff));
|
||||||
|
|
||||||
/* disable GPU scaling testmode so automatic scaling is done */
|
|
||||||
DACW(FP_DEBUG1, 0);
|
|
||||||
|
|
||||||
/* GPU scaling is automatically setup by hardware, so only modify this
|
/* GPU scaling is automatically setup by hardware, so only modify this
|
||||||
* scalingfactor for non 4:3 (1.33) aspect panels;
|
* scalingfactor for non 4:3 (1.33) aspect panels;
|
||||||
* let's consider 1280x1024 1:33 aspect (it's 1.25 aspect actually!) */
|
* let's consider 1280x1024 1:33 aspect (it's 1.25 aspect actually!) */
|
||||||
|
|||||||
@@ -107,6 +107,9 @@ status_t nv_crtc2_set_timing(display_mode target)
|
|||||||
target.timing.v_total = target.timing.v_display + 6;
|
target.timing.v_total = target.timing.v_display + 6;
|
||||||
target.timing.v_sync_start = target.timing.v_total - 3;
|
target.timing.v_sync_start = target.timing.v_total - 3;
|
||||||
target.timing.v_sync_end = target.timing.v_total - 2;
|
target.timing.v_sync_end = target.timing.v_total - 2;
|
||||||
|
|
||||||
|
/* disable GPU scaling testmode so automatic scaling will be done */
|
||||||
|
DAC2W(FP_DEBUG1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Modify parameters as required by standard VGA */
|
/* Modify parameters as required by standard VGA */
|
||||||
@@ -246,6 +249,9 @@ status_t nv_crtc2_set_timing(display_mode target)
|
|||||||
{
|
{
|
||||||
uint32 iscale_x, iscale_y;
|
uint32 iscale_x, iscale_y;
|
||||||
|
|
||||||
|
/* powerup both LVDS (laptop panellink) and TMDS (DVI panellink) transmitters */
|
||||||
|
DAC2W(FP_DEBUG0, (DAC2R(FP_DEBUG0) & 0xcfffffff));
|
||||||
|
|
||||||
/* calculate inverse scaling factors used by hardware in 20.12 format */
|
/* calculate inverse scaling factors used by hardware in 20.12 format */
|
||||||
iscale_x = (((1 << 12) * target.timing.h_display) / si->ps.panel2_width);
|
iscale_x = (((1 << 12) * target.timing.h_display) / si->ps.panel2_width);
|
||||||
iscale_y = (((1 << 12) * target.timing.v_display) / si->ps.panel2_height);
|
iscale_y = (((1 << 12) * target.timing.v_display) / si->ps.panel2_height);
|
||||||
@@ -253,6 +259,8 @@ status_t nv_crtc2_set_timing(display_mode target)
|
|||||||
/* unblock flatpanel timing programming (or something like that..) */
|
/* unblock flatpanel timing programming (or something like that..) */
|
||||||
CRTC2W(FP_HTIMING, 0);
|
CRTC2W(FP_HTIMING, 0);
|
||||||
CRTC2W(FP_VTIMING, 0);
|
CRTC2W(FP_VTIMING, 0);
|
||||||
|
LOG(2,("CRTC2: FP_HTIMING reg readback: $%02x\n", CRTC2R(FP_HTIMING)));
|
||||||
|
LOG(2,("CRTC2: FP_VTIMING reg readback: $%02x\n", CRTC2R(FP_VTIMING)));
|
||||||
|
|
||||||
/* enable full width visibility on flatpanel */
|
/* enable full width visibility on flatpanel */
|
||||||
DAC2W(FP_HVALID_S, 0);
|
DAC2W(FP_HVALID_S, 0);
|
||||||
@@ -262,7 +270,8 @@ status_t nv_crtc2_set_timing(display_mode target)
|
|||||||
DAC2W(FP_VVALID_E, (si->ps.panel2_height - 1));
|
DAC2W(FP_VVALID_E, (si->ps.panel2_height - 1));
|
||||||
|
|
||||||
/* nVidia cards support upscaling except on NV11 */
|
/* nVidia cards support upscaling except on NV11 */
|
||||||
if (si->ps.card_type == NV11)
|
//fixme? logfiles tell me this is nonsense...
|
||||||
|
if (0)//si->ps.card_type == NV11)
|
||||||
{
|
{
|
||||||
/* disable last fetched line limiting */
|
/* disable last fetched line limiting */
|
||||||
DAC2W(FP_DEBUG2, 0x00000000);
|
DAC2W(FP_DEBUG2, 0x00000000);
|
||||||
@@ -296,9 +305,6 @@ status_t nv_crtc2_set_timing(display_mode target)
|
|||||||
/* inform panel not to scale */
|
/* inform panel not to scale */
|
||||||
DAC2W(FP_TG_CTRL, (DAC2R(FP_TG_CTRL) & 0xfffffeff));
|
DAC2W(FP_TG_CTRL, (DAC2R(FP_TG_CTRL) & 0xfffffeff));
|
||||||
|
|
||||||
/* disable GPU scaling testmode so automatic scaling is done */
|
|
||||||
DAC2W(FP_DEBUG1, 0);
|
|
||||||
|
|
||||||
/* GPU scaling is automatically setup by hardware, so only modify this
|
/* GPU scaling is automatically setup by hardware, so only modify this
|
||||||
* scalingfactor for non 4:3 (1.33) aspect panels;
|
* scalingfactor for non 4:3 (1.33) aspect panels;
|
||||||
* let's consider 1280x1024 1:33 aspect (it's 1.25 aspect actually!) */
|
* let's consider 1280x1024 1:33 aspect (it's 1.25 aspect actually!) */
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ status_t nv_general_powerup()
|
|||||||
{
|
{
|
||||||
status_t status;
|
status_t status;
|
||||||
|
|
||||||
LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.10-8 running.\n"));
|
LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.10-9 running.\n"));
|
||||||
|
|
||||||
/* preset no laptop */
|
/* preset no laptop */
|
||||||
si->ps.laptop = false;
|
si->ps.laptop = false;
|
||||||
@@ -221,6 +221,7 @@ status_t nv_general_powerup()
|
|||||||
case 0x018110de: /* Nvidia GeForce4 MX 440 AGP8X */
|
case 0x018110de: /* Nvidia GeForce4 MX 440 AGP8X */
|
||||||
case 0x018210de: /* Nvidia GeForce4 MX 440SE AGP8X */
|
case 0x018210de: /* Nvidia GeForce4 MX 440SE AGP8X */
|
||||||
case 0x018310de: /* Nvidia GeForce4 MX 420 AGP8X */
|
case 0x018310de: /* Nvidia GeForce4 MX 420 AGP8X */
|
||||||
|
case 0x018510de: /* Nvidia GeForce4 MX 4000 AGP8X */
|
||||||
si->ps.card_type = NV18;
|
si->ps.card_type = NV18;
|
||||||
si->ps.card_arch = NV10A;
|
si->ps.card_arch = NV10A;
|
||||||
LOG(4,("POWERUP: Detected Nvidia GeForce4 MX AGP8X (NV18)\n"));
|
LOG(4,("POWERUP: Detected Nvidia GeForce4 MX AGP8X (NV18)\n"));
|
||||||
@@ -246,7 +247,7 @@ status_t nv_general_powerup()
|
|||||||
LOG(4,("POWERUP: Detected Nvidia GeForce4 MX AGP8X (NV18)\n"));
|
LOG(4,("POWERUP: Detected Nvidia GeForce4 MX AGP8X (NV18)\n"));
|
||||||
status = nvxx_general_powerup();
|
status = nvxx_general_powerup();
|
||||||
break;
|
break;
|
||||||
case 0x018a10de: /* Nvidia Quadro4 280 NVS */
|
case 0x018a10de: /* Nvidia Quadro4 280 NVS AGP8X */
|
||||||
case 0x018b10de: /* Nvidia Quadro4 380 XGL */
|
case 0x018b10de: /* Nvidia Quadro4 380 XGL */
|
||||||
si->ps.card_type = NV18;
|
si->ps.card_type = NV18;
|
||||||
si->ps.card_arch = NV10A;
|
si->ps.card_arch = NV10A;
|
||||||
@@ -363,10 +364,10 @@ status_t nv_general_powerup()
|
|||||||
LOG(4,("POWERUP: Detected Nvidia unknown FX (NV31)\n"));
|
LOG(4,("POWERUP: Detected Nvidia unknown FX (NV31)\n"));
|
||||||
status = nvxx_general_powerup();
|
status = nvxx_general_powerup();
|
||||||
break;
|
break;
|
||||||
case 0x031410de: /* Nvidia GeForce FX 5600SE */
|
case 0x031410de: /* Nvidia GeForce FX 5600XT */
|
||||||
si->ps.card_type = NV31;
|
si->ps.card_type = NV31;
|
||||||
si->ps.card_arch = NV30A;
|
si->ps.card_arch = NV30A;
|
||||||
LOG(4,("POWERUP: Detected Nvidia GeForce FX 5600SE (NV31)\n"));
|
LOG(4,("POWERUP: Detected Nvidia GeForce FX 5600XT (NV31)\n"));
|
||||||
status = nvxx_general_powerup();
|
status = nvxx_general_powerup();
|
||||||
break;
|
break;
|
||||||
case 0x031610de: /* Nvidia unknown FX Go */
|
case 0x031610de: /* Nvidia unknown FX Go */
|
||||||
@@ -429,11 +430,10 @@ status_t nv_general_powerup()
|
|||||||
LOG(4,("POWERUP: Detected Nvidia GeForce FX 5250 Go (NV34)\n"));
|
LOG(4,("POWERUP: Detected Nvidia GeForce FX 5250 Go (NV34)\n"));
|
||||||
status = nvxx_general_powerup();
|
status = nvxx_general_powerup();
|
||||||
break;
|
break;
|
||||||
case 0x032610de: /* Nvidia unknown FX Go */
|
case 0x032610de: /* Nvidia GeForce FX 5500 */
|
||||||
si->ps.card_type = NV34;
|
si->ps.card_type = NV34;
|
||||||
si->ps.card_arch = NV30A;
|
si->ps.card_arch = NV30A;
|
||||||
si->ps.laptop = true;
|
LOG(4,("POWERUP: Detected Nvidia GeForce FX 5500 (NV34)\n"));
|
||||||
LOG(4,("POWERUP: Detected Nvidia unknown FX Go (NV34)\n"));
|
|
||||||
status = nvxx_general_powerup();
|
status = nvxx_general_powerup();
|
||||||
break;
|
break;
|
||||||
case 0x032810de: /* Nvidia GeForce FX 5200 Go 32M/64M */
|
case 0x032810de: /* Nvidia GeForce FX 5200 Go 32M/64M */
|
||||||
@@ -511,6 +511,8 @@ status_t nv_general_powerup()
|
|||||||
break;
|
break;
|
||||||
case 0x034110de: /* Nvidia GeForce FX 5700 Ultra */
|
case 0x034110de: /* Nvidia GeForce FX 5700 Ultra */
|
||||||
case 0x034210de: /* Nvidia GeForce FX 5700 */
|
case 0x034210de: /* Nvidia GeForce FX 5700 */
|
||||||
|
case 0x034310de: /* Nvidia GeForce FX 5700LE */
|
||||||
|
case 0x034410de: /* Nvidia GeForce FX 5700VE */
|
||||||
si->ps.card_type = NV36;
|
si->ps.card_type = NV36;
|
||||||
si->ps.card_arch = NV30A;
|
si->ps.card_arch = NV30A;
|
||||||
LOG(4,("POWERUP: Detected Nvidia GeForce FX 5700 (NV36)\n"));
|
LOG(4,("POWERUP: Detected Nvidia GeForce FX 5700 (NV36)\n"));
|
||||||
|
|||||||
@@ -312,58 +312,82 @@ static void detect_panels()
|
|||||||
* relying on the cards BIOS to do it. This adds TVout options where panels
|
* relying on the cards BIOS to do it. This adds TVout options where panels
|
||||||
* are used!
|
* are used!
|
||||||
* Currently we'd loose the panel setup while not being able to restore it. */
|
* Currently we'd loose the panel setup while not being able to restore it. */
|
||||||
|
|
||||||
/* Note:
|
/* Note:
|
||||||
* NV11 and NV17 cards can't distinquish between head 1 and head 2. */
|
* NV11 and NV17 cards can't distinquish between head 1 and head 2 except for
|
||||||
if (slaved_for_dev1 && !tvout1)
|
* connected laptop panels via the FP_TG_CTRL register (the DAC and DAC2
|
||||||
|
* flatpanel registers access the same single set on those cards!);
|
||||||
|
* furthermore assuming that no DVI exist on non-laptop cards upto and
|
||||||
|
* including NV17 (for now). */
|
||||||
|
//fixme: how about NV18?
|
||||||
|
if (((si->ps.card_type <= NV17) && si->ps.laptop &&
|
||||||
|
(!(DACR(FP_TG_CTRL) & 0x80000000))) || (si->ps.card_type > NV17))
|
||||||
{
|
{
|
||||||
uint16 width = ((DACR(FP_HDISPEND) & 0x0000ffff) + 1);
|
if (slaved_for_dev1 && !tvout1)
|
||||||
uint16 height = ((DACR(FP_VDISPEND) & 0x0000ffff) + 1);
|
|
||||||
if ((width >= 640) && (height >= 480))
|
|
||||||
{
|
{
|
||||||
si->ps.slaved_tmds1 = true;
|
uint16 width = ((DACR(FP_HDISPEND) & 0x0000ffff) + 1);
|
||||||
si->ps.tmds1_active = true;
|
uint16 height = ((DACR(FP_VDISPEND) & 0x0000ffff) + 1);
|
||||||
si->ps.panel1_width = width;
|
if ((width >= 640) && (height >= 480))
|
||||||
si->ps.panel1_height = height;
|
{
|
||||||
|
si->ps.slaved_tmds1 = true;
|
||||||
|
si->ps.tmds1_active = true;
|
||||||
|
si->ps.panel1_width = width;
|
||||||
|
si->ps.panel1_height = height;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//fixme?!?: how about NV18??, CRTC2 has panel instead of CRTC1???
|
|
||||||
if ((si->ps.card_type != NV11) && (si->ps.card_type != NV17) &&
|
//fixme: how about NV18?
|
||||||
si->ps.secondary_head && slaved_for_dev2 && !tvout2)
|
if (((si->ps.card_type <= NV17) && si->ps.laptop &&
|
||||||
|
(DAC2R(FP_TG_CTRL) & 0x80000000)) || (si->ps.card_type > NV17))
|
||||||
{
|
{
|
||||||
uint16 width = ((DAC2R(FP_HDISPEND) & 0x0000ffff) + 1);
|
if (si->ps.secondary_head && slaved_for_dev2 && !tvout2)
|
||||||
uint16 height = ((DAC2R(FP_VDISPEND) & 0x0000ffff) + 1);
|
|
||||||
if ((width >= 640) && (height >= 480))
|
|
||||||
{
|
{
|
||||||
si->ps.slaved_tmds2 = true;
|
uint16 width = ((DAC2R(FP_HDISPEND) & 0x0000ffff) + 1);
|
||||||
si->ps.tmds2_active = true;
|
uint16 height = ((DAC2R(FP_VDISPEND) & 0x0000ffff) + 1);
|
||||||
si->ps.panel2_width = width;
|
if ((width >= 640) && (height >= 480))
|
||||||
si->ps.panel2_height = height;
|
{
|
||||||
|
si->ps.slaved_tmds2 = true;
|
||||||
|
si->ps.tmds2_active = true;
|
||||||
|
si->ps.panel2_width = width;
|
||||||
|
si->ps.panel2_height = height;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!si->ps.slaved_tmds1 && !tvout1)
|
|
||||||
|
//fixme: how about NV18?
|
||||||
|
if (((si->ps.card_type <= NV17) && si->ps.laptop &&
|
||||||
|
(!(DACR(FP_TG_CTRL) & 0x80000000))) || (si->ps.card_type > NV17))
|
||||||
{
|
{
|
||||||
uint16 width = ((DACR(FP_HDISPEND) & 0x0000ffff) + 1);
|
if (!si->ps.slaved_tmds1 && !tvout1)
|
||||||
uint16 height = ((DACR(FP_VDISPEND) & 0x0000ffff) + 1);
|
|
||||||
if ((width >= 640) && (height >= 480))
|
|
||||||
{
|
{
|
||||||
si->ps.master_tmds1 = true;
|
uint16 width = ((DACR(FP_HDISPEND) & 0x0000ffff) + 1);
|
||||||
si->ps.tmds1_active = true;
|
uint16 height = ((DACR(FP_VDISPEND) & 0x0000ffff) + 1);
|
||||||
si->ps.panel1_width = width;
|
if ((width >= 640) && (height >= 480))
|
||||||
si->ps.panel1_height = height;
|
{
|
||||||
|
si->ps.master_tmds1 = true;
|
||||||
|
si->ps.tmds1_active = true;
|
||||||
|
si->ps.panel1_width = width;
|
||||||
|
si->ps.panel1_height = height;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//fixme?!?: how about NV18??, CRTC2 has panel instead of CRTC1???
|
|
||||||
if ((si->ps.card_type != NV11) && (si->ps.card_type != NV17) &&
|
//fixme: how about NV18?
|
||||||
si->ps.secondary_head && !si->ps.slaved_tmds2 && !tvout2)
|
if (((si->ps.card_type <= NV17) && si->ps.laptop &&
|
||||||
|
(DAC2R(FP_TG_CTRL) & 0x80000000)) || (si->ps.card_type > NV17))
|
||||||
{
|
{
|
||||||
uint16 width = ((DAC2R(FP_HDISPEND) & 0x0000ffff) + 1);
|
if (si->ps.secondary_head && !si->ps.slaved_tmds2 && !tvout2)
|
||||||
uint16 height = ((DAC2R(FP_VDISPEND) & 0x0000ffff) + 1);
|
|
||||||
if ((width >= 640) && (height >= 480))
|
|
||||||
{
|
{
|
||||||
si->ps.master_tmds2 = true;
|
uint16 width = ((DAC2R(FP_HDISPEND) & 0x0000ffff) + 1);
|
||||||
si->ps.tmds2_active = true;
|
uint16 height = ((DAC2R(FP_VDISPEND) & 0x0000ffff) + 1);
|
||||||
si->ps.panel2_width = width;
|
if ((width >= 640) && (height >= 480))
|
||||||
si->ps.panel2_height = height;
|
{
|
||||||
|
si->ps.master_tmds2 = true;
|
||||||
|
si->ps.tmds2_active = true;
|
||||||
|
si->ps.panel2_width = width;
|
||||||
|
si->ps.panel2_height = height;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -400,6 +424,8 @@ static void detect_panels()
|
|||||||
LOG(2,("DAC1: FP_DEBUG2: $%08x = (dec) %d\n", DACR(FP_DEBUG2),DACR(FP_DEBUG2)));
|
LOG(2,("DAC1: FP_DEBUG2: $%08x = (dec) %d\n", DACR(FP_DEBUG2),DACR(FP_DEBUG2)));
|
||||||
LOG(2,("DAC1: FP_DEBUG3: $%08x = (dec) %d\n", DACR(FP_DEBUG3),DACR(FP_DEBUG3)));
|
LOG(2,("DAC1: FP_DEBUG3: $%08x = (dec) %d\n", DACR(FP_DEBUG3),DACR(FP_DEBUG3)));
|
||||||
|
|
||||||
|
LOG(2,("DAC1: FUNCSEL: $%08x\n", NV_REG32(NV32_FUNCSEL)));
|
||||||
|
|
||||||
if(si->ps.secondary_head)
|
if(si->ps.secondary_head)
|
||||||
{
|
{
|
||||||
LOG(2,("DAC2: FP_HDISPEND: $%08x = (dec) %d\n", DAC2R(FP_HDISPEND),DAC2R(FP_HDISPEND)));
|
LOG(2,("DAC2: FP_HDISPEND: $%08x = (dec) %d\n", DAC2R(FP_HDISPEND),DAC2R(FP_HDISPEND)));
|
||||||
@@ -425,6 +451,8 @@ static void detect_panels()
|
|||||||
LOG(2,("DAC2: FP_DEBUG1: $%08x = (dec) %d\n", DAC2R(FP_DEBUG1),DAC2R(FP_DEBUG1)));
|
LOG(2,("DAC2: FP_DEBUG1: $%08x = (dec) %d\n", DAC2R(FP_DEBUG1),DAC2R(FP_DEBUG1)));
|
||||||
LOG(2,("DAC2: FP_DEBUG2: $%08x = (dec) %d\n", DAC2R(FP_DEBUG2),DAC2R(FP_DEBUG2)));
|
LOG(2,("DAC2: FP_DEBUG2: $%08x = (dec) %d\n", DAC2R(FP_DEBUG2),DAC2R(FP_DEBUG2)));
|
||||||
LOG(2,("DAC2: FP_DEBUG3: $%08x = (dec) %d\n", DAC2R(FP_DEBUG3),DAC2R(FP_DEBUG3)));
|
LOG(2,("DAC2: FP_DEBUG3: $%08x = (dec) %d\n", DAC2R(FP_DEBUG3),DAC2R(FP_DEBUG3)));
|
||||||
|
|
||||||
|
LOG(2,("DAC2: FUNCSEL: $%08x\n", NV_REG32(NV32_2FUNCSEL)));
|
||||||
}
|
}
|
||||||
LOG(2,("INFO: End flatpanel registers dump.\n"));
|
LOG(2,("INFO: End flatpanel registers dump.\n"));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<p><h2>Changes done for each driverversion:</h2></p>
|
<p><h2>Changes done for each driverversion:</h2></p>
|
||||||
<p><h1>head (0.10-8), (Rudolf)</h1></p>
|
<p><h1>head (0.10-9), (Rudolf)</h1></p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Implemented laptop internal flatpanel presence and native resolution detection;
|
<li>Implemented laptop internal flatpanel presence and native resolution detection;
|
||||||
<li>Implemented external DVI flatpanel(s) presence and native resolution detection;
|
<li>Implemented external DVI flatpanel(s) presence and native resolution detection;
|
||||||
@@ -12,7 +12,10 @@
|
|||||||
<li>Added flatpanel specific CRTC modeline and DFP modeline tuning: DVI connected panels work now on both heads (if applicable);
|
<li>Added flatpanel specific CRTC modeline and DFP modeline tuning: DVI connected panels work now on both heads (if applicable);
|
||||||
<li>Fixed fullscreen overlay on DVI panels;
|
<li>Fixed fullscreen overlay on DVI panels;
|
||||||
<li>Added aspect correction programming for flatpanels: corrects if mode aspect differs too much from panel aspect;
|
<li>Added aspect correction programming for flatpanels: corrects if mode aspect differs too much from panel aspect;
|
||||||
<li>Fixed acceleration engine management regarding sync_to_token: no more updating glitches should occur now.
|
<li>Added flatpanel LVDS and TMDS transmitters powerup if a panel is detected;
|
||||||
|
<li>Updated NV11 and NV17 panel detection code: head should be identified correctly now;
|
||||||
|
<li>Fixed acceleration engine management regarding sync_to_token: no more updating glitches should occur now;
|
||||||
|
<li>Added recognition for GeForce4 MX 4000, GeForceFX 5700LE and GeForceFX 5700VE cards; also modified a few others to be more correct.
|
||||||
</ul>
|
</ul>
|
||||||
NOTE:<br>
|
NOTE:<br>
|
||||||
dualhead switch mode is not yet operational for flatpanels...
|
dualhead switch mode is not yet operational for flatpanels...
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
Other authors:
|
Other authors:
|
||||||
Mark Watson;
|
Mark Watson;
|
||||||
Rudolf Cornelissen 3/2002-1/2004.
|
Rudolf Cornelissen 3/2002-3/2004.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* standard kernel driver stuff */
|
/* standard kernel driver stuff */
|
||||||
@@ -135,11 +135,12 @@ static uint16 nvidia_device_list[] = {
|
|||||||
0x0181, /* Nvidia GeForce4 MX 440 AGP8X */
|
0x0181, /* Nvidia GeForce4 MX 440 AGP8X */
|
||||||
0x0182, /* Nvidia GeForce4 MX 440SE AGP8X */
|
0x0182, /* Nvidia GeForce4 MX 440SE AGP8X */
|
||||||
0x0183, /* Nvidia GeForce4 MX 420 AGP8X */
|
0x0183, /* Nvidia GeForce4 MX 420 AGP8X */
|
||||||
|
0x0185, /* Nvidia GeForce4 MX 4000 AGP8X */
|
||||||
0x0186, /* Nvidia GeForce4 448 Go */
|
0x0186, /* Nvidia GeForce4 448 Go */
|
||||||
0x0187, /* Nvidia GeForce4 488 Go */
|
0x0187, /* Nvidia GeForce4 488 Go */
|
||||||
0x0188, /* Nvidia Quadro4 580 XGL */
|
0x0188, /* Nvidia Quadro4 580 XGL */
|
||||||
0x0189, /* Nvidia GeForce4 MX AGP8X */
|
0x0189, /* Nvidia GeForce4 MX AGP8X */
|
||||||
0x018a, /* Nvidia Quadro4 280 NVS */
|
0x018a, /* Nvidia Quadro4 280 NVS AGP8X */
|
||||||
0x018b, /* Nvidia Quadro4 380 XGL */
|
0x018b, /* Nvidia Quadro4 380 XGL */
|
||||||
0x01a0, /* Nvidia GeForce2 Integrated GPU */
|
0x01a0, /* Nvidia GeForce2 Integrated GPU */
|
||||||
0x01f0, /* Nvidia GeForce4 MX Integrated GPU */
|
0x01f0, /* Nvidia GeForce4 MX Integrated GPU */
|
||||||
@@ -169,7 +170,7 @@ static uint16 nvidia_device_list[] = {
|
|||||||
0x0311, /* Nvidia GeForce FX 5600 Ultra */
|
0x0311, /* Nvidia GeForce FX 5600 Ultra */
|
||||||
0x0312, /* Nvidia GeForce FX 5600 */
|
0x0312, /* Nvidia GeForce FX 5600 */
|
||||||
0x0313, /* Nvidia unknown FX */
|
0x0313, /* Nvidia unknown FX */
|
||||||
0x0314, /* Nvidia GeForce FX 5600SE */
|
0x0314, /* Nvidia GeForce FX 5600XT */
|
||||||
0x0316, /* Nvidia unknown FX Go */
|
0x0316, /* Nvidia unknown FX Go */
|
||||||
0x0317, /* Nvidia unknown FX Go */
|
0x0317, /* Nvidia unknown FX Go */
|
||||||
0x031a, /* Nvidia GeForce FX 5600 Go */
|
0x031a, /* Nvidia GeForce FX 5600 Go */
|
||||||
@@ -183,7 +184,7 @@ static uint16 nvidia_device_list[] = {
|
|||||||
0x0323, /* Nvidia GeForce FX 5200SE */
|
0x0323, /* Nvidia GeForce FX 5200SE */
|
||||||
0x0324, /* Nvidia GeForce FX 5200 Go */
|
0x0324, /* Nvidia GeForce FX 5200 Go */
|
||||||
0x0325, /* Nvidia GeForce FX 5250 Go */
|
0x0325, /* Nvidia GeForce FX 5250 Go */
|
||||||
0x0326, /* Nvidia unknown FX Go */
|
0x0326, /* Nvidia GeForce FX 5500 */
|
||||||
0x0328, /* Nvidia GeForce FX 5200 Go 32M/64M */
|
0x0328, /* Nvidia GeForce FX 5200 Go 32M/64M */
|
||||||
0x0329, /* Nvidia GeForce FX 5200 (PPC) */
|
0x0329, /* Nvidia GeForce FX 5200 (PPC) */
|
||||||
0x032a, /* Nvidia Quadro NVS 280 PCI */
|
0x032a, /* Nvidia Quadro NVS 280 PCI */
|
||||||
@@ -200,13 +201,14 @@ static uint16 nvidia_device_list[] = {
|
|||||||
0x0338, /* Nvidia Quadro FX 3000 */
|
0x0338, /* Nvidia Quadro FX 3000 */
|
||||||
0x0341, /* Nvidia GeForce FX 5700 Ultra */
|
0x0341, /* Nvidia GeForce FX 5700 Ultra */
|
||||||
0x0342, /* Nvidia GeForce FX 5700 */
|
0x0342, /* Nvidia GeForce FX 5700 */
|
||||||
|
0x0343, /* Nvidia GeForce FX 5700LE */
|
||||||
|
0x0344, /* Nvidia GeForce FX 5700VE */
|
||||||
0x034e, /* Nvidia Quadro FX 1100 */
|
0x034e, /* Nvidia Quadro FX 1100 */
|
||||||
0x034f, /* Nvidia unknown FX */
|
0x034f, /* Nvidia unknown FX */
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
/*
|
/*
|
||||||
not yet included nVidia ID's that are unknown, but used apparantly:
|
not yet included nVidia ID's that are unknown, but used apparantly:
|
||||||
0x0343
|
|
||||||
0x0347
|
0x0347
|
||||||
0x0348
|
0x0348
|
||||||
0x0349
|
0x0349
|
||||||
|
|||||||
Reference in New Issue
Block a user