xserver-xorg-video-nv: Changes to 'upstream-unstable'
configure.ac | 2
src/Makefile.am | 2
src/g80_dac.c | 6 +
src/g80_display.c | 11 ++-
src/g80_sor.c | 48 +++++++++----
src/nv_driver.c | 2
src/nvreg.h | 195 ------------------------------------------------------
src/nvvga.h | 80 ----------------------
8 files changed, 51 insertions(+), 295 deletions(-)
New commits:
commit d483ecd851bb84014f1fa86f0ada4540b3ad801e
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Tue Nov 13 17:18:10 2007 -0800
G80: Reduce load detection false positives.
diff --git a/src/g80_dac.c b/src/g80_dac.c
index 30413cd..b155d2d 100644
--- a/src/g80_dac.c
+++ b/src/g80_dac.c
@@ -29,6 +29,7 @@
#define DPMS_SERVER
#include <X11/extensions/dpms.h>
+#include <xf86_OSproc.h>
#include "g80_type.h"
#include "g80_display.h"
@@ -134,6 +135,7 @@ G80DacLoadDetect(xf86OutputPtr output)
G80OutputPrivPtr pPriv = output->driver_private;
const int scrnIndex = pScrn->scrnIndex;
const int dacOff = 2048 * pPriv->or;
+ int sigstate;
CARD32 load, tmp, tmp2;
xf86DrvMsg(scrnIndex, X_PROBED, "Trying load detection on VGA%i ... ",
@@ -145,7 +147,9 @@ G80DacLoadDetect(xf86OutputPtr output)
while(pNv->reg[(0x0061A004+dacOff)/4] & 0x80000000);
tmp = pNv->architecture == 0x50 ? 420 : 340;
pNv->reg[(0x0061A00C+dacOff)/4] = tmp | 0x100000;
- usleep(4500);
+ sigstate = xf86BlockSIGIO();
+ usleep(45000);
+ xf86UnblockSIGIO(sigstate);
load = pNv->reg[(0x0061A00C+dacOff)/4];
pNv->reg[(0x0061A00C+dacOff)/4] = 0;
pNv->reg[(0x0061A004+dacOff)/4] = 0x80000000 | tmp2;
commit 4da88cb3dd13a86c477389c5b2d42d7d40ce2023
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Nov 2 16:56:35 2007 -0700
GeForce 8800 GT.
diff --git a/src/nv_driver.c b/src/nv_driver.c
index 5141570..265979e 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -383,6 +383,7 @@ static SymTabRec NVKnownChipsets[] =
{ 0x10DE042B, "Quadro NVS 135M" },
{ 0x10DE042D, "Quadro FX 360M" },
{ 0x10DE042F, "Quadro NVS 290" },
+ { 0x10DE0611, "GeForce 8800 GT" },
{-1, NULL}
};
@@ -748,6 +749,7 @@ NVIsG80(int chipType)
case 0x0190:
case 0x0400:
case 0x0420:
+ case 0x0610:
return TRUE;
}
commit 58dbd31953d0e2f30d06b3fc5118a016a17666fe
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Tue Oct 23 13:17:27 2007 -0700
Bump to 2.1.6.
diff --git a/configure.ac b/configure.ac
index 75da1b7..49a0679 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
AC_PREREQ(2.57)
AC_INIT([xf86-video-nv],
- 2.1.5,
+ 2.1.6,
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
xf86-video-nv)
commit 0887084730af8428e902dabc6e00c505f383f57f
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Sun Oct 14 14:15:07 2007 -0700
G80 bug #12397: Fix LVDS detection on certain laptops.
diff --git a/src/g80_sor.c b/src/g80_sor.c
index c98b66d..e1128ef 100644
--- a/src/g80_sor.c
+++ b/src/g80_sor.c
@@ -427,20 +427,20 @@ static const xf86OutputFuncsRec G80SorLVDSOutputFuncs = {
};
static DisplayModePtr
-GetLVDSNativeMode(G80Ptr pNv)
+ReadLVDSNativeMode(G80Ptr pNv, const int off)
{
DisplayModePtr mode = xnfcalloc(1, sizeof(DisplayModeRec));
- const CARD32 size = pNv->reg[0x00610B4C/4];
+ const CARD32 size = pNv->reg[(0x00610B4C+off)/4];
const int width = size & 0x3fff;
const int height = (size >> 16) & 0x3fff;
mode->HDisplay = mode->CrtcHDisplay = width;
mode->VDisplay = mode->CrtcVDisplay = height;
- mode->Clock = pNv->reg[0x610AD4/4] & 0x3fffff;
- mode->CrtcHBlankStart = pNv->reg[0x610AFC/4];
- mode->CrtcHSyncEnd = pNv->reg[0x610B04/4];
- mode->CrtcHBlankEnd = pNv->reg[0x610AE8/4];
- mode->CrtcHTotal = pNv->reg[0x610AF4/4];
+ mode->Clock = pNv->reg[(0x610AD4+off)/4] & 0x3fffff;
+ mode->CrtcHBlankStart = pNv->reg[(0x610AFC+off)/4];
+ mode->CrtcHSyncEnd = pNv->reg[(0x610B04+off)/4];
+ mode->CrtcHBlankEnd = pNv->reg[(0x610AE8+off)/4];
+ mode->CrtcHTotal = pNv->reg[(0x610AF4+off)/4];
mode->next = mode->prev = NULL;
mode->status = MODE_OK;
@@ -451,6 +451,19 @@ GetLVDSNativeMode(G80Ptr pNv)
return mode;
}
+static DisplayModePtr
+GetLVDSNativeMode(G80Ptr pNv)
+{
+ CARD32 val = pNv->reg[0x00610050/4];
+
+ if((val & 3) == 2)
+ return ReadLVDSNativeMode(pNv, 0);
+ else if((val & 0x300) == 0x200)
+ return ReadLVDSNativeMode(pNv, 0x540);
+
+ return NULL;
+}
+
xf86OutputPtr
G80CreateSor(ScrnInfoPtr pScrn, ORNum or, PanelType panelType)
{
@@ -467,6 +480,19 @@ G80CreateSor(ScrnInfoPtr pScrn, ORNum or, PanelType panelType)
if(panelType == LVDS) {
strcpy(orName, "LVDS");
funcs = &G80SorLVDSOutputFuncs;
+
+ pPriv->nativeMode = GetLVDSNativeMode(pNv);
+
+ if(!pPriv->nativeMode) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Failed to find LVDS native mode\n");
+ xfree(pPriv);
+ return FALSE;
+ }
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "%s native size %dx%d\n",
+ orName, pPriv->nativeMode->HDisplay,
+ pPriv->nativeMode->VDisplay);
} else {
snprintf(orName, 5, "DVI%d", or);
pNv->reg[(0x61C00C+off)/4] = 0x03010700;
@@ -488,13 +514,5 @@ G80CreateSor(ScrnInfoPtr pScrn, ORNum or, PanelType panelType)
output->interlaceAllowed = TRUE;
output->doubleScanAllowed = TRUE;
- if(panelType == LVDS) {
- pPriv->nativeMode = GetLVDSNativeMode(pNv);
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "%s native size %dx%d\n",
- orName, pPriv->nativeMode->HDisplay,
- pPriv->nativeMode->VDisplay);
- }
-
return output;
}
commit 1003bcbe4381201f1d7b34dc1af72f57b2943b67
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Sat Oct 13 14:36:49 2007 -0700
G80 bug #12637: Unwedge the hardware if the BIOS left it stuck.
diff --git a/src/g80_display.c b/src/g80_display.c
index 6c95773..dda1c7f 100644
--- a/src/g80_display.c
+++ b/src/g80_display.c
@@ -250,6 +250,7 @@ Bool
G80DispInit(ScrnInfoPtr pScrn)
{
G80Ptr pNv = G80PTR(pScrn);
+ CARD32 val;
if(pNv->reg[0x00610024/4] & 0x100) {
pNv->reg[0x00610024/4] = 0x100;
@@ -258,7 +259,15 @@ G80DispInit(ScrnInfoPtr pScrn)
}
pNv->reg[0x00610200/4] = 0x2b00;
- while((pNv->reg[0x00610200/4] & 0x1e0000) != 0);
+ do {
+ val = pNv->reg[0x00610200/4];
+
+ if ((val & 0x9f0000) == 0x20000)
+ pNv->reg[0x00610200/4] = val | 0x800000;
+
+ if ((val & 0x3f0000) == 0x30000)
+ pNv->reg[0x00610200/4] = val | 0x200000;
+ } while ((val & 0x1e0000) != 0);
pNv->reg[0x00610300/4] = 1;
pNv->reg[0x00610200/4] = 0x1000b03;
while(!(pNv->reg[0x00610200/4] & 0x40000000));
commit 1e12277650dff10b1083915cb73961525e21a471
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Sat Oct 13 13:50:04 2007 -0700
Remove unused headers.
diff --git a/src/Makefile.am b/src/Makefile.am
index e2166fe..b7eacad 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -41,11 +41,9 @@ nv_sources = \
nv_include.h \
nv_local.h \
nv_proto.h \
- nvreg.h \
nv_setup.c \
nv_shadow.c \
nv_type.h \
- nvvga.h \
nv_video.c \
nv_xaa.c
diff --git a/src/nvreg.h b/src/nvreg.h
deleted file mode 100644
index aa12b0c..0000000
--- a/src/nvreg.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright 1996-1997 David J. McKay
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * DAVID J. MCKAY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef __NVREG_H_
-#define __NVREG_H_
-
-/* Little macro to construct bitmask for contiguous ranges of bits */
-#define BITMASK(t,b) (((unsigned)(1U << (((t)-(b)+1)))-1) << (b))
-#define MASKEXPAND(mask) BITMASK(1?mask,0?mask)
-
-/* Macro to set specific bitfields (mask has to be a macro x:y) ! */
-#define SetBF(mask,value) ((value) << (0?mask))
-#define GetBF(var,mask) (((unsigned)((var) & MASKEXPAND(mask))) >> (0?mask) )
-
-#define MaskAndSetBF(var,mask,value) (var)=(((var)&(~MASKEXPAND(mask)) \
- | SetBF(mask,value)))
-
-#define DEVICE_BASE(device) (0?NV##_##device)
-#define DEVICE_SIZE(device) ((1?NV##_##device) - DEVICE_BASE(device)+1)
-
-/* This is where we will have to have conditional compilation */
-#define DEVICE_ACCESS(device,reg) \
- nv##device##Port[((NV_##device##_##reg)-DEVICE_BASE(device))/4]
-
-#define DEVICE_WRITE(device,reg,value) DEVICE_ACCESS(device,reg)=(value)
-#define DEVICE_READ(device,reg) DEVICE_ACCESS(device,reg)
-#define DEVICE_PRINT(device,reg) \
- ErrorF("NV_"#device"_"#reg"=#%08lx\n",DEVICE_ACCESS(device,reg))
-#define DEVICE_DEF(device,mask,value) \
- SetBF(NV_##device##_##mask,NV_##device##_##mask##_##value)
-#define DEVICE_VALUE(device,mask,value) SetBF(NV_##device##_##mask,value)
-#define DEVICE_MASK(device,mask) MASKEXPAND(NV_##device##_##mask)
-
-#define PDAC_Write(reg,value) DEVICE_WRITE(PDAC,reg,value)
-#define PDAC_Read(reg) DEVICE_READ(PDAC,reg)
-#define PDAC_Print(reg) DEVICE_PRINT(PDAC,reg)
-#define PDAC_Def(mask,value) DEVICE_DEF(PDAC,mask,value)
-#define PDAC_Val(mask,value) DEVICE_VALUE(PDAC,mask,value)
-#define PDAC_Mask(mask) DEVICE_MASK(PDAC,mask)
-
-#define PFB_Write(reg,value) DEVICE_WRITE(PFB,reg,value)
-#define PFB_Read(reg) DEVICE_READ(PFB,reg)
-#define PFB_Print(reg) DEVICE_PRINT(PFB,reg)
-#define PFB_Def(mask,value) DEVICE_DEF(PFB,mask,value)
-#define PFB_Val(mask,value) DEVICE_VALUE(PFB,mask,value)
-#define PFB_Mask(mask) DEVICE_MASK(PFB,mask)
-
-#define PRM_Write(reg,value) DEVICE_WRITE(PRM,reg,value)
-#define PRM_Read(reg) DEVICE_READ(PRM,reg)
-#define PRM_Print(reg) DEVICE_PRINT(PRM,reg)
-#define PRM_Def(mask,value) DEVICE_DEF(PRM,mask,value)
-#define PRM_Val(mask,value) DEVICE_VALUE(PRM,mask,value)
-#define PRM_Mask(mask) DEVICE_MASK(PRM,mask)
-
-#define PGRAPH_Write(reg,value) DEVICE_WRITE(PGRAPH,reg,value)
-#define PGRAPH_Read(reg) DEVICE_READ(PGRAPH,reg)
-#define PGRAPH_Print(reg) DEVICE_PRINT(PGRAPH,reg)
-#define PGRAPH_Def(mask,value) DEVICE_DEF(PGRAPH,mask,value)
-#define PGRAPH_Val(mask,value) DEVICE_VALUE(PGRAPH,mask,value)
-#define PGRAPH_Mask(mask) DEVICE_MASK(PGRAPH,mask)
-
-#define PDMA_Write(reg,value) DEVICE_WRITE(PDMA,reg,value)
-#define PDMA_Read(reg) DEVICE_READ(PDMA,reg)
-#define PDMA_Print(reg) DEVICE_PRINT(PDMA,reg)
-#define PDMA_Def(mask,value) DEVICE_DEF(PDMA,mask,value)
-#define PDMA_Val(mask,value) DEVICE_VALUE(PDMA,mask,value)
-#define PDMA_Mask(mask) DEVICE_MASK(PDMA,mask)
-
-#define PTIMER_Write(reg,value) DEVICE_WRITE(PTIMER,reg,value)
-#define PTIMER_Read(reg) DEVICE_READ(PTIMER,reg)
-#define PTIMER_Print(reg) DEVICE_PRINT(PTIMER,reg)
-#define PTIMER_Def(mask,value) DEVICE_DEF(PTIMER,mask,value)
-#define PTIMER_Val(mask,value) DEVICE_VALUE(PTIEMR,mask,value)
-#define PTIMER_Mask(mask) DEVICE_MASK(PTIMER,mask)
-
-#define PEXTDEV_Write(reg,value) DEVICE_WRITE(PEXTDEV,reg,value)
-#define PEXTDEV_Read(reg) DEVICE_READ(PEXTDEV,reg)
-#define PEXTDEV_Print(reg) DEVICE_PRINT(PEXTDEV,reg)
-#define PEXTDEV_Def(mask,value) DEVICE_DEF(PEXTDEV,mask,value)
-#define PEXTDEV_Val(mask,value) DEVICE_VALUE(PEXTDEV,mask,value)
-#define PEXTDEV_Mask(mask) DEVICE_MASK(PEXTDEV,mask)
-
-#define PFIFO_Write(reg,value) DEVICE_WRITE(PFIFO,reg,value)
-#define PFIFO_Read(reg) DEVICE_READ(PFIFO,reg)
-#define PFIFO_Print(reg) DEVICE_PRINT(PFIFO,reg)
-#define PFIFO_Def(mask,value) DEVICE_DEF(PFIFO,mask,value)
-#define PFIFO_Val(mask,value) DEVICE_VALUE(PFIFO,mask,value)
-#define PFIFO_Mask(mask) DEVICE_MASK(PFIFO,mask)
-
-#define PRAM_Write(reg,value) DEVICE_WRITE(PRAM,reg,value)
-#define PRAM_Read(reg) DEVICE_READ(PRAM,reg)
-#define PRAM_Print(reg) DEVICE_PRINT(PRAM,reg)
-#define PRAM_Def(mask,value) DEVICE_DEF(PRAM,mask,value)
-#define PRAM_Val(mask,value) DEVICE_VALUE(PRAM,mask,value)
-#define PRAM_Mask(mask) DEVICE_MASK(PRAM,mask)
-
-#define PRAMFC_Write(reg,value) DEVICE_WRITE(PRAMFC,reg,value)
-#define PRAMFC_Read(reg) DEVICE_READ(PRAMFC,reg)
-#define PRAMFC_Print(reg) DEVICE_PRINT(PRAMFC,reg)
-#define PRAMFC_Def(mask,value) DEVICE_DEF(PRAMFC,mask,value)
-#define PRAMFC_Val(mask,value) DEVICE_VALUE(PRAMFC,mask,value)
-#define PRAMFC_Mask(mask) DEVICE_MASK(PRAMFC,mask)
-
-#define PMC_Write(reg,value) DEVICE_WRITE(PMC,reg,value)
-#define PMC_Read(reg) DEVICE_READ(PMC,reg)
-#define PMC_Print(reg) DEVICE_PRINT(PMC,reg)
-#define PMC_Def(mask,value) DEVICE_DEF(PMC,mask,value)
-#define PMC_Val(mask,value) DEVICE_VALUE(PMC,mask,value)
-#define PMC_Mask(mask) DEVICE_MASK(PMC,mask)
-
-#define PMC_Write(reg,value) DEVICE_WRITE(PMC,reg,value)
-#define PMC_Read(reg) DEVICE_READ(PMC,reg)
-#define PMC_Print(reg) DEVICE_PRINT(PMC,reg)
-#define PMC_Def(mask,value) DEVICE_DEF(PMC,mask,value)
-#define PMC_Val(mask,value) DEVICE_VALUE(PMC,mask,value)
-#define PMC_Mask(mask) DEVICE_MASK(PMC,mask)
-
-
-#define PBUS_Write(reg,value) DEVICE_WRITE(PBUS,reg,value)
-#define PBUS_Read(reg) DEVICE_READ(PBUS,reg)
-#define PBUS_Print(reg) DEVICE_PRINT(PBUS,reg)
-#define PBUS_Def(mask,value) DEVICE_DEF(PBUS,mask,value)
-#define PBUS_Val(mask,value) DEVICE_VALUE(PBUS,mask,value)
-#define PBUS_Mask(mask) DEVICE_MASK(PBUS,mask)
-
-
-#define PRAMDAC_Write(reg,value) DEVICE_WRITE(PRAMDAC,reg,value)
-#define PRAMDAC_Read(reg) DEVICE_READ(PRAMDAC,reg)
-#define PRAMDAC_Print(reg) DEVICE_PRINT(PRAMDAC,reg)
-#define PRAMDAC_Def(mask,value) DEVICE_DEF(PRAMDAC,mask,value)
-#define PRAMDAC_Val(mask,value) DEVICE_VALUE(PRAMDAC,mask,value)
-#define PRAMDAC_Mask(mask) DEVICE_MASK(PRAMDAC,mask)
-
-
-#define PDAC_ReadExt(reg) \
- ((PDAC_Write(INDEX_LO,(NV_PDAC_EXT_##reg) & 0xff)),\
- (PDAC_Write(INDEX_HI,((NV_PDAC_EXT_##reg) >> 8) & 0xff)),\
- (PDAC_Read(INDEX_DATA)))
-
-#define PDAC_WriteExt(reg,value)\
- ((PDAC_Write(INDEX_LO,(NV_PDAC_EXT_##reg) & 0xff)),\
- (PDAC_Write(INDEX_HI,((NV_PDAC_EXT_##reg) >> 8) & 0xff)),\
- (PDAC_Write(INDEX_DATA,(value))))
-
-#define PCRTC_Def(mask,value) DEVICE_DEF(PCRTC,mask,value)
-#define PCRTC_Val(mask,value) DEVICE_VALUE(PCRTC,mask,value)
-#define PCRTC_Mask(mask) DEVICE_MASK(PCRTC,mask)
-
-
-/* These are the variables which actually point at the register blocks */
-extern volatile unsigned *nvPDACPort; /* Points to the DAC */
-extern volatile unsigned *nvPFBPort; /* Points to the Frame buffer */
-extern volatile unsigned *nvPRMPort; /* Points to real mode stuff */
-extern volatile unsigned *nvPGRAPHPort; /* Graphics unit */
-extern volatile unsigned *nvPDMAPort; /* DMA engine */
-extern volatile unsigned *nvPFIFOPort; /* FIFO registers */
-extern volatile unsigned *nvPTIMERPort; /* TIMER registers */
-extern volatile unsigned *nvPEXTDEVPort; /* EXTDEV registers */
-extern volatile unsigned *nvPRAMPort; /* Priviliged RAM registers */
-extern volatile unsigned *nvPRAMFCPort; /* Priviliged RAM (Fifo) */
-extern volatile unsigned *nvPRAMHTPort; /* Priviliged RAM (hash) */
-extern volatile unsigned *nvPMCPort; /* Priviliged RAM (hash) */
-extern volatile unsigned *nvCHAN0Port; /* User channel 0 */
-extern volatile unsigned *nvPRAMDACPort; /* Points to the RAMDAC */
-extern volatile unsigned *nvPRAMINPort; /* Privileges instance memory */
-extern volatile unsigned *nvPBUSPort; /* Priviled Bus */
-extern volatile unsigned *nvPNVMPort; /* Priviled Bus */
-extern volatile unsigned *dumb; /* FrameBuffer - hack!!!! */
-
-
-typedef enum {NV1,NV3,NV4,NV10,NumNVChips} NVChipType;
-
-NVChipType GetChipType(void);
-
-
-#endif /* __NVREG_H_ */
diff --git a/src/nvvga.h b/src/nvvga.h
deleted file mode 100644
index e614be1..0000000
--- a/src/nvvga.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 1996-1997 David J. McKay
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * DAVID J. MCKAY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef __NVVGA_H__
-#define __NVVGA_H__
-
-#include "riva_hw.h"
-
-#define PALETTE_SIZE 256
-
-#define NV_PDAC_CURSOR_SIZE 32
-#define NV_PDAC_CURSOR_PLANE_SIZE (NV_PDAC_CURSOR_SIZE*4)
-
-/* This is the structure for the NV1. It is not a VGA based core */
-
-typedef struct {
- unsigned char Nparam, Mparam, Oparam, Pparam;
- unsigned char NparamMPLL, MparamMPLL, OparamMPLL, PparamMPLL;
- unsigned char dacConfReg0;
- unsigned char dacConfReg1;
- unsigned char dacRgbPalCtrl;
- unsigned long confReg0;
- unsigned long green0; /* DPMS and sync polarity control */
- unsigned long memoryTrace;
- unsigned long startAddr; /* Where to start reading out from the buffer */
- /* All the following registers control the display */
- unsigned long prmConfig0; /* Controls if text mode on or off */
- unsigned long horFrontPorch; /* Front porch in pixels */
- unsigned long horSyncWidth; /* Sync Width in pixels */
- unsigned long horBackPorch; /* horizontal back porch in in pixels */
- unsigned long horDispWidth; /* Horizontal display width in pixels */
- unsigned long verFrontPorch; /* Vertical front porch in lines */
- unsigned long verSyncWidth; /* Vertical sync width in lines */
- unsigned long verBackPorch; /* Vertical back porch in lines */
- unsigned long verDispWidth; /* Vertical display width in lines */
- /* Hardware cursor registers */
- unsigned char cursorCtrl;
- unsigned char xHi,xLo,yHi,yLo;
- unsigned char colour1[3]; /* RGB values for cursor planes */
- unsigned char colour2[3];
- unsigned char colour3[3];
- unsigned char plane0[NV_PDAC_CURSOR_PLANE_SIZE];
- unsigned char plane1[NV_PDAC_CURSOR_PLANE_SIZE];
- unsigned char palette[PALETTE_SIZE][3];
-}NV1Registers;
-
-/*
- * Driver data structures.
- */
-typedef struct {
-/* vgaHWRec std; good old IBM VGA */
- int vgaValid; /* is the above state valid?? */
- NVChipType type; /* What the union holds */
-
- union {
- NV1Registers nv1;
- RIVA_HW_STATE RivaState;
- }regs;
-} vgaNVRec, *vgaNVPtr;
-
-#endif /* __NVVGA_H__ */
Reply to: