(file) Return to nv4setup.c CVS log (file) (dir) Up to [XFree86 CVS] / xc / programs / Xserver / hw / xfree86 / vga256 / drivers / nv / Attic

Diff for /xc/programs/Xserver/hw/xfree86/vga256/drivers/nv/Attic/nv4setup.c between version 1.1.2.2 and 1.1.2.3

version 1.1.2.2, 1998/10/19 20:57:11 version 1.1.2.3, 1998/11/18 16:38:49
Line 36 
Line 36 
 |*     those rights set forth herein.                                        *| |*     those rights set forth herein.                                        *|
 |*                                                                           *| |*                                                                           *|
  \***************************************************************************/  \***************************************************************************/
 /* $XFree86: $ */  /* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/drivers/nv/nv4setup.c,v 1.1.2.2 1998/10/19 20:57:11 hohndel Exp $ */
 /* /*
  * Copyright 1996-1997  David J. McKay  * Copyright 1996-1997  David J. McKay
  *  *
Line 62 
Line 62 
 #include <stdlib.h> #include <stdlib.h>
  
 #include "nvuser.h" #include "nvuser.h"
 #include "nv4ref.h"  
 #include "nvreg.h" #include "nvreg.h"
  
   
 typedef struct typedef struct
 { {
     UINT32 id;     UINT32 id;
Line 73 
Line 73 
  
 typedef struct typedef struct
 { {
     UINT32 context; /* Configuration for graphics pipe */      UINT32 context;
     UINT32 dmaNotifyInst; /* Pointers to DMA and notify instance data */      UINT32 dmaNotifyInst;
     UINT32 memFormatInst; /* Not sure what the hell this is */      UINT32 memFormatInst;
     UINT32 unknown; /* Don't know what the 4th word does */      UINT32 unknown;
 }ObjInstEntry; }ObjInstEntry;
  
 typedef struct typedef struct
 { {
     char patchConfig;  /* How H/W is configured */      char patchConfig;
     char zwrite;       /* Write to Z buffer */      char zwrite;
     char chroma;       /* Chroma keying enabled */      char chroma;
     char plane;        /* Plane mask enabled */      char plane;
     char clip;         /* User clip enabled */      char clip;
     char colourFormat; /* 555RGB 888RGB etc */      char colourFormat;
     char alpha;        /* Alpha enabled */      char alpha;
 }ObjectProperties; }ObjectProperties;
  
 typedef struct typedef struct
 { {
     int chid;                    /* Channel ID  (always 0 in this driver) */      int chid;
     int id;                      /* Unique number for this object */      int id;
     int device;                  /* Which hardware device this object will use */      int device;
     int instance;                /* Instance number (if it has one) */      int instance;
     ObjectProperties properties; /* Enabled for this object */      ObjectProperties properties;
 }NVObject; }NVObject;
  
 extern int ErrorF(const char *fmt,...); extern int ErrorF(const char *fmt,...);
   
 #define Info ErrorF  
   
 static int graphicsEngineOk; static int graphicsEngineOk;
 #define WaitForIdle() while(PGRAPH_Read(STATUS)&1)  
  
 static void EnableOptimisations(void) static void EnableOptimisations(void)
 { {
     PGRAPH_Write(DEBUG_0, 0x1231C001);      nvPGRAPHPort[((4194432    )- (4194304) )/4] =(   305250305  )  ;
     PGRAPH_Write(DEBUG_1, 0x72111101);      nvPGRAPHPort[((4194436    )- (4194304) )/4] =(   1913721089  )  ;
     PGRAPH_Write(DEBUG_2, 0x11D5F071);      nvPGRAPHPort[((4194440    )- (4194304) )/4] =(   299233393  )  ;
     PGRAPH_Write(DEBUG_3, 0x10D4FF31);      nvPGRAPHPort[((4194444    )- (4194304) )/4] =(   282394417  )  ;
 } }
  
 static void InitDMAInstance(void) static void InitDMAInstance(void)
 { {
   
 } }
  
 static void DisableFifo(void) static void DisableFifo(void)
 { {
     /* Disable CACHE1 first */  
     PFIFO_Write(CACHES,PFIFO_Def(CACHES_REASSIGN,DISABLED));      nvPFIFOPort[((9472    )- (8192) )/4] =(  (( 0    ) << (0))     )  ;
     PFIFO_Write(CACHE1_PUSH0,PFIFO_Def(CACHE1_PUSH0_ACCESS,DISABLED));      nvPFIFOPort[((12800    )- (8192) )/4] =(  (( 0    ) << (0))     )  ;
     PFIFO_Write(CACHE1_PULL0,PFIFO_Def(CACHE1_PULL0_ACCESS,DISABLED));      nvPFIFOPort[((12880    )- (8192) )/4] =(  (( 0    ) << (0))     )  ;
     PFIFO_Write(CACHE0_PUSH0,PFIFO_Def(CACHE1_PUSH0_ACCESS,DISABLED));      nvPFIFOPort[((12288    )- (8192) )/4] =(  (( 0    ) << (0))     )  ;
     PFIFO_Write(CACHE0_PULL0,PFIFO_Def(CACHE1_PULL0_ACCESS,DISABLED));      nvPFIFOPort[((12368    )- (8192) )/4] =(  (( 0    ) << (0))     )  ;
 } }
  
 static void EnableFifo(void) static void EnableFifo(void)
 { {
     /*      nvPTIMERPort[((37376    )- (36864) )/4] =(   8  )  ;
      * Enable TIMER.      nvPTIMERPort[((37392    )- (36864) )/4] =(   3  )  ;
      */      nvPTIMERPort[((37120    )- (36864) )/4] =(   -1  )  ;
     PTIMER_Write(NUMERATOR, 8);      nvPTIMERPort[((37184    )- (36864) )/4] =(   0  )  ;
     PTIMER_Write(DENOMINATOR, 3);      nvPFIFOPort[((12800    )- (8192) )/4] =(  (( 1    ) << (0))     )  ;
     /*      nvPFIFOPort[((12880    )- (8192) )/4] =(  (( 1    ) << (0))     )  ;
      * Reset FIFO ints.      nvPFIFOPort[((9472    )- (8192) )/4] =(  (( 1    ) << (0))     )  ;
      */  }
     PTIMER_Write(INTR_0, 0xFFFFFFFF);  
     PTIMER_Write(INTR_EN_0, 0);  
     /*  
      * All ready.  
      */  
     PFIFO_Write(CACHE1_PUSH0,PFIFO_Def(CACHE1_PUSH0_ACCESS,ENABLED));  
     PFIFO_Write(CACHE1_PULL0,PFIFO_Def(CACHE1_PULL0_ACCESS,ENABLED));  
     PFIFO_Write(CACHES,PFIFO_Def(CACHES_REASSIGN,ENABLED));  
 }  
   
 #define HASH_TABLE_ADDR         0  
 #define HASH_TABLE_SIZE         (4096/4)  
 #define HASH_TABLE_NUM_ENTRIES  512  
 #define RUN_OUT_ADDR            (HASH_TABLE_ADDR+HASH_TABLE_SIZE)  
 #define RUN_OUT_SIZE            (512/4)  
 #define FIFO_CTX_ADDR           (RUN_OUT_ADDR+RUN_OUT_SIZE)  
 #define FIFO_CTX_SIZE           (512/4)  
 #define FREE_INSTANCE_ADDR      (HASH_TABLE_SIZE+RUN_OUT_SIZE+FIFO_CTX_SIZE)  
 #define FREE_INST               (FREE_INSTANCE_ADDR/4)  
 #define PRIVILEGED_RAM_SIZE     0x10000  
 #define CURSOR_RAM_SIZE         2048  
 #define PRAMINRead(addr) nvPRAMINPort[addr]  
 #define PRAMINWrite(addr,val) nvPRAMINPort[addr]=(val)  
  
 /*  
  * Clear out channel 0 fifo context.  
  */  
 static void ClearOutFifoContext(void) static void ClearOutFifoContext(void)
 { {
     int i;     int i;
  
     for (i=FIFO_CTX_ADDR;i<FIFO_CTX_SIZE;i++)      for (i= ((0 + (4096/4) ) + (512/4) ) ;i< (512/4) ;i++)
     {     {
         PRAMINWrite(i,0);          nvPRAMINPort[ i ]=( 0 ) ;
     }     }
 } }
  
 int NV4KbRamUsedByHW(void) int NV4KbRamUsedByHW(void)
 { {
     return (PRIVILEGED_RAM_SIZE);      return (65536 );
 } }
  
 static void ClearOutContext(void) static void ClearOutContext(void)
 { {
     int i;     int i;
  
     /*  
      * Init context register.  
      */  
     ClearOutFifoContext();     ClearOutFifoContext();
     PFIFO_Write(CACHE0_PUT,0);      nvPFIFOPort[((12304    )- (8192) )/4] =(  0  )  ;
     PFIFO_Write(CACHE0_GET,0);      nvPFIFOPort[((12400    )- (8192) )/4] =(  0  )  ;
     PFIFO_Write(CACHE1_PUT,0);      nvPFIFOPort[((12816    )- (8192) )/4] =(  0  )  ;
     PFIFO_Write(CACHE1_GET,0);      nvPFIFOPort[((12912    )- (8192) )/4] =(  0  )  ;
     PFIFO_Write(CACHE1_DMA_PUT,0);      nvPFIFOPort[((12864    )- (8192) )/4] =(  0  )  ;
     PFIFO_Write(CACHE1_DMA_GET,0);      nvPFIFOPort[((12868    )- (8192) )/4] =(  0  )  ;
     PFIFO_Write(CACHE1_DMA_STATE,0);      nvPFIFOPort[((12840    )- (8192) )/4] =(  0  )  ;
     PFIFO_Write(RUNOUT_PUT,0);      nvPFIFOPort[((9232    )- (8192) )/4] =(  0  )  ;
     PFIFO_Write(RUNOUT_GET,0);      nvPFIFOPort[((9248    )- (8192) )/4] =(  0  )  ;
     PFIFO_Write(RUNOUT_STATUS,0);      nvPFIFOPort[((9216    )- (8192) )/4] =(  0  )  ;
     for (i = 0; i < NV_PGRAPH_CTX_CACHE1__SIZE_1; i++)      for (i = 0; i < 8 ; i++)
     {      {
         PGRAPH_Write(CTX_CACHE1(i),0);          nvPGRAPHPort[(((4194688+( i )*4)    )- (4194304) )/4] =(  0  )  ;
         PGRAPH_Write(CTX_CACHE2(i),0);          nvPGRAPHPort[(((4194720+( i )*4)    )- (4194304) )/4] =(  0  )  ;
         PGRAPH_Write(CTX_CACHE3(i),0);          nvPGRAPHPort[(((4194752+( i )*4)    )- (4194304) )/4] =(  0  )  ;
         PGRAPH_Write(CTX_CACHE4(i),0);          nvPGRAPHPort[(((4194784+( i )*4)    )- (4194304) )/4] =(  0  )  ;
     }     }
 } }
  
 static HashTableEntry  localHash[HASH_TABLE_NUM_ENTRIES];  static HashTableEntry  localHash[512 ];
 static HashTableEntry *realHash=NULL;  static HashTableEntry *realHash= ((void *)0) ;
   
 #define HASH_CHID0(h) ((((unsigned)(h))^(((unsigned)(h))>>9)^(((unsigned)(h))>>18)^(((unsigned)(h))>>27))&0x1FF)  
 #define HASH_ADDR(h) (HASH_TABLE_ADDR+(h)*2)  
  
 static void ClearOutHashTables(void) static void ClearOutHashTables(void)
 { {
     int i,j;     int i,j;
  
     for (j=0;j<HASH_TABLE_NUM_ENTRIES;j++)      for (j=0;j< 512 ;j++)
     {     {
         localHash[j].id=0;         localHash[j].id=0;
         localHash[j].context=0;         localHash[j].context=0;
         PRAMINWrite(HASH_ADDR(j),0);          nvPRAMINPort[ (0 +( j )*2)  ]=( 0 ) ;
         PRAMINWrite(HASH_ADDR(j)+1,0);          nvPRAMINPort[ (0 +( j )*2) +1 ]=( 0 ) ;
     }     }
     PFIFO_Write(CACHE1_HASH,0xFFFF);      nvPFIFOPort[((12888    )- (8192) )/4] =(  65535  )  ;
 } }
  
 /*  
  * This is a "black" box.  It does just enough to initialize the FIFO and graphics engine to be  
  * functional for a minially accelerated environment.  Makes the NV4 look just like a fixed-function  
  * accelerator.  
  */  
 static void LoadChannelContext(int screenWidth,int screenHeight,int bpp) static void LoadChannelContext(int screenWidth,int screenHeight,int bpp)
 { {
     int i;     int i;
     UINT32 read;     UINT32 read;
     int pitch=((bpp+1)/8)*screenWidth;     int pitch=((bpp+1)/8)*screenWidth;
  
     /*      nvPFIFOPort[((12292    )- (8192) )/4] =(  0  )  ;
      * Reset FIFO cache 0 and 1 to channel 0, 512 bytes deep, PIO, GR destination.      nvPFIFOPort[((12804    )- (8192) )/4] =(  0  )  ;
      */      nvPFIFOPort[((12832    )- (8192) )/4] =(  0  )  ;
     PFIFO_Write(CACHE0_PUSH1,0);      nvPFIFOPort[((9480    )- (8192) )/4] =(   0  )  ;
     PFIFO_Write(CACHE1_PUSH1,0);      nvPFIFOPort[((9476    )- (8192) )/4] =(  0  )  ;
     PFIFO_Write(CACHE1_DMA_PUSH,0);      nvPFIFOPort[((9484    )- (8192) )/4] =(  65535  )  ;
     PFIFO_Write(DMA, 0x0000);      nvPFIFOPort[((12372    )- (8192) )/4] =(   1  )  ;
     PFIFO_Write(MODE,0x0000);      nvPFIFOPort[((12884    )- (8192) )/4] =(   1  )  ;
     PFIFO_Write(SIZE,0xFFFF);      nvPGRAPHPort[((4194656    )- (4194304) )/4] =(   0  )  ;
     PFIFO_Write(CACHE0_PULL1, 1);      nvPGRAPHPort[((4194660    )- (4194304) )/4] =(   0  )  ;
     PFIFO_Write(CACHE1_PULL1, 1);      nvPGRAPHPort[((4194664    )- (4194304) )/4] =(   0  )  ;
     /*      nvPGRAPHPort[((4194668    )- (4194304) )/4] =(   0  )  ;
      * Reset graphics context.  
      */  
     PGRAPH_Write(CTX_SWITCH1, 0);  
     PGRAPH_Write(CTX_SWITCH2, 0);  
     PGRAPH_Write(CTX_SWITCH3, 0);  
     PGRAPH_Write(CTX_SWITCH4, 0);  
     for (i = 0; i < 8; i++)     for (i = 0; i < 8; i++)
     {     {
         PGRAPH_Write(CTX_CACHE1(i), 0);          nvPGRAPHPort[(((4194688+( i )*4)    )- (4194304) )/4] =(   0  )  ;
         PGRAPH_Write(CTX_CACHE2(i), 0);          nvPGRAPHPort[(((4194720+( i )*4)    )- (4194304) )/4] =(   0  )  ;
         PGRAPH_Write(CTX_CACHE3(i), 0);          nvPGRAPHPort[(((4194752+( i )*4)    )- (4194304) )/4] =(   0  )  ;
         PGRAPH_Write(CTX_CACHE4(i), 0);          nvPGRAPHPort[(((4194784+( i )*4)    )- (4194304) )/4] =(   0  )  ;
     }      }
     PGRAPH_Write(CTX_USER,    0);      nvPGRAPHPort[((4194676    )- (4194304) )/4] =(      0  )  ;
     PGRAPH_Write(DMA_START_0, 0);      nvPGRAPHPort[((4198400    )- (4194304) )/4] =(   0  )  ;
     PGRAPH_Write(DMA_START_1, 0);      nvPGRAPHPort[((4198404    )- (4194304) )/4] =(   0  )  ;
     PGRAPH_Write(DMA_LENGTH,  0);      nvPGRAPHPort[((4198408    )- (4194304) )/4] =(    0  )  ;
     PGRAPH_Write(DMA_MISC,    0);      nvPGRAPHPort[((4198412    )- (4194304) )/4] =(      0  )  ;
     PGRAPH_Write(DMA_PITCH,   0);      nvPGRAPHPort[((4196192    )- (4194304) )/4] =(     0  )  ;
     for (i = 0; i < 6; i++)     for (i = 0; i < 6; i++)
     {     {
         PGRAPH_Write(BOFFSET(i),  0);          nvPGRAPHPort[(((4195904+( i )*4)    )- (4194304) )/4] =(    0  )  ;
         PGRAPH_Write(BBASE(i),    0);          nvPGRAPHPort[(((4195928+( i )*4)    )- (4194304) )/4] =(      0  )  ;
         PGRAPH_Write(BLIMIT(i),   0x00FFFFFF);          nvPGRAPHPort[(((4195972+( i )*4)    )- (4194304) )/4] =(     16777215  )  ;
     }     }
     for (i = 0; i < 5; i++)     for (i = 0; i < 5; i++)
         PGRAPH_Write(BPITCH(i),   pitch);          nvPGRAPHPort[(((4195952+( i )*4)    )- (4194304) )/4] =(     pitch  )  ;
     PGRAPH_Write(LIMIT_VIOL_PIX,  0);      nvPGRAPHPort[((4195856    )- (4194304) )/4] =(    0  )  ;
     PGRAPH_Write(LIMIT_VIOL_Z,    0);      nvPGRAPHPort[((4195860    )- (4194304) )/4] =(      0  )  ;
     PGRAPH_Write(SURFACE,         0);      nvPGRAPHPort[((4196108    )- (4194304) )/4] =(           0  )  ;
     PGRAPH_Write(STATE,           0xFFFFFFFF);      nvPGRAPHPort[((4196112    )- (4194304) )/4] =(             -1  )  ;
     PGRAPH_Write(BSWIZZLE2,       0);      nvPGRAPHPort[((4195996    )- (4194304) )/4] =(         0  )  ;
     PGRAPH_Write(BSWIZZLE5,       0);      nvPGRAPHPort[((4196000    )- (4194304) )/4] =(         0  )  ;
     switch (bpp)     switch (bpp)
     {     {
         case 8:         case 8:
             PGRAPH_Write(BPIXEL,PGRAPH_Def(BPIXEL_DEPTH0,Y8)|              nvPGRAPHPort[((4196132    )- (4194304) )/4] =(  (( 1    ) << (0))   |
                                 PGRAPH_Def(BPIXEL_DEPTH1,Y8)|                                                                                     (( 1    ) << (4))   |
                                 PGRAPH_Def(BPIXEL_DEPTH2,Y8)|                                                                                     (( 1    ) << (8))   |
                                 PGRAPH_Def(BPIXEL_DEPTH3,Y8)|                                                                                     (( 1    ) << (12))   |
                                 PGRAPH_Def(BPIXEL_DEPTH4,Y8)|                                                                                     (( 1    ) << (16))   |
                                 PGRAPH_Def(BPIXEL_DEPTH5,Y8));                                                                                     (( 1    ) << (20))     )  ;
             PGRAPH_Write(FORMATS,PGRAPH_Def(FORMATS_ROP,Y8)|              nvPGRAPHPort[((4195864    )- (4194304) )/4] =(  (( 0    ) << (0))   |
                                  PGRAPH_Def(FORMATS_SRC,LE_Y8)|                                                                                     (( 1    ) << (4))   |
                                  PGRAPH_Def(FORMATS_FB,Y8));                                                                                     (( 1    ) << (12))     )  ;
             PGRAPH_Write(STORED_FMT,PGRAPH_Val(STORED_FMT_MONO0, 0x01) |              nvPGRAPHPort[((4196400    )- (4194304) )/4] =(  ((    1   ) << (0))    |
                                   PGRAPH_Val(STORED_FMT_PATT0, 0x01) |                                                                                     ((    1   ) << (8))    |
                                   PGRAPH_Val(STORED_FMT_PATT1, 0x01) |                                                                                     ((    1   ) << (16))    |
                                   PGRAPH_Val(STORED_FMT_CHROMA,0x01));                                                                                     ((   1   ) << (24))     )  ;
             break;             break;
         case 15:         case 15:
             PGRAPH_Write(BPIXEL,PGRAPH_Def(BPIXEL_DEPTH0,X1R5G5B5_Z1R5G5B5)|              nvPGRAPHPort[((4196132    )- (4194304) )/4] =(  (( 2    ) << (0))   |
                                 PGRAPH_Def(BPIXEL_DEPTH1,X1R5G5B5_Z1R5G5B5)|                                                                                     (( 2    ) << (4))   |
                                 PGRAPH_Def(BPIXEL_DEPTH2,X1R5G5B5_Z1R5G5B5)|                                                                                     (( 2    ) << (8))   |
                                 PGRAPH_Def(BPIXEL_DEPTH3,X1R5G5B5_Z1R5G5B5)|                                                                                     (( 2    ) << (12))   |
                                 PGRAPH_Def(BPIXEL_DEPTH4,X1R5G5B5_Z1R5G5B5)|                                                                                     (( 2    ) << (16))   |
                                 PGRAPH_Def(BPIXEL_DEPTH5,X1R5G5B5_Z1R5G5B5));                                                                                     (( 2    ) << (20))     )  ;
             PGRAPH_Write(FORMATS,PGRAPH_Def(FORMATS_ROP,RGB15)|              nvPGRAPHPort[((4195864    )- (4194304) )/4] =(  (( 1    ) << (0))   |
                                  PGRAPH_Def(FORMATS_SRC,LE_X1R5G5B5)|                                                                                     (( 7    ) << (4))   |
                                  PGRAPH_Def(FORMATS_FB,X1R5G5B5_Z1R5G5B5));                                                                                     (( 2    ) << (12))     )  ;
             PGRAPH_Write(STORED_FMT,PGRAPH_Val(STORED_FMT_MONO0, 0x09) |              nvPGRAPHPort[((4196400    )- (4194304) )/4] =(  ((    9   ) << (0))    |
                                   PGRAPH_Val(STORED_FMT_PATT0, 0x09) |                                                                                     ((    9   ) << (8))    |
                                   PGRAPH_Val(STORED_FMT_PATT1, 0x09) |                                                                                     ((    9   ) << (16))    |
                                   PGRAPH_Val(STORED_FMT_CHROMA,0x09));                                                                                     ((   9   ) << (24))     )  ;
             break;             break;
         case 16:         case 16:
             PGRAPH_Write(BPIXEL,PGRAPH_Def(BPIXEL_DEPTH0,R5G6B5)|              nvPGRAPHPort[((4196132    )- (4194304) )/4] =(  (( 5    ) << (0))   |
                                 PGRAPH_Def(BPIXEL_DEPTH1,R5G6B5)|                                                                                     (( 5    ) << (4))   |
                                 PGRAPH_Def(BPIXEL_DEPTH2,R5G6B5)|                                                                                     (( 5    ) << (8))   |
                                 PGRAPH_Def(BPIXEL_DEPTH3,R5G6B5)|                                                                                     (( 5    ) << (12))   |
                                 PGRAPH_Def(BPIXEL_DEPTH4,R5G6B5)|                                                                                     (( 5    ) << (16))   |
                                 PGRAPH_Def(BPIXEL_DEPTH5,R5G6B5));                                                                                     (( 5    ) << (20))     )  ;
             PGRAPH_Write(FORMATS,PGRAPH_Def(FORMATS_ROP,RGB16)|              nvPGRAPHPort[((4195864    )- (4194304) )/4] =(  (( 2    ) << (0))   |
                                  /*PGRAPH_Def(FORMATS_SRC,LE_X16R5G6B5)*/PGRAPH_Val(FORMATS_SRC,0x0C)|                                                                                     ((   12   ) << (4))   |
                                  PGRAPH_Def(FORMATS_FB,R5G6B5));                                                                                     (( 5    ) << (12))     )  ;
             PGRAPH_Write(STORED_FMT,PGRAPH_Val(STORED_FMT_MONO0, 0x0C) |              nvPGRAPHPort[((4196400    )- (4194304) )/4] =(  ((    12   ) << (0))    |
                                   PGRAPH_Val(STORED_FMT_PATT0, 0x0C) |                                                                                     ((    12   ) << (8))    |
                                   PGRAPH_Val(STORED_FMT_PATT1, 0x0C) |                                                                                     ((    12   ) << (16))    |
                                   PGRAPH_Val(STORED_FMT_CHROMA,0x0C));                                                                                     ((   12   ) << (24))     )  ;
             break;             break;
         case 32:         case 32:
             PGRAPH_Write(BPIXEL,PGRAPH_Def(BPIXEL_DEPTH0,X8R8G8B8_Z8R8G8B8)|              nvPGRAPHPort[((4196132    )- (4194304) )/4] =(  (( 7    ) << (0))   |
                                 PGRAPH_Def(BPIXEL_DEPTH1,X8R8G8B8_Z8R8G8B8)|                                                                                     (( 7    ) << (4))   |
                                 PGRAPH_Def(BPIXEL_DEPTH2,X8R8G8B8_Z8R8G8B8)|                                                                                     (( 7    ) << (8))   |
                                 PGRAPH_Def(BPIXEL_DEPTH3,X8R8G8B8_Z8R8G8B8)|                                                                                     (( 7    ) << (12))   |
                                 PGRAPH_Def(BPIXEL_DEPTH4,X8R8G8B8_Z8R8G8B8)|                                                                                     (( 7    ) << (16))   |
                                 PGRAPH_Def(BPIXEL_DEPTH5,X8R8G8B8_Z8R8G8B8));                                                                                     (( 7    ) << (20))     )  ;
             PGRAPH_Write(FORMATS,PGRAPH_Def(FORMATS_ROP,RGB24)|              nvPGRAPHPort[((4195864    )- (4194304) )/4] =(  (( 5    ) << (0))   |
                                  PGRAPH_Def(FORMATS_SRC,LE_X8R8G8B8)|                                                                                     (( 14    ) << (4))   |
                                  PGRAPH_Def(FORMATS_FB,X8R8G8B8_Z8R8G8B8));                                                                                     (( 7    ) << (12))     )  ;
             PGRAPH_Write(STORED_FMT,PGRAPH_Val(STORED_FMT_MONO0, 0x07) |              nvPGRAPHPort[((4196400    )- (4194304) )/4] =(  ((    7   ) << (0))    |
                                   PGRAPH_Val(STORED_FMT_PATT0, 0x07) |                                                                                     ((    7   ) << (8))    |
                                   PGRAPH_Val(STORED_FMT_PATT1, 0x07) |                                                                                     ((    7   ) << (16))    |
                                   PGRAPH_Val(STORED_FMT_CHROMA,0x07));                                                                                     ((   7   ) << (24))     )  ;
             break;             break;
     }     }
     PGRAPH_Write(NOTIFY,          0);      nvPGRAPHPort[((4196116    )- (4194304) )/4] =(            0  )  ;
     PGRAPH_Write(PATT_COLOR0,     0xFFFFFFFF);      nvPGRAPHPort[((4196352    )- (4194304) )/4] =(       -1  )  ;
     PGRAPH_Write(PATT_COLOR1,     0xFFFFFFFF);      nvPGRAPHPort[((4196356    )- (4194304) )/4] =(       -1  )  ;
     PGRAPH_Write(PATTERN(0),      0);      nvPGRAPHPort[(((4196360+( 0 )*4)    )- (4194304) )/4] =(        0  )  ;
     PGRAPH_Write(PATTERN(1),      0);      nvPGRAPHPort[(((4196360+( 1 )*4)    )- (4194304) )/4] =(        0  )  ;
     PGRAPH_Write(PATTERN_SHAPE,   0);      nvPGRAPHPort[((4196368    )- (4194304) )/4] =(     0  )  ;
     PGRAPH_Write(MONO_COLOR0,     0xFFFFFFFF);      nvPGRAPHPort[((4195840    )- (4194304) )/4] =(       -1  )  ;
     PGRAPH_Write(ROP3,            0xCC);      nvPGRAPHPort[((4195844    )- (4194304) )/4] =(              204  )  ;
     PGRAPH_Write(CHROMA,          0);      nvPGRAPHPort[((4196372    )- (4194304) )/4] =(            0  )  ;
     PGRAPH_Write(BETA_AND,        0);      nvPGRAPHPort[((4195848    )- (4194304) )/4] =(          0  )  ;
     PGRAPH_Write(BETA_PREMULT,    0);      nvPGRAPHPort[((4195852    )- (4194304) )/4] =(      0  )  ;
     PGRAPH_Write(CONTROL0,        0);      nvPGRAPHPort[((4196376    )- (4194304) )/4] =(          0  )  ;
     PGRAPH_Write(CONTROL1,        0);      nvPGRAPHPort[((4196380    )- (4194304) )/4] =(          0  )  ;
     PGRAPH_Write(CONTROL2,        0);      nvPGRAPHPort[((4196384    )- (4194304) )/4] =(          0  )  ;
     PGRAPH_Write(BLEND,           0);      nvPGRAPHPort[((4196388    )- (4194304) )/4] =(             0  )  ;
     PGRAPH_Write(SOURCE_COLOR,    0);      nvPGRAPHPort[((4195596    )- (4194304) )/4] =(      0  )  ;
     for (i = 0; i < 32; i++)     for (i = 0; i < 32; i++)
     {     {
         PGRAPH_Write(ABS_X_RAM(i), 0);          nvPGRAPHPort[(((4195328+( i )*4)    )- (4194304) )/4] =(   0  )  ;
         PGRAPH_Write(ABS_Y_RAM(i), 0);          nvPGRAPHPort[(((4195456+( i )*4)    )- (4194304) )/4] =(   0  )  ;
     }     }
     PGRAPH_Write(XY_LOGIC_MISC0,  0);      nvPGRAPHPort[((4195604    )- (4194304) )/4] =(    0  )  ;
     PGRAPH_Write(XY_LOGIC_MISC1,  0);      nvPGRAPHPort[((4195608    )- (4194304) )/4] =(    0  )  ;
     PGRAPH_Write(XY_LOGIC_MISC2,  0);      nvPGRAPHPort[((4195612    )- (4194304) )/4] =(    0  )  ;
     PGRAPH_Write(XY_LOGIC_MISC3,  0);      nvPGRAPHPort[((4195616    )- (4194304) )/4] =(    0  )  ;
     PGRAPH_Write(CLIPX_0,         0);      nvPGRAPHPort[((4195620    )- (4194304) )/4] =(           0  )  ;
     PGRAPH_Write(CLIPX_1,         0);      nvPGRAPHPort[((4195624    )- (4194304) )/4] =(           0  )  ;
     PGRAPH_Write(CLIPY_0,         0);      nvPGRAPHPort[((4195628    )- (4194304) )/4] =(           0  )  ;
     PGRAPH_Write(CLIPY_1,         0);      nvPGRAPHPort[((4195632    )- (4194304) )/4] =(           0  )  ;
     for (i = 0; i < 16; i++)     for (i = 0; i < 16; i++)
     {     {
         PGRAPH_Write(U_RAM(i),    0);          nvPGRAPHPort[(((4197632+( i )*4)    )- (4194304) )/4] =(      0  )  ;
         PGRAPH_Write(V_RAM(i),    0);          nvPGRAPHPort[(((4197696+( i )*4)    )- (4194304) )/4] =(      0  )  ;
         PGRAPH_Write(M_RAM(i),    0);          nvPGRAPHPort[(((4197760+( i )*4)    )- (4194304) )/4] =(      0  )  ;
     }      }
     PGRAPH_Write(PASSTHRU_0,      0);      nvPGRAPHPort[((4195708    )- (4194304) )/4] =(        0  )  ;
     PGRAPH_Write(PASSTHRU_1,      0);      nvPGRAPHPort[((4195712    )- (4194304) )/4] =(        0  )  ;
     PGRAPH_Write(PASSTHRU_2,      0);      nvPGRAPHPort[((4195716    )- (4194304) )/4] =(        0  )  ;
     PGRAPH_Write(DVD_COLORFMT,    0);      nvPGRAPHPort[((4196196    )- (4194304) )/4] =(      0  )  ;
     PGRAPH_Write(SCALED_FORMAT,   0);      nvPGRAPHPort[((4196200    )- (4194304) )/4] =(     0  )  ;
     PGRAPH_Write(MISC24_0,        0);      nvPGRAPHPort[((4195600    )- (4194304) )/4] =(          0  )  ;
     PGRAPH_Write(MISC24_1,        0);      nvPGRAPHPort[((4195696    )- (4194304) )/4] =(          0  )  ;
     PGRAPH_Write(MISC24_2,        0);      nvPGRAPHPort[((4195700    )- (4194304) )/4] =(          0  )  ;
     PGRAPH_Write(X_MISC,          0);      nvPGRAPHPort[((4195584    )- (4194304) )/4] =(            0  )  ;
     PGRAPH_Write(Y_MISC,          0);      nvPGRAPHPort[((4195588    )- (4194304) )/4] =(            0  )  ;
     PGRAPH_Write(ABS_UCLIP_XMIN,  0);      nvPGRAPHPort[((4195644    )- (4194304) )/4] =(    0  )  ;
     PGRAPH_Write(ABS_UCLIP_YMIN,  0);      nvPGRAPHPort[((4195648    )- (4194304) )/4] =(    0  )  ;
     PGRAPH_Write(ABS_UCLIP_XMAX,  0x0003FFFF);      nvPGRAPHPort[((4195652    )- (4194304) )/4] =(    262143  )  ;
     PGRAPH_Write(ABS_UCLIP_YMAX,  0x0003FFFF);      nvPGRAPHPort[((4195656    )- (4194304) )/4] =(    262143  )  ;
     PGRAPH_Write(ABS_UCLIPA_XMIN, 0);      nvPGRAPHPort[((4195680    )- (4194304) )/4] =(   0  )  ;
     PGRAPH_Write(ABS_UCLIPA_YMIN, 0);      nvPGRAPHPort[((4195684    )- (4194304) )/4] =(   0  )  ;
     PGRAPH_Write(ABS_UCLIPA_XMAX, 0x0003FFFF);      nvPGRAPHPort[((4195688    )- (4194304) )/4] =(   262143  )  ;
     PGRAPH_Write(ABS_UCLIPA_YMAX, 0x0003FFFF);      nvPGRAPHPort[((4195692    )- (4194304) )/4] =(   262143  )  ;
     PGRAPH_Write(ABS_ICLIP_XMAX,  0);      nvPGRAPHPort[((4195636    )- (4194304) )/4] =(    0  )  ;
     PGRAPH_Write(ABS_ICLIP_YMAX,  0);      nvPGRAPHPort[((4195640    )- (4194304) )/4] =(    0  )  ;
     PGRAPH_Write(VALID1,          0xFFFFFFFF);      nvPGRAPHPort[((4195592    )- (4194304) )/4] =(            -1  )  ;
     PGRAPH_Write(VALID2,          0xFFFFFFFF);      nvPGRAPHPort[((4195704    )- (4194304) )/4] =(            -1  )  ;
     PGRAPH_Write(CTX_CONTROL, PGRAPH_Def(CTX_CONTROL_MINIMUM_TIME, 33US)      nvPGRAPHPort[((4194672    )- (4194304) )/4] =(   (( 0    ) << (0))
                             | PGRAPH_Def(CTX_CONTROL_TIME,         NOT_EXPIRED)                                                                              | (( 1    ) << (8))
                             | PGRAPH_Def(CTX_CONTROL_CHID,         VALID)                                                                              | (( 1    ) << (16))
                             | PGRAPH_Def(CTX_CONTROL_SWITCHING,    IDLE)                                                                              | (( 0    ) << (24))
                             | PGRAPH_Def(CTX_CONTROL_DEVICE,       ENABLED));                                                                              | (( 1    ) << (28))     )  ;
     PGRAPH_Write(FIFO,PGRAPH_Def(FIFO_ACCESS,ENABLED));      nvPGRAPHPort[((4196128    )- (4194304) )/4] =(  (( 1    ) << (0))     )  ;
 } }
  
 /*  
  * Color formats.  
  */  
 #define COLOR_CONTEXT_Y8         0x01  
 #define COLOR_CONTEXT_X24Y8      0x03  
 #define COLOR_CONTEXT_X1R5G5B5   0x07  
 #define COLOR_CONTEXT_X17R5G5B5  0x09  
 #define COLOR_CONTEXT_R5G6B5     0x0A  
 #define COLOR_CONTEXT_X16R5G6B5  0x0C  
 #define COLOR_CONTEXT_X8R8G8B8   0x0E  
 #define COLOR_CONTEXT_Y16        0x0F  
 #define COLOR_CONTEXT_Y32        0x14  
   
 /*  
  * This value does SRC & PATTERN  
  * The pattern is disabled/enabled by the ROP code we set up  
  */  
 #define PATCH_CONTEXT 0x01  
   
 /*  
  * All contexts will be generated at run time as we need to set the color  
  * format dynamically  
  */  
 static NVObject ropObject; static NVObject ropObject;
 static NVObject clipObject; static NVObject clipObject;
 static NVObject patternObject; static NVObject patternObject;
Line 450 
Line 381 
     UINT32 context;     UINT32 context;
     int i;     int i;
  
     /*      hash = ((((unsigned)( object->id ))^(((unsigned)( object->id ))>>9)^(((unsigned)( object->id ))>>18)^(((unsigned)( object->id ))>>27))&511) ;
      * Will put an entry into the hash table  
      */  
     hash = HASH_CHID0(object->id);  
   
     if (localHash[hash].id != 0)     if (localHash[hash].id != 0)
     {     {
         /*  
          * Is object already in cache?  
          */  
         if (localHash[hash].id==object->id)         if (localHash[hash].id==object->id)
             return (1);             return (1);
         else         else
         {         {
             /*              ErrorF ("**** NO ROOM FOR OBJECT %08lx IN HASH TABLE ****\n",object->id);
              * There is no room at the inn. Since we can't cope with reloading              graphicsEngineOk=0;
              * context we had better abort here!!  
              */  
             Info("**** NO ROOM FOR OBJECT %08lx IN HASH TABLE ****\n",object->id);  
             graphicsEngineOk=0; /* Set flag so that we won't use accel */  
             return (0);             return (0);
         }         }
     }     }
     context = SetBF(31:31,1)      context = (( 1 ) << (31))
             | SetBF(16:16,1)                | (( 1 ) << (16))
             | SetBF(15:0,(object->instance + 0x10000/16))                | (( (object->instance + 65536/16) ) << (0))
             | SetBF(30:24,object->chid);                | (( object->chid ) << (24)) ;
 #ifdef DEBUG  
     ErrorF("Placing object %x instance %x in hash\n",object->id,context);  
 #endif  
     localHash[hash].id      = object->id;     localHash[hash].id      = object->id;
     localHash[hash].context = context;     localHash[hash].context = context;
     PRAMINWrite(HASH_ADDR(hash),object->id);      nvPRAMINPort[ (0 +( hash )*2)  ]=( object->id ) ;
     PRAMINWrite(HASH_ADDR(hash)+1,context);      nvPRAMINPort[ (0 +( hash )*2) +1 ]=( context ) ;
     return (1);     return (1);
 } }
  
Line 492 
Line 409 
     ObjectProperties *p=&(object->properties);     ObjectProperties *p=&(object->properties);
     UINT32 context0, context1;     UINT32 context0, context1;
  
     context0 = SetBF(11:0,object->device)      context0 = (( object->device ) << (0))
              | SetBF(12:12,p->chroma)                 | (( p->chroma ) << (12))
              | SetBF(13:13,p->clip)                 | (( p->clip ) << (13))
              | SetBF(17:15,p->patchConfig)                 | (( p->patchConfig ) << (15))
              | SetBF(24:24,1)  /* PATCH_STATUS_VALID */                 | (( 1 ) << (24))
              ;/*| SetBF(25:25,1); /* CONTEXT_SURFACE_VALID */                 ;
     context1 = SetBF(7:0,1)    /* MONO_FORMAT_CGA6 */      context1 = (( 1 ) << (0))
              | SetBF(15:8,p->colourFormat);                 | (( p->colourFormat ) << (8)) ;
 #ifdef DEBUG      nvPRAMINPort[ (object->instance<<2)+0 ]=( context0 ) ;
     ErrorF("Object %x instance %x context %x\n",object->id,object->instance,      nvPRAMINPort[ (object->instance<<2)+1 ]=( context1 ) ;
            context);      nvPRAMINPort[ (object->instance<<2)+2 ]=( 0 ) ;
 #endif      nvPRAMINPort[ (object->instance<<2)+3 ]=( 0 ) ;
     PRAMINWrite((object->instance<<2)+0,context0);  
     PRAMINWrite((object->instance<<2)+1,context1);  
     PRAMINWrite((object->instance<<2)+2,0);  
     PRAMINWrite((object->instance<<2)+3,0);  
 } }
  
 /*  
  * Not exactly terribly complex at the moment, but if we ever get  
  * round to destroying objects ....  
  */  
 static int AllocateFreeInstance(void) static int AllocateFreeInstance(void)
 { {
     static int freeInstance=FREE_INST;      static int freeInstance= (((4096/4) + (512/4) + (512/4) ) /4) ;
  
     return freeInstance++;      return (freeInstance++);
 } }
  
 static int defaultColourFormat=COLOR_CONTEXT_X8R8G8B8;  static int defaultColourFormat= 14 ;
  
 static void InitObject(NVObject *o,int id,int device) static void InitObject(NVObject *o,int id,int device)
 { {
Line 531 
Line 440 
     o->chid=0;     o->chid=0;
     o->instance=AllocateFreeInstance();     o->instance=AllocateFreeInstance();
     o->device=device;     o->device=device;
     p->patchConfig=PATCH_CONTEXT;      p->patchConfig= 1 ;
     p->zwrite=0;     p->zwrite=0;
     p->chroma=0;     p->chroma=0;
     p->plane=0;     p->plane=0;
Line 540 
Line 449 
     p->alpha=0;     p->alpha=0;
 } }
  
 #define OBJECT_CLASS(dev) (NV_##dev)  
   
 static void SetUpObjects(int bpp) static void SetUpObjects(int bpp)
 { {
     switch (bpp)     switch (bpp)
     {     {
         case 8:         case 8:
             defaultColourFormat = COLOR_CONTEXT_X24Y8;              defaultColourFormat = 3 ;
             break;             break;
         case 15:         case 15:
             defaultColourFormat = COLOR_CONTEXT_X17R5G5B5;              defaultColourFormat = 9 ;
             break;             break;
         case 16:         case 16:
             defaultColourFormat = COLOR_CONTEXT_X16R5G6B5;              defaultColourFormat = 12 ;
             break;             break;
         case 24:         case 24:
             defaultColourFormat = COLOR_CONTEXT_X8R8G8B8;              defaultColourFormat = 14 ;
             break;             break;
     }     }
  
     InitObject(&ropObject,ROP_OBJECT_ID,OBJECT_CLASS(UROP));      InitObject(&ropObject,-1728053248 ,(67  ) );
     PlaceObjectInHashTable(&ropObject);     PlaceObjectInHashTable(&ropObject);
     PlaceObjectInInstTable(&ropObject);     PlaceObjectInInstTable(&ropObject);
  
     InitObject(&clipObject,CLIP_OBJECT_ID,OBJECT_CLASS(UCLIP));      InitObject(&clipObject,-1728053247 ,(25  ) );
     PlaceObjectInHashTable(&clipObject);     PlaceObjectInHashTable(&clipObject);
     PlaceObjectInInstTable(&clipObject);     PlaceObjectInInstTable(&clipObject);
  
     InitObject(&rectObject,RECT_OBJECT_ID,OBJECT_CLASS(URECT));      InitObject(&rectObject,-2013265920 ,(94  ) );
     PlaceObjectInHashTable(&rectObject);     PlaceObjectInHashTable(&rectObject);
     PlaceObjectInInstTable(&rectObject);     PlaceObjectInInstTable(&rectObject);
  
     InitObject(&blitObject,BLIT_OBJECT_ID,OBJECT_CLASS(UBLIT));      InitObject(&blitObject,-2013265919 ,(95  ) );
     PlaceObjectInHashTable(&blitObject);     PlaceObjectInHashTable(&blitObject);
     PlaceObjectInInstTable(&blitObject);     PlaceObjectInInstTable(&blitObject);
  
     InitObject(&glyphObject,GLYPH_OBJECT_ID,OBJECT_CLASS(UGLYPH));      InitObject(&glyphObject,-2013265915 ,(75  ) );
     glyphObject.properties.clip = 0; /* Use clipping inside glyph class */      glyphObject.properties.clip = 0;
     PlaceObjectInHashTable(&glyphObject);     PlaceObjectInHashTable(&glyphObject);
     PlaceObjectInInstTable(&glyphObject);     PlaceObjectInInstTable(&glyphObject);
 } }
  
 static void ClearAndEnableInterrupts(void) static void ClearAndEnableInterrupts(void)
 { {
     /*      nvPGRAPHPort[((4194560    )- (4194304) )/4] =(        -1  )  ;
      * Actually, don't want interrupts enabled.      nvPGRAPHPort[((4194624    )- (4194304) )/4] =(     -1  )  ;
      */      nvPFIFOPort[((8448    )- (8192) )/4] =(       -1  )  ;
     PGRAPH_Write(INTR,      0xFFFFFFFF);      nvPFIFOPort[((8512    )- (8192) )/4] =(    -1  )  ;
     PGRAPH_Write(INTR_EN,   0xFFFFFFFF);      nvPMCPort[((512    )- (0) )/4] =(         -1  )  ;
     PFIFO_Write(INTR_0,     0xFFFFFFFF);  
     PFIFO_Write(INTR_EN_0,  0xFFFFFFFF);  
     /* Switch on all the user devices in the master control */  
     PMC_Write(ENABLE,       0xFFFFFFFF);  
     /*  
     PMC_Write(INTR_EN_0,PMC_Def(INTR_EN_0_INTA,HARDWARE));  
     */  
 } }
  
 static void ResetEngine(void) static void ResetEngine(void)
 { {
     PMC_Write(ENABLE,0xffff00ff);      nvPMCPort[((512    )- (0) )/4] =(  -65281  )  ;
     PMC_Write(ENABLE,0xffffffff);      nvPMCPort[((512    )- (0) )/4] =(  -1  )  ;
 } }
  
 static void EnableChannel(void) static void EnableChannel(void)
 { {
   
 } }
  
 /* This function sets up instance memory to be layed out as follows  
  *  
  *          4K hash Table  
  *          512 fifo context  
  *          512 runout  
  */  
 static void InitInstanceMemory(void) static void InitInstanceMemory(void)
 { {
     int i;     int i;
  
     /*      nvPFIFOPort[((8720    )- (8192) )/4] =(  (( 16    ) << (4))   |
      * Setup instance memory ranges.                                                                            (( 0    ) << (16))   |
      */                                                                            (( 3    ) << (24))     )  ;
     PFIFO_Write(RAMHT,PFIFO_Def(RAMHT_BASE_ADDRESS, 10000)|      nvPFIFOPort[((8724    )- (8192) )/4] =(  (( 136    ) << (1))     )  ;
                       PFIFO_Def(RAMHT_SIZE, 4K)|      nvPFIFOPort[((8728    )- (8192) )/4] =(  (( 137    ) << (1))   |
                       PFIFO_Def(RAMHT_SEARCH, 128));                                                                            (( 0    ) << (16))     )  ;
     PFIFO_Write(RAMFC,PFIFO_Def(RAMFC_BASE_ADDRESS, 11000));      nvPFBPort[((1049088    )- (1048576) )/4] =(  4372  )  ;
     PFIFO_Write(RAMRO,PFIFO_Def(RAMRO_BASE_ADDRESS, 11200)|      for (i = 0; i < (65536  + 2048 )/4; i++)
                       PFIFO_Def(RAMRO_SIZE,512));  
     /*  
      * Make sure write protection is off.  
      */  
     PFB_Write(CONFIG_0,0x00001114);  
     /*  
      * Zero out instance memory and cursor memory.  
      */  
     for (i = 0; i < (PRIVILEGED_RAM_SIZE + CURSOR_RAM_SIZE)/4; i++)  
     {     {
         PRAMINWrite(i,0x0);          nvPRAMINPort[ i ]=( 0 ) ;
     }     }
 } }
  
Line 656 
Line 542 
     SetUpObjects(bpp);     SetUpObjects(bpp);
     EnableChannel();     EnableChannel();
     EnableFifo();     EnableFifo();
     return graphicsEngineOk;      return (graphicsEngineOk);
 } }
  
 void NV4Sync(void) void NV4Sync(void)
 { {
     WaitForIdle();      while (nvPGRAPHPort[((4196096    )- (4194304) )/4]   &1) ;
 }  
   
 void NV4DumpStatus()  
 {  
     int i, inst;  
     ErrorF("========================Dumping NV4 Status:======================\n");  
     ErrorF("PMC_BOOT_0:...........0x%08x\n", PMC_Read(BOOT_0));  
     ErrorF("PMC_ENABLE:...........0x%08x\n", PMC_Read(ENABLE));  
     ErrorF("PMC_INTR_0:...........0x%08x\n", PMC_Read(INTR_0));  
     ErrorF("PFB_CONFIG_0:.........0x%08x\n", PFB_Read(CONFIG_0));  
     ErrorF("PFIFO_DEBUG_0:........0x%08x\n", PFIFO_Read(DEBUG_0));  
     ErrorF("PFIFO_INTR_0:.........0x%08x\n", PFIFO_Read(INTR_0));  
     ErrorF("PFIFO_RAMHT:..........0x%08x\n", PFIFO_Read(RAMHT));  
     ErrorF("PFIFO_RAMFC:..........0x%08x\n", PFIFO_Read(RAMFC));  
     ErrorF("PFIFO_RAMRO:..........0x%08x\n", PFIFO_Read(RAMRO));  
     ErrorF("PFIFO_CACHES:.........0x%08x\n", PFIFO_Read(CACHES));  
     ErrorF("PFIFO_CACHE1_PUSH0:...0x%08x\n", PFIFO_Read(CACHE1_PUSH0));  
     ErrorF("PFIFO_CACHE1_PUSH1:...0x%08x\n", PFIFO_Read(CACHE1_PUSH1));  
     ErrorF("PFIFO_CACHE1_PULL0:...0x%08x\n", PFIFO_Read(CACHE1_PULL0));  
     ErrorF("PFIFO_CACHE1_PULL1:...0x%08x\n", PFIFO_Read(CACHE1_PULL1));  
     ErrorF("PFIFO_CACHE1_STATUS:..0x%08x\n", PFIFO_Read(CACHE1_STATUS));  
     ErrorF("PFIFO_CACHE1_STATUS1:.0x%08x\n", PFIFO_Read(CACHE1_STATUS1));  
     ErrorF("PFIFO_CACHE1_ENGINE:..0x%08x\n", PFIFO_Read(CACHE1_ENGINE));  
     ErrorF("PFIFO_CACHE1_METHOD:..0x%08x\n", PFIFO_Read(CACHE1_METHOD(PFIFO_Read(CACHE1_GET))));  
     ErrorF("PFIFO_CACHE1_DATA:....0x%08x\n", PFIFO_Read(CACHE1_DATA(PFIFO_Read(CACHE1_GET))));  
     ErrorF("PFIFO_RUNOUT_STATUS...0x%08x\n", PFIFO_Read(RUNOUT_STATUS));  
     ErrorF("PFIFO_RUNOUT_PUT......0x%08x\n", PFIFO_Read(RUNOUT_PUT));  
     ErrorF("PFIFO_RUNOUT_GET......0x%08x\n", PFIFO_Read(RUNOUT_GET));  
     {  
         ErrorF("    ======================Dumping hash table:====================\n");  
         for (i = 0; i < 512; i++)  
         {  
             if (PRAMINRead(HASH_ADDR(i)))  
             {  
                 ErrorF("    Hash[0x%04x] ID 0x%08x, INST 0x%08x\n", i, PRAMINRead(HASH_ADDR(i)), PRAMINRead(HASH_ADDR(i)+1));  
                 inst = PRAMINRead(HASH_ADDR(i) + 1);  
                 if (inst & 0x80010000)  
                 {  
                     inst = ((inst & 0xFFFF) - 0x1000) << 2;  
                     ErrorF("        CTX0: 0x%08x\n", PRAMINRead(inst));  
                     ErrorF("        CTX1: 0x%08x\n", PRAMINRead(inst+1));  
                     ErrorF("        CTX2: 0x%08x\n", PRAMINRead(inst+2));  
                 }  
             }  
         }  
     }  
     ErrorF("PGRAPH_DEBUG_0:.......0x%08x\n", PGRAPH_Read(DEBUG_0));  
     ErrorF("PGRAPH_DEBUG_1:.......0x%08x\n", PGRAPH_Read(DEBUG_1));  
     ErrorF("PGRAPH_DEBUG_2:.......0x%08x\n", PGRAPH_Read(DEBUG_2));  
     ErrorF("PGRAPH_DEBUG_3:.......0x%08x\n", PGRAPH_Read(DEBUG_3));  
     ErrorF("PGRAPH_INTR:..........0x%08x\n", PGRAPH_Read(INTR));  
     ErrorF("PGRAPH_NSTATUS:.......0x%08x\n", PGRAPH_Read(NSTATUS));  
     ErrorF("PGRAPH_CTX_SWITCH1:...0x%08x\n", PGRAPH_Read(CTX_SWITCH1));  
     ErrorF("PGRAPH_CTX_SWITCH2:...0x%08x\n", PGRAPH_Read(CTX_SWITCH2));  
     ErrorF("PGRAPH_CTX_SWITCH3:...0x%08x\n", PGRAPH_Read(CTX_SWITCH3));  
     ErrorF("PGRAPH_CTX_SWITCH4:...0x%08x\n", PGRAPH_Read(CTX_SWITCH4));  
     ErrorF("PGRAPH_CTX_CONTROL:...0x%08x\n", PGRAPH_Read(CTX_CONTROL));  
     ErrorF("PGRAPH_CTX_USER:......0x%08x\n", PGRAPH_Read(CTX_USER));  
     ErrorF("PGRAPH_FIFO:..........0x%08x\n", PGRAPH_Read(FIFO));  
     ErrorF("PGRAPH_ROP3:..........0x%08x\n", PGRAPH_Read(ROP3));  
     ErrorF("PGRAPH_XY_LOGIC_MISC0:0x%08x\n", PGRAPH_Read(XY_LOGIC_MISC0));  
     ErrorF("PGRAPH_XY_LOGIC_MISC1:0x%08x\n", PGRAPH_Read(XY_LOGIC_MISC1));  
     ErrorF("PGRAPH_XY_LOGIC_MISC2:0x%08x\n", PGRAPH_Read(XY_LOGIC_MISC2));  
     ErrorF("PGRAPH_XY_LOGIC_MISC3:0x%08x\n", PGRAPH_Read(XY_LOGIC_MISC3));  
     ErrorF("PGRAPH_STATUS:........0x%08x\n", PGRAPH_Read(STATUS));  
     ErrorF("PGRAPH_TRAPPED_ADDR:..0x%08x\n", PGRAPH_Read(TRAPPED_ADDR));  
     ErrorF("PGRAPH_TRAPPED_DATA:..0x%08x\n", PGRAPH_Read(TRAPPED_DATA));  
     ErrorF("PGRAPH_VALID1:........0x%08x\n", PGRAPH_Read(VALID1));  
     ErrorF("PGRAPH_VALID2:........0x%08x\n", PGRAPH_Read(VALID2));  
     for (i = 0; i < 5; i++)  
     ErrorF("PGRAPH_BBASE(%d):.....0x%08x\n", i, PGRAPH_Read(BBASE(i)));  
     for (i = 0; i < 5; i++)  
     ErrorF("PGRAPH_BOFFET(%d):....0x%08x\n", i, PGRAPH_Read(BOFFSET(i)));  
     for (i = 0; i < 5; i++)  
     ErrorF("PGRAPH_BLIMIT(%d):....0x%08x\n", i, PGRAPH_Read(BLIMIT(i)));  
     for (i = 0; i < 5; i++)  
     ErrorF("PGRAPH_BPITCH(%d):....0x%08x\n", i, PGRAPH_Read(BPITCH(i)));  
     ErrorF("PGRAPH_BPIXEL:........0x%08x\n", PGRAPH_Read(BPIXEL));  
     ErrorF("PGRAPH_FORMATS:.......0x%08x\n", PGRAPH_Read(FORMATS));  
 } }


Legend:
Removed from v.1.1.2.2  
changed lines
  Added in v.1.1.2.3

Powered by
ViewCVS 0.9.2