home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.2 (Developer) / NS_dev_3.2.iso / NextDeveloper / Examples / DriverKit / ATI / ATI_reloc.tproj / ATIModes.h < prev    next >
Text File  |  1993-08-27  |  5KB  |  176 lines

  1. /* Copyright (c) 1992, 1993 NeXT Computer, Inc.  All rights reserved. 
  2.  *
  3.  * ATIModes.h - Definitions for the ATi display driver.
  4.  *
  5.  * HISTORY
  6.  * 07 Oct 92    Joe Pasqua
  7.  *      Created. 
  8.  * 01 June 93    Mike Paquette
  9.  *    Added support for multiple DACs and CRT setups
  10.  *  7 July 1993    Derek B Clegg
  11.  *    Cleaned up for external release.
  12.  */
  13. #ifndef ATIMODES_H__
  14. #define ATIMODES_H__
  15.  
  16. #import <driverkit/displayDefs.h>
  17.  
  18. /* Important port definitions. */
  19. #define    MISC_OPTIONS    0x36EE
  20. #define    SUBSYS_STATUS    0x42e8
  21. #define DISP_CNTL    0x22E8        /* Display Control. */
  22. #define    CRT_LINE_PITCH    0x26EE
  23. #define DAC_MASK    0x02EA        /* DAC Mask. */
  24. #define DAC_DATA    0x02ED
  25. #define DAC_R_INDEX    0x02EB
  26. #define DAC_W_INDEX    0x02EC
  27.  
  28. #define    ADVFUNC_CNTL    0x4AE8
  29. #define    EXT_GE_CONFIG    0x7AEE
  30. #define    OUTPUT_CLK_SEL    DAC_MASK
  31. #define    MUX_CNTL    DAC_R_INDEX
  32. #define    INPUT_CLK_SEL    DAC_DATA
  33. #define    MISC_CNTL    0x7EEE
  34. #define    R_MISC_CNTL    0x92EE
  35. #define LOCAL_CNTL    0x32EE
  36.  
  37. #define    GE_OFFSET_HI    0x72EE
  38. #define    GE_OFFSET_LO    0x6EEE
  39.  
  40. #define    CRT_OFFSET_HI    0x2EEE
  41. #define    CRT_OFFSET_LO    0x2AEE
  42.  
  43. #define    CONFIG_STATUS_1    0x12EE
  44. #define    CONFIG_STATUS_2    0x16EE
  45. #define    CRT_PITCH    0x26EE
  46. #define    GE_PITCH    0x76EE
  47.  
  48. #define    MEM_BNDRY    0x42EE
  49. #define    MEM_CFG        0x5EEE
  50.  
  51. #define    HORZ_OVERSCAN    0x62EE
  52.  
  53. /* CRT Timing ports for Mach32 chip. */
  54. #define H_TOTAL        0x02e8
  55. #define H_DISP        0x06e8
  56. #define H_SYNC_START    0x0ae8
  57. #define H_SYNC_WIDTH    0x0ee8
  58. #define V_TOTAL        0x12e8
  59. #define V_DISP        0x16e8
  60. #define V_SYNC_START    0x1ae8
  61. #define V_SYNC_WID    0x1ee8
  62. #define CLOCK_SELECT    0x4aee
  63.     
  64. #define HORIZONTAL_OVERSCAN    0x62ee
  65. #define VERTICAL_OVERSCAN    0x66ee
  66. #define OVERSCAN_COLOR_BLUE    0x02ef
  67. #define OVERSCAN_COLOR_GREEN    0x06ee
  68. #define OVERSCAN_COLOR_RED    0x06ef
  69.  
  70. #define SHADOW_SET        0x5aee
  71. #define SHADOW_CNTL        0x46ee
  72. #define ROM_SCRATCH_PAD_0    0x52ee
  73. #define ROM_SCRATCH_PAD_1    0x56ee
  74.  
  75. #define MACH32_STEP6_ID_REG    0xFAEE
  76. #define MACH32_STEP6_ID_VALUE    0x227F
  77.  
  78. /* Identifying the memory aperature size */
  79. #define MEM_APERATURE_4GB_RANGE    0x20    /* Bit in CONFIG_STATUS_2+1 */
  80.  
  81.  
  82. /* Corsair specific stuff. */
  83.  
  84. #define INTEL_COMPANY_ID    0x25D4
  85. #define CORSAIR_ID        0x30A0
  86. #define INTEL_CORSAIR_ID    ((INTEL_COMPANY_ID << 16)|CORSAIR_ID)
  87. #define INTEL_CORSAIR_FB_ADDR    0x7a000000
  88. #define INTEL_CORSAIR_FB_SIZE    0x00200000
  89.  
  90. /* EISA Specific stuff */
  91.  
  92. #define ATI_EISA_ID        0x06894400    /* !ATI4400 EISA */
  93.  
  94. /* Interesting information found on the card. */
  95.  
  96. #define ATI_LOCALBUS_BIOS_SIGNON_MSG_ADDR    0xc0085
  97.  
  98. #define ATI_BIOS_BASEADDR    0xc0000        /* VGA BIOS base addr. */
  99. #define ATI_BIOS_SIZE        0x1000         /* VGA BIOS size. */
  100.  
  101. #define ATI_LOCALBUS_BIOS_SIGNON_MSG        "LOCAL BUS ATI ULTRA PRO"
  102. #define ATI_LOCALBUS_BIOS_SIGNON_MSG_LEN \
  103.     ((sizeof ATI_LOCALBUS_BIOS_SIGNON_MSG) - 1)
  104.  
  105. #define ATI_LOCALBUS_VRAM_ADDRESS    0x7E00000   /* 126 Mb. */
  106.  
  107. #define ATI_NOVA_PBUS_EISA_ID        0x25D430B0  /* Intel PCI, ATI chips */
  108. #define    ATI_NOVA_FB_ADDR        0xB2000000
  109. #define    ATI_NOVA_CORSAIR_FB_SIZE    0x00200000
  110.  
  111. typedef enum {
  112.     ATICorsair = 0,
  113.     ATILocalBusCard,
  114.     ATI_EISA_Card,
  115.     ATI_ISA_Card,
  116.     ATI_NovaCard
  117. } ATIFlavor;
  118.  
  119. typedef enum {
  120.     ATI_DAC_68830 = 0,
  121.     ATI_DAC_ATT20C491 = 1,
  122.     ATI_DAC_68875 = 2,
  123.     ATI_DAC_Bt476 = 3,
  124.     ATI_DAC_Bt481 = 4
  125. } ATI_DAC;
  126.  
  127. /* Table driven setup for DAC and pixel pipeline */
  128.  
  129. typedef struct {
  130.     unsigned int out_clk;
  131.     unsigned int in_clk;
  132.     unsigned int mux;
  133.     unsigned int GE_config;
  134.     unsigned int mask;
  135.     unsigned int delay_timing;
  136.     unsigned int mode;
  137.     IOBitsPerPixel bits;
  138. } ATI_DACSetup;
  139.  
  140. extern const ATI_DACSetup ATI_DAC_Setup_15BPP;
  141. extern const ATI_DACSetup ATI_DAC_Setup_8BPP;
  142.  
  143. /* Table driven setup for the CRTC hardware.  This controls the display
  144.  * layout and sync waveforms.  (Just like the NeXT TMC chip...)
  145.  * All values are derived from the Mach32 chipset data sheets.  See
  146.  * Appendix D, CRT Parameters, for details.
  147.  * Horizontal times are in multiples of 8 pixels.
  148.  * Vertical times are in multiples of 1/2 scanline.
  149.  */
  150. typedef struct {
  151.     unsigned int xres;
  152.     unsigned int yres;
  153.     unsigned int h_total;
  154.     unsigned int h_disp;
  155.     unsigned int h_sync_start;
  156.     unsigned int h_sync_wid;
  157.     unsigned int v_total;
  158.     unsigned int v_disp;
  159.     unsigned int v_sync_start;
  160.     unsigned int v_sync_wid;
  161.     unsigned int disp_cntl;
  162.     unsigned int clock_select;
  163.     unsigned int mux_flag;
  164. } ATI_CRTCSetup;
  165.  
  166. extern const IODisplayInfo ATIMode[];
  167. extern const int ATIModeCount;
  168. extern const IODisplayInfo ATISlowDACMode[];
  169. extern const int ATISlowDACModeCount;
  170.  
  171. #define ATI_DEFAULT_2MEG_MODE        4
  172. #define ATI_DEFAULT_1MEG_MODE        1
  173. #define ATI_DEFAULT_SlowDAC_MODE    0
  174.  
  175. #endif    /* ATIMODES_H__ */
  176.