home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / d / ddx-mips.zip / FB_VDR2.H < prev    next >
C/C++ Source or Header  |  1992-04-07  |  3KB  |  129 lines

  1. /*
  2.  * |-----------------------------------------------------------|
  3.  * | Copyright (c) 1991, 1992 MIPS Computer Systems, Inc.      |
  4.  * | All Rights Reserved                       |
  5.  * |-----------------------------------------------------------|
  6.  * |          Restricted Rights Legend                   |
  7.  * | Use, duplication, or disclosure by the Government is      |
  8.  * | subject to restrictions as set forth in               |
  9.  * | subparagraph (c)(1)(ii) of the Rights in Technical           |
  10.  * | Data and Computer Software Clause of DFARS 252.227-7013.  |
  11.  * |         MIPS Computer Systems, Inc.               |
  12.  * |         950 DeGuigne Avenue                   |
  13.  * |         Sunnyvale, California 94088-3650, USA           |
  14.  * |-----------------------------------------------------------|
  15.  */
  16. /* $Header: fb_vdr2.h,v 1.2 92/04/06 21:01:49 dd Exp $ */
  17. #ifndef _SYS_FB_VDR2_H
  18. #define    _SYS_FB_VDR2_H
  19.  
  20. /*
  21.  * "VDR2" frame buffer description
  22.  */
  23.  
  24. /* Inmos G300 video controller */
  25.  
  26. typedef struct {
  27. #ifdef _MIPSEL
  28.     volatile unsigned int r;
  29.     int pad;
  30. #else /* _MIPSEL */
  31.     int pad;
  32.     volatile unsigned int r;
  33. #endif /* _MIPSEL */
  34. } g300_reg;
  35.  
  36. struct g300 {
  37.     g300_reg cmap[256];    /* 0x000 .. 0x0ff */
  38.     g300_reg pad121[0x21];
  39.     g300_reg halfsync;    /* 0x121 */
  40.     g300_reg backporch;    /* 0x122 */
  41.     g300_reg display;    /* 0x123 */
  42.     g300_reg shortdisplay;    /* 0x124 */
  43.     g300_reg broadpulse;    /* 0x125 */
  44.     g300_reg vsync;        /* 0x126 */
  45.     g300_reg vblank;    /* 0x127 */
  46.     g300_reg vdisplay;    /* 0x128 */
  47.     g300_reg linetime;    /* 0x129 */
  48.     g300_reg linestart;    /* 0x12a */
  49.     g300_reg meminit;    /* 0x12b */
  50.     g300_reg xferdelay;    /* 0x12c */
  51.     g300_reg pad140[0x13];
  52.     g300_reg mask;        /* 0x140 */
  53.     g300_reg pad160[0x1f];
  54.     g300_reg control;    /* 0x160 */
  55.     g300_reg pad180[0x1f];
  56.     g300_reg top;        /* 0x180 */
  57.     g300_reg pad1a0[0x1f];
  58.     g300_reg boot;        /* 0x1a0 */
  59.     g300_reg pad1b0[0x0f];
  60.     g300_reg null;        /* 0x1b0 */
  61.     g300_reg pad200[0x4f];
  62. };
  63.  
  64.  
  65. /*
  66.  * boot register
  67.  */
  68. #define    G300_BOOTVAL(mult)    (0x20 + (mult))        /* PLL mode */
  69.  
  70. /*
  71.  * control register values:
  72.  *    address step = 512
  73.  *    bits per pixel = 8
  74.  *    CBlank pin is output
  75.  *    sync delay = 1
  76.  *    separate sync
  77.  *    plain synchronizing waveform
  78.  */
  79. #define    G300_CONTROL_OFF    0x170418
  80. #define    G300_CONTROL_ON        0x170419
  81.  
  82. /* transfer delay */
  83. #define    G300_XFER_DELAY 36
  84.  
  85.  
  86. /* Brooktree Bt431 cursor generator */
  87.  
  88. typedef struct {
  89. #ifdef _MIPSEL
  90.     volatile unsigned short r;
  91.     short pad[3];
  92. #else /* _MIPSEL */
  93.     short pad[3];
  94.     volatile unsigned short r;
  95. #endif /* _MIPSEL */
  96. } bt431_reg;
  97.  
  98. struct bt431 {
  99.     bt431_reg adlo;
  100.     bt431_reg adhi;
  101.     bt431_reg ram;
  102.     bt431_reg ctrl;
  103.     char pad[4096 - 4 * sizeof (bt431_reg)];
  104. };
  105.  
  106. #define    BT431_SETADDR(p, a)    ((p)->adhi.r = (a) >> 8, (p)->adlo.r = (a))
  107.  
  108. /* Bt431 addresses */
  109. #define    BT431_VAL(a)    ((a) * 0x101)
  110. #define    BT431_CMAPRAM    BT431_VAL(0x000)
  111. #define    BT431_COMMAND    BT431_VAL(0x000)
  112. #define        BT431_COMMAND_CURSOFF    BT431_VAL(0x04)    /* cursor enable */
  113. #define        BT431_COMMAND_CURSON    BT431_VAL(0x44)    /* cursor enable */
  114.  
  115. #define    BT431_CURSMAX    64    /* cursor size */
  116. #define    BT431_CURSBYTES    (64 * 64 * 2 / 8)
  117.  
  118.  
  119. /*
  120.  * "VDR2" color frame buffer registers
  121.  */
  122. struct vdr2_reg {
  123.     struct g300 ramdac;    /* 0x60000000 .. 0x60001000 */
  124.     char pad[0x7000];
  125.     struct bt431 cursor;    /* 0x60008000 .. 0x60009000 */
  126. };
  127.  
  128. #endif /* _SYS_FB_VDR2_H */
  129.