home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v1.zip / DDKX86 / H / EISA.H < prev    next >
Text File  |  1995-04-14  |  6KB  |  152 lines

  1. /*DDK*************************************************************************/
  2. /*                                                                           */
  3. /* COPYRIGHT (C) Microsoft Corporation, 1989                                 */
  4. /* COPYRIGHT    Copyright (C) 1995 IBM Corporation                           */
  5. /*                                                                           */
  6. /*    The following IBM OS/2 WARP source code is provided to you solely for  */
  7. /*    the purpose of assisting you in your development of OS/2 WARP device   */
  8. /*    drivers. You may use this code in accordance with the IBM License      */
  9. /*    Agreement provided in the IBM Device Driver Source Kit for OS/2. This  */
  10. /*    Copyright statement may not be removed.                                */
  11. /*                                                                           */
  12. /*****************************************************************************/
  13. /*static char *SCCSID = "@(#)eisa.h    6.1 90/11/15";*/
  14. /* SCCSID = @(#)eisa.h          13.3 90/06/13  */
  15.  
  16. /*
  17.  * eisa.h
  18.  */
  19.  
  20. /*
  21.  *
  22.  *
  23.  */
  24.  
  25. typedef struct _EisaMemoryInfo { /* emi */
  26.     unsigned char    fb;
  27.     unsigned char    fbDataSize;
  28.     unsigned short    usPaddrLSW;
  29.     unsigned char    bPaddrMSB;
  30.     unsigned short    usMemorySize;
  31. } EisaMemoryInfo;
  32.  
  33. typedef struct _EisaIRQInfo { /* eiri */
  34.     unsigned char    fb;
  35.     unsigned char    bReserved;
  36. } EisaIRQInfo;
  37.  
  38. typedef struct _EisaDMAInfo { /* edi */
  39.     unsigned char    fbChan;
  40.     unsigned char    fbType;
  41. } EisaDMAInfo;
  42.  
  43. typedef struct _EisaPortInfo { /* epi */
  44.     unsigned char    fb;
  45.     unsigned short    usAddress;
  46. } EisaPortInfo;
  47.  
  48. typedef struct _EisaSlotInfo { /* esi */
  49.     unsigned char    bReturn;
  50.     unsigned char    fb;
  51.     unsigned char    bMajorRev;
  52.     unsigned char    bMinorRev;
  53.     unsigned short    usChecksum;
  54.     unsigned char    cbFunc;
  55.     unsigned char    fbFunc;
  56.     unsigned long    ulID;
  57. } EisaSlotInfo ;
  58.  
  59. typedef struct _EisaFuncInfo { /* efi */
  60.     unsigned char    bReturn;
  61.     unsigned long    ID;
  62.     unsigned char    fbID;
  63.     unsigned char    fbSlot;
  64.     unsigned char    bMinorRev;
  65.     unsigned char    bMajorRev;
  66.     unsigned char    abSelections[26];
  67.     unsigned char    fbFunction;
  68.     unsigned char    achType[80];
  69.     EisaMemoryInfo    emi[9];
  70.     EisaIRQInfo    eiri[7];
  71.     EisaDMAInfo    edi[4];
  72.     EisaPortInfo    epi[20];
  73.     unsigned char    achInitInfo[60];
  74. } EisaFuncInfo ;
  75.  
  76. // Structure for parameters for Eisa call IOCTL
  77.  
  78. typedef struct EisaCallParameters { /* ecp */
  79.  
  80.     unsigned char SubFunction;
  81.     unsigned char SlotNumber;
  82.     unsigned char FunctionNumber;
  83. };
  84.  
  85. // macros used in Eisa Rom Calls in OEMHLP$
  86.  
  87. #define EISA_STACK_SIZE        1900        // stack for Eisa calls
  88. #define EISA_PARAMETER_SIZE    3        // parameters for Eisa calls
  89. #define EISA_SLOT_SIZE        6        // get slot info return
  90. #define EISA_FUNC_SIZE        321        // get function info return
  91. #define EISA_ROM_ADDR        0x000F0000  // Rom bios segment base
  92. #define EISA_ENTRY_OFFSET    0x0F859        // int 15 entry in F000 seg
  93. #define EISA_SLOT_INFO_16    0x0D800        // ax for get slot info 16 bit
  94. #define EISA_FUNC_INFO_16    0x0D801        // ax for get func info 16 bit
  95. #define EISA_FNNUMBER        4        // Eisa GIOCTL function #
  96. #define EISA_ERROR_EMPTY_SLOT    0x83        // slot is empty
  97. #define EISA_HAS_IRQ_ENTRIES    0x04        // entry has IRQ entries
  98. #define EISA_IRQ_LAST        0x80        // Last IRQ entry
  99. #define EISA_IRQ_SHARABLE    0x40        // IRQ is sharable
  100. #define EISA_IRQ_LEVEL        0x20        // IRQ is level triggered
  101. #define EISA_HAS_IO_ENTRIES     0x10        // Slot has I/O ports
  102. #define EISA_FUNCTION_REQUEST   0x01        // OEMHLP$ request code
  103. #define EISA_SLOT_REQUEST       0x00        // OEMHLP$ request code
  104. #define EISA_INVALID_BIOS_CALL  0x86        // EISA BIOS calls not supported
  105. #define EISA_DEVICE_TYPE_LEN    0x50        // Size of the device type string
  106. #define EISA_NUMBER_PORTS       0x1F        // Mask for determining # of ports
  107. #define EISA_DMA_BUFFER_CH      0x2000      // Mask for IRQ13 sharing
  108.  
  109. // The following constants are used to determine the reason for an NMI
  110. // on an Eisa machine
  111.  
  112. #define EisaNMI_Port1            0x61
  113. #define EisaNMI_IoChk            0x40    // Assertion of IOCHK
  114. #define EisaNMI_Parity            0x80    // Parity error from memory
  115. #define EisaNMI_IoChk_Control        0x04    // Assertion of IOCHK
  116. #define EisaNMI_Parity_Control        0x08    // Parity error from memory
  117.  
  118. #define EisaNMI_Port2            0x461
  119. #define EisaNMI_Software        0x20    // Software Generated
  120. #define EisaNMI_Bus            0x40    // Bus Time Out
  121. #define EisaNMI_FailSafe        0x80    // Fail-Save Timer
  122. #define EisaNMI_Software_Control    0x02    // Software Generated
  123. #define EisaNMI_Bus_Control        0x08    // Bus Time Out
  124. #define EisaNMI_FailSafe_Control    0x04    // Fail-safe timer mask bit
  125.  
  126. #define EisaNMI_Ports_Mask        0x3e0
  127.  
  128. // Message indexes
  129. #define EisaNMINum_Software    5
  130. #define EisaNMINum_Bus        6
  131. #define EisaNMINum_FailSafe    7
  132. #define EisaNMINum_IoChk    8
  133. #define EisaNMINum_Parity    9
  134.  
  135. // the following constants are used by the WatchdoNMI handling
  136.  
  137. #define EISA_IT_ICOUNTL        0xFFFF        // lsb of count
  138. #define EISA_IT_ICOUNTH        0xFFFF        // msb of count
  139. #define EISA_IT_PERIOD        220        // period of nmi timer in milliseconds
  140.  
  141. #define EISA_IT2_C0_COUNT    0x48        // nmi timer count register
  142. #define EISA_IT2_COMMAND    0x4b        // nmi timer command register
  143.  
  144. #define EISA_INVALID_SLOT    0x80
  145. #define EISA_EMPTY_SLOT        0x83
  146. #define EISA_FUNC_ENABLED    0x80
  147. #define EISA_HAS_MEMORY     0x02
  148. #define EISA_MORE_ENTRIES    0x80
  149. #define ESI_FLAG_RESERVED    0xC0
  150. #define EFI_FUNC_FLAG_RESERVED    0x40
  151. #define EISA_MEMORY_TYPE_MASK    0x18
  152.