]> git.pld-linux.org Git - packages/SVGATextMode.git/commitdiff
- replacement of -GeForce.patch (by Przemysław Bialek).
authortwittner <twittner@pld-linux.org>
Wed, 26 May 2004 11:05:20 +0000 (11:05 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    SVGATextMode-Nvidia.patch -> 1.1

SVGATextMode-Nvidia.patch [new file with mode: 0644]

diff --git a/SVGATextMode-Nvidia.patch b/SVGATextMode-Nvidia.patch
new file mode 100644 (file)
index 0000000..0785c58
--- /dev/null
@@ -0,0 +1,439 @@
+diff -ru SVGATextMode-1.10.orig/XFREE/riva128_clock.c SVGATextMode-1.10/XFREE/riva128_clock.c
+--- SVGATextMode-1.10.orig/XFREE/riva128_clock.c       2000-07-18 04:47:15.000000000 +0200
++++ SVGATextMode-1.10/XFREE/riva128_clock.c    2004-05-25 20:45:25.594991568 +0200
+@@ -80,9 +80,96 @@
+ #define PCI_DEVICE_ID_NVIDIA_TNT       0x0020
+ #define PCI_DEVICE_ID_NVIDIA_TNT2      0x0028
+ #define PCI_DEVICE_ID_NVIDIA_UTNT2     0x0029
++#define PCI_DEVICE_ID_NVIDIA_UNKNOWN_TNT2     0x002A
+ #define PCI_DEVICE_ID_NVIDIA_VTNT2     0x002C
+ #define PCI_DEVICE_ID_NVIDIA_UVTNT2    0x002D
+ #define PCI_DEVICE_ID_NVIDIA_ITNT2     0x00A0
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_SDR        0x0100
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_DDR        0x0101
++#define PCI_DEVICE_ID_NVIDIA_QUADRO           0x0103
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX400     0x0110
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX200     0x0111
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GO      0x0112
++#define PCI_DEVICE_ID_NVIDIA_QUADRO2_MXR      0x0113
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS       0x0150
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS2      0x0151
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_ULTRA     0x0152
++#define PCI_DEVICE_ID_NVIDIA_QUADRO2_PRO      0x0153
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_460  0x0170
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_440  0x0171
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_420  0x0172
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX440SE 0x0173
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_440_GO  0x0174
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_420_GO  0x0175
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_420_GO32        0x0176
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_460GO   0x0177
++#define PCI_DEVICE_ID_NVIDIA_QUADRO4_500XGL   0x0178
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_460_GO64        0x0179
++#define PCI_DEVICE_ID_NVIDIA_QUADRO4_200      0x017A
++#define PCI_DEVICE_ID_NVIDIA_QUADRO4_550XGL   0x017B
++#define PCI_DEVICE_ID_NVIDIA_QUADRO4_500_GOGL 0x017C
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_410_GO16        0x017D
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX440_AGP8x     0x0181
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX440SE_AGP8x   0x0182
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX420_AGP8x     0x0183
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_448_GO  0x0186
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_488_GO  0x0187
++#define PCI_DEVICE_ID_NVIDIA_QUADRO4_580_XGL  0x0188
++#define PCI_DEVICE_ID_NVIDIA_QUADRO4_280_NVS  0x018A
++#define PCI_DEVICE_ID_NVIDIA_QUADRO4_380_XGL  0x018B
++#define PCI_DEVICE_ID_NVIDIA_IGEFORCE2                0x01a0
++#define PCI_DEVICE_ID_NVIDIA_IGEFORCE4_MX     0x01F0
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE3         0x0200
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE3_TI200   0x0201
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE3_TI500   0x0202
++#define PCI_DEVICE_ID_NVIDIA_QUADRO_DCC               0x0203
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI4600  0x0250
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI4400  0x0251
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI4200  0x0253
++#define PCI_DEVICE_ID_NVIDIA_QUADRO4_900XGL   0x0258
++#define PCI_DEVICE_ID_NVIDIA_QUADRO4_750XGL   0x0259
++#define PCI_DEVICE_ID_NVIDIA_QUADRO4_700XGL   0x025B
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI4800  0x0280
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI4200_AGP8x    0x0281
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI4800SE        0x0282
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE4_4200GO  0x0286
++#define PCI_DEVICE_ID_NVIDIA_QUADRO4_700GOGL  0x028C
++#define PCI_DEVICE_ID_NVIDIA_QUADRO4_980XGL   0x0288
++#define PCI_DEVICE_ID_NVIDIA_QUADRO4_780XGL   0x0289
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800U 0x0301
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800  0x0302
++#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_2000   0x0308
++#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1000   0x0309
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600U 0x0311
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600  0x0312
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600SE        0x0314
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5600        0x031A
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5650        0x031B
++#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO700  0x031C
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200  0x0320
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200U 0x0321
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_U        0x0322
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200SE        0x0323
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5200        0x0324
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5250        0x0325
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5200_32M_64M        0x0328
++#define PCI_DEVICE_ID_NVIDIA_QUADRO_NVS_280_PCI               0x032A
++#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_500    0x032B
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5300        0x032C
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5100        0x032D
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900U 0x0330
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900  0x0331
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900XT        0x0332
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5950U 0x0333
++#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_3000   0x0338
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700U 0x0341
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700  0x0342
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700LE        0x0343
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700VE        0x0344
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700        0x0347
++#define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700_       0x0348
++#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO1000 0x034C
++#define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1100   0x034E
+ vgaPCIInformation *vgaPCIInfo;
+@@ -92,14 +179,16 @@
+ #define PRAMDAC_PLL_COEFF  0x00000508
+ #define PRAMDAC_PLL_COEFF_SELECT   0x0000050C
++
++#define PEXTDEV_BASE  0x00101000
++
+ #define NV3_MIN_CLOCK_IN_KHZ  25000    // Not sure about this, but it seems reasonable
+ #define NV3_MAX_CLOCK_IN_KHZ 230000
+ #define NV4_MAX_CLOCK_IN_KHZ 350000
+ static int max_clock, is_nv3, pll_coeff;
+-/* NTSC cards have approx 14.3Mhz. Need to detect, but leave for now*/
+-#define PLL_INPUT_FREQ 13500 
++static int PLL_INPUT_FREQ;
+ #define M_MIN 7
+ #define M_MAX 13
+@@ -107,79 +196,102 @@
+ #define P_MAX 4 /* Not sure about this. Could be 4 */
+ //=== Function section ===
+-// From xc/programs/Xserver/hw/xfree86/vga256/drivers/nv/riva_hw.c in XFree86 3.3.6
++// From xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c in X11R6.7.0
+ /*
+  * Calculate the Video Clock parameters for the PLL.
+  */
+-static int CalcVClock
+-(
++static void CalcVClock (
+     int           clockIn,
+-    int           double_scan,
+     int          *clockOut,
+-    int          *mOut,
+-    int          *nOut,
+-    int          *pOut/*,
+-    RIVA_HW_INST *chip*/
++    unsigned int *pllOut
+ )
+ {
+-    unsigned lowM, highM, highP;
++    unsigned lowM, highM;
+     unsigned DeltaNew, DeltaOld;
+     unsigned VClk, Freq;
+     unsigned M, N, P;
+-
++    
+     DeltaOld = 0xFFFFFFFF;
+-    VClk     = (unsigned)clockIn;
+-    if (double_scan)
+-        VClk *= 2;
+-
+-    if (/*chip->CrystalFreqKHz*/PLL_INPUT_FREQ == 14318)
+-    {
+-        lowM  = 8;
+-        highM = 14 - (/*chip->Architecture == NV_ARCH_03*/is_nv3);
+-    }
+-    else
+-    {
++    VClk = (unsigned)clockIn;
++    
++    if (/*pNv->CrystalFreqKHz*/ PLL_INPUT_FREQ == 13500) {
+         lowM  = 7;
+         highM = 13 - (/*chip->Architecture == NV_ARCH_03*/is_nv3);
++    } else {
++        lowM  = 8;
++        highM = 14 - (/*chip->Architecture == NV_ARCH_03*/is_nv3);
+     }
+-    highP = 4 - (/*chip->Architecture == NV_ARCH_03*/is_nv3);
+-    for (P = 0; P <= highP; P ++)
+-    {
++    for (P = 0; P <= 4 - is_nv3; P++) {
+         Freq = VClk << P;
+-        if ((Freq >= 128000) && (Freq <= /*chip->MaxVClockFreqKHz*/max_clock))
+-        {
+-            for (M = lowM; M <= highM; M++)
+-            {
+-                N    = (VClk * M / /*chip->CrystalFreqKHz*/PLL_INPUT_FREQ) << P;
+-                Freq = (/*chip->CrystalFreqKHz*/PLL_INPUT_FREQ * N / M) >> P;
+-                if (Freq > VClk)
+-                    DeltaNew = Freq - VClk;
+-                else
+-                    DeltaNew = VClk - Freq;
+-                if (DeltaNew < DeltaOld)
+-                {
+-                    *mOut     = M;
+-                    *nOut     = N;
+-                    *pOut     = P;
+-                    *clockOut = Freq;
+-                    DeltaOld  = DeltaNew;
++        if ((Freq >= 128000) && (Freq <= max_clock)) {
++            for (M = lowM; M <= highM; M++) {
++                N = ((VClk << P) * M) / /* pNv->CrystalFreqKHz */ PLL_INPUT_FREQ;
++                if(N <= 255) {
++                    Freq = ((/*pNv->CrystalFreqKHz*/ PLL_INPUT_FREQ * N) / M) >> P;
++                    if (Freq > VClk)
++                        DeltaNew = Freq - VClk;
++                    else
++                        DeltaNew = VClk - Freq;
++                    if (DeltaNew < DeltaOld) {
++                        *pllOut   = (P << 16) | (N << 8) | M;
++                        *clockOut = Freq;
++                        DeltaOld  = DeltaNew;
++                    }
+                 }
+             }
+         }
+     }
+-    return (DeltaOld != 0xFFFFFFFF);
++}
++
++static void CalcVClock2Stage (
++    int           clockIn,
++    int          *clockOut,
++    unsigned int *pllOut,
++    unsigned int *pllBOut
++)
++{
++    unsigned DeltaNew, DeltaOld;
++    unsigned VClk, Freq;
++    unsigned M, N, P;
++
++    DeltaOld = 0xFFFFFFFF;
++
++    *pllBOut = 0x80000401;  /* fixed at x4 for now */
++
++    VClk = (unsigned)clockIn;
++    for (P = 0; P <= 6; P++) {
++        Freq = VClk << P;
++        if ((Freq >= 400000) && (Freq <= 1000000)) {
++            for (M = 1; M <= 13; M++) {
++                N = ((VClk << P) * M) / (PLL_INPUT_FREQ << 2);
++                if((N >= 5) && (N <= 255)) {
++                    Freq = (((PLL_INPUT_FREQ << 2) * N) / M) >> P;
++                    if (Freq > VClk)
++                        DeltaNew = Freq - VClk;
++                    else
++                        DeltaNew = VClk - Freq;
++                    if (DeltaNew < DeltaOld) {
++                        *pllOut   = (P << 16) | (N << 8) | M;
++                        *clockOut = Freq;
++                        DeltaOld  = DeltaNew;
++                    }
++                }
++            }
++        }
++    }
+ }
+            
+ // Set the clock to the given speed (in KHz)
+ Bool RIVA128ClockSelect( int clockspeed )
+ {
+-  int *ptr;
++  int *ptr, *ptr2;
++  int implementation = 0;
+-  int out;
+-  int m, n, p, value;
++  int clockout;
++  int pll, pllB;
+   int i = 0;
+   pciConfigPtr pcr = NULL;
+   int fd;
+@@ -203,13 +315,101 @@
+                        if (pcr->_device == PCI_DEVICE_ID_NVIDIA_TNT ||
+                                pcr->_device == PCI_DEVICE_ID_NVIDIA_TNT2 ||
+                                pcr->_device == PCI_DEVICE_ID_NVIDIA_UTNT2 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_UNKNOWN_TNT2 ||
+                                pcr->_device == PCI_DEVICE_ID_NVIDIA_VTNT2 ||
+                                pcr->_device == PCI_DEVICE_ID_NVIDIA_UVTNT2 ||
+-                               pcr->_device == PCI_DEVICE_ID_NVIDIA_ITNT2)
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_ITNT2 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_SDR ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_DDR ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX400 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX200 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE2_GO ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO2_MXR ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS2 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE2_ULTRA ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO2_PRO ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_460 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_440 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_420 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX440SE ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_440_GO ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_420_GO ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_420_GO32 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_460GO ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO4_500XGL ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_460_GO64 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO4_200 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO4_550XGL ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO4_500_GOGL ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_410_GO16 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX440_AGP8x ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX440SE_AGP8x ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX420_AGP8x ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_448_GO ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_488_GO ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO4_580_XGL ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO4_280_NVS ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO4_380_XGL ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_IGEFORCE2 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_IGEFORCE4_MX ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE3 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE3_TI200 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE3_TI500 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO_DCC ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI4600 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI4400 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI4200 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO4_900XGL ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO4_750XGL ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO4_700XGL ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI4800 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI4200_AGP8x ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI4800SE ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE4_4200GO ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO4_700GOGL ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO4_980XGL ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO4_780XGL ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800U ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO_FX_2000 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1000 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600U ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600SE ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5600 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5650 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO700 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200U ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200SE ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5200 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5250 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5200_32M_64M ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO_NVS_280_PCI ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO_FX_500 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5300 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5100 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900U ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900XT ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5950U ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO_FX_3000 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700U ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700LE ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700VE ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO1000 ||
++                               pcr->_device == PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1100)
+                        {
+                                is_nv3 = 0;
+                                pll_coeff = 0x00010700;
+                                max_clock = NV4_MAX_CLOCK_IN_KHZ;
++                              implementation = pcr->_device & 0x0ff0;
+                                 break;
+                        }
+@@ -249,6 +449,33 @@
+     return FALSE;
+   }
+     
++  ptr2 = (int*)mmap(0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED, fd, (off_t)(pcr->_base0) + PEXTDEV_BASE);
++
++  if( ptr2 == (int*)-1 )
++  {
++    PERROR(( "Error mmap'ing /dev/mem" ));
++    return FALSE;
++  }
++
++  if(is_nv3)
++  {
++    PLL_INPUT_FREQ = (ptr2[0x00000000/4]&0x20) ? 13500 : 14318;
++  }
++  else
++  {
++    PLL_INPUT_FREQ = (ptr2[0x00000000/4]&0x40) ? 14318 : 13500;
++  }
++
++  if((implementation == 0x0170) ||
++      (implementation == 0x0180) ||
++      (implementation == 0x01F0) ||
++      (implementation >= 0x0250))
++  {
++    if(ptr2[0x00000000/4] & (1 << 22)) PLL_INPUT_FREQ = 27000;
++  }
++
++  munmap(ptr2, 0x1000);
++    
+   close( fd );
+ #else
+   ptr=(int*) malloc(0x4000);
+@@ -261,13 +488,15 @@
+   // Calculate the clock  
+   //NV3ClockSelect( (float)clockspeed, &out, &m, &n, &p );
+-  CalcVClock ((float) clockspeed, 0, &out, &m, &n, &p);
+-    
+-  value = (m) + (n<<8) + (p<<16);
++  if ((implementation == 0x0310) || (implementation == 0x0340)) {
++    CalcVClock2Stage ((float) clockspeed, &clockout, &pll, &pllB);
++  } else {
++    CalcVClock ((float) clockspeed, &clockout, &pll);
++  }
+   
+   // But of debug info
+-  PDEBUG(( "Wanted %dkHz, got %dkHz (m=%d, n=%d, p=%d, value=0x%08X)\n",
+-    clockspeed, (int)out, m, n, p, value ));
++  PDEBUG(( "Wanted %dkHz, got %dkHz (pll=0x%08X)\n",
++    clockspeed, (int)clockout, pll));
+     
+   // Default value is 0x00000100 (NV3)
+   // X uses 0x10010100 (NV3) or 0x10000700 (NV4)
+@@ -275,8 +504,10 @@
+   ptr[PRAMDAC_PLL_COEFF_SELECT/4] = pll_coeff;  // could use |=
+   // Divide by 4 because we're dealing with integers
+-  ptr[PRAMDAC_PLL_COEFF/4] = value;
+-  
++  ptr[PRAMDAC_PLL_COEFF/4] = pll;
++  if ((implementation == 0x0310) || (implementation == 0x0340)) {
++      ptr[0x00000578/4] = pllB;
++  }  
+ #ifndef DOS
+   // Unmap memory
+   munmap( ptr, 0x1000 );
+
This page took 0.082215 seconds and 4 git commands to generate.