open a bug at http://bugs.xfree86.org/ and include your patch so that
it doesn't get lost.  hopefully it will get fixed up and integrated.

Alex

--- �������_��� <[EMAIL PROTECTED]> wrote:
> With the attached trivial patch I forced these cards to work to some
> extent
> with XFree 4.3.0 ...
> 
> Only 8,16 bit depths work.
> 64V2/DX may be needed slow_dram_refresh option.
> 
> diff -u s3.bak/s3_driver.c s3/s3_driver.c
> --- s3.bak/s3_driver.c    2003-02-27 22:59:43 +0200
> +++ s3/s3_driver.c    2003-07-02 18:24:02 +0300
> @@ -127,11 +127,13 @@
>  
>  /* supported chipsets */
>  static SymTabRec S3Chipsets[] = {
> -    { PCI_CHIP_964_0,    "964-0"},
> -    { PCI_CHIP_964_1,    "964-1"},
> -    { PCI_CHIP_968,        "968" },
> -    { PCI_CHIP_TRIO,     "Trio32/64" },
> -    { PCI_CHIP_AURORA64VP,    "Aurora64V+" },
> +    { PCI_CHIP_964_0,    "    964-0"},
> +    { PCI_CHIP_964_1,        "964-1"},
> +    { PCI_CHIP_968,            "968" },
> +    { PCI_CHIP_TRIO,         "Trio32/64" },
> +    { PCI_CHIP_AURORA64VP,        "Aurora64V+" },
> +    { PCI_CHIP_TRIO64UVP,         "Trio64UV+" },
> +    { PCI_CHIP_TRIO64V2_DXGX,    "Trio64V2/DX/GX" },
>      { -1, NULL }
>  };
>  
> @@ -142,6 +144,8 @@
>      { PCI_CHIP_968,     PCI_CHIP_968,         RES_SHARED_VGA },
>      { PCI_CHIP_TRIO,     PCI_CHIP_TRIO,         RES_SHARED_VGA },
>      { PCI_CHIP_AURORA64VP,    PCI_CHIP_AURORA64VP,    
> RES_SHARED_VGA },
> +    { PCI_CHIP_TRIO64UVP,    PCI_CHIP_TRIO64UVP,     RES_SHARED_VGA
> },
> +    { PCI_CHIP_TRIO64V2_DXGX,    PCI_CHIP_TRIO64V2_DXGX,    
>  RES_SHARED_VGA },
>      { -1,            -1,                  RES_UNDEFINED }
>  };
>  
> @@ -531,6 +535,8 @@
>      case PCI_CHIP_AURORA64VP:        /* ??? */
>          pS3->S3NewMMIO = FALSE;
>          break;
> +    case PCI_CHIP_TRIO64V2_DXGX:
> +    case PCI_CHIP_TRIO64UVP:
>      case PCI_CHIP_968:
>          pS3->S3NewMMIO = TRUE;
>          break;
> @@ -580,6 +586,15 @@
>      outb(0x102, 0x01);
>      outb(0x46e8, 0x08);
>  
> +    if (pS3->Chipset == PCI_CHIP_TRIO64V2_DXGX)
> +    {
> +      outb (0x3d4, 0x86);
> +      outb (0x3d5, 0x80);
> +      
> +      outb (0x3d4, 0x90);
> +      outb (0x3d5, 0x00);
> +    }
> +
>      if (!pScrn->videoRam) {
>          /* probe videoram */
>          outb(vgaCRIndex, 0x36);
> @@ -1118,7 +1133,9 @@
>  
>      if (pS3->Chipset == PCI_CHIP_968)
>          shift = 1;    /* XXX IBMRGB */
> -    else if (pS3->Chipset == PCI_CHIP_TRIO)
> +    else if (pS3->Chipset == PCI_CHIP_TRIO ||
> +             pS3->Chipset == PCI_CHIP_TRIO64UVP ||
> +             pS3->Chipset == PCI_CHIP_TRIO64V2_DXGX)
>          shift = -(pS3->s3Bpp >> 1);
>  
>      return shift;
> diff -u s3.bak/s3.h s3/s3.h
> --- s3.bak/s3.h    2002-12-11 19:30:47 +0200
> +++ s3/s3.h    2003-06-27 12:40:22 +0300
> @@ -240,6 +240,8 @@
>  #define S3_964_SERIES()        ((pS3->Chipset == PCI_CHIP_964_0) || 
>   \
>                    (pS3->Chipset == PCI_CHIP_964_1))
>  #define    S3_TRIO_SERIES()    ((pS3->Chipset == PCI_CHIP_TRIO) ||  
>  \
> -                  (pS3->Chipset == PCI_CHIP_AURORA64VP))
> +                  (pS3->Chipset == PCI_CHIP_AURORA64VP) || \
> +                 (pS3->Chipset == PCI_CHIP_TRIO64UVP) || \
> +                 (pS3->Chipset == PCI_CHIP_TRIO64V2_DXGX))
>  
>  #endif /* _S3_H */
> diff -u s3.bak/s3_Trio64DAC.c s3/s3_Trio64DAC.c
> --- s3.bak/s3_Trio64DAC.c    2003-02-27 22:59:43 +0200
> +++ s3/s3_Trio64DAC.c    2003-07-02 17:40:30 +0300
> @@ -324,9 +324,13 @@
>      if (pS3->Chipset == PCI_CHIP_AURORA64VP)
>          S3TrioSetClock(pScrn, mode->Clock, 2, 1, 1, 63, 0, 3, 2,
>                     135000, 270000);
> +    else if (pS3->Chipset == PCI_CHIP_TRIO64V2_DXGX)
> +        S3TrioSetClock(pScrn, mode->Clock, 2, 1, 1, 31, 0, 3, 2,
> +                   170000, 270000);
>      else
>          S3TrioSetClock(pScrn, mode->Clock, 2, 1, 1, 31, 0, 3, 2,
>                     135000, 270000);
> +                
>  
>      outb(0x3c4, 1);
>      blank = inb(0x3c5);
> @@ -347,6 +351,11 @@
>      sr18 = inb(0x3c5) & ~0x80;
>      outb(pS3->vgaCRIndex, 0x33);
>      cr33 = inb(pS3->vgaCRReg) & ~0x28;
> +    
> +    if (pS3->Chipset == PCI_CHIP_TRIO64V2_DXGX)
> +    {
> +      cr33 |= 0x20;
> +    }
>  
>      /* ! pixmux */
>      switch (pScrn->depth) {
> 
> 
> _______________________________________________
> Devel mailing list
> [EMAIL PROTECTED]
> http://XFree86.Org/mailman/listinfo/devel


__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com
_______________________________________________
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel
  • S3... Алексей Бай
    • ... Alex Deucher
      • ... Mike A. Harris
        • ... Egbert Eich

Reply via email to