smcFdc37b78x.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:6k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* smcFdc37b78x.h - a super i/o initialization include module */
  2. /* Copyright 1984-1993 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,28mar00,mks written.
  7. */
  8. /*
  9. DESCRIPTION
  10. This file contains mnemonics for SUPER I/0 (fdc37b78x) chip initialization.
  11. */
  12. #ifndef INCsmcfdc37b78xh
  13. #define INCsmcfdc37b78xh
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif /* __cplusplus */
  17. /* defines */
  18.     
  19. /* wiring-dependent SMCFDC37B78X variables */    
  20. #ifndef SMCFDC37B78X_CONFIG_PORT
  21. #define SMCFDC37B78X_CONFIG_PORT 0x0370 
  22. #endif
  23. #ifndef SMCFDC37B78X_INDEX_PORT
  24. #define SMCFDC37B78X_INDEX_PORT         0x0370
  25. #endif
  26. #ifndef SMCFDC37B78X_DATA_PORT
  27. #define SMCFDC37B78X_DATA_PORT         (SMCFDC37B78X_INDEX_PORT + 1)
  28. #endif
  29. #define SMCFDC37B78XWRT(ioPort, value) sysOutByte (ioPort, value)
  30. #define SMCFDC37B78XRD(ioPort)         sysInByte (ioPort)
  31. /* configuration mode begin command */    
  32. #define SMCFDC37B78X_CONFIG_START       0x55
  33. /* configuration mode end command */    
  34. #define SMCFDC37B78X_CONFIG_END         0xAA   
  35. /* chip level registers */
  36.     
  37. /* logical device configuration register */
  38. #define SMCFDC37B7X_LOGDEVCFGREG  0x07  
  39. /* logical device level registers */
  40. #define SMCFDC37B78X_LOGDEV_ACTIVATE    0x30    /* activation register */
  41. #define SMCFDC37B78X_IOBASE_HIGH 0x60    /* i/o base - high byte */
  42. #define SMCFDC37B78X_IOBASE_LOW 0x61    /* i/o base - low byte */
  43. #define SMCFDC37B78X_INTERRUPT 0x70    /* interrupt config */
  44. #define SMCFDC37B78X_MODE 0xF0    /* mode register */
  45. /* defined logical devices */
  46. #define SMCFDC37B78X_FDD 0x00    /* floppy disk drive */
  47. #define SMCFDC37B78X_LPT1       0x03    /* parallel port */
  48. #define SMCFDC37B78X_COM1 0x04    /* serial device - port 1 */
  49. #define SMCFDC37B78X_COM2 0x05    /* serial device - port 2 */
  50. #define SMCFDC37B78X_KBD        0x07    /* keyboard */
  51. #define SMCFDC37B78X_AUX 0x08    /* auxiliary i/o */
  52. #define SMCFDC37B78X_ACPI       0x0A    /* ACPI */
  53. /* use these defines for enabling specific device. DON'T USE ONE ABOVE. */
  54. #define SMCFDC37B78X_FDD_EN 0x01    /* floppy disk drive */
  55. #define SMCFDC37B78X_LPT1_EN    0x02    /* parallel port */
  56. #define SMCFDC37B78X_COM1_EN    0x04    /* serial device - port 1 */
  57. #define SMCFDC37B78X_COM2_EN 0x08    /* serial device - port 2 */
  58. #define SMCFDC37B78X_KBD_EN     0x10    /* keyboard */
  59.     
  60. /* device specific intialization values */
  61. #define SMCFDC37B78X_ACT_DEV    0x01    /* activate device */
  62. #define SMCFDC37B78X_COM_HSM 0x02    /* enable high speed services on COM */
  63. #define SMCFDC37B78X_INTR_KBD   0x01    /* irq line # 1 tied to KBD */
  64. #define SMCFDC37B78X_INTR_COM1 0x04    /* irq line # 4 tied to COM 1 */
  65. #define SMCFDC37B78X_INTR_COM2 0x03    /* irq line # 5 tied to COM 2 */
  66. #define SMCFDC37B78X_INTR_LPT1 0x07    /* irq line # 7 tied to LPT */
  67. #define SMCFDC37B78X_COM_MCR         0x04
  68. #define SMCFDC37B78X_COM_MCROUT2 0x08    
  69. #define SMCFDC37B78X_COM_MCROUT2_MASK   0x08
  70. #define SMCFDC37B78X_COM1_IOHIGH 0x03    /* COM1, i/o high byte */
  71. #define SMCFDC37B78X_COM1_IOLOW 0xF8    /* COM1, i/o low  byte */
  72. #define SMCFDC37B78X_COM1_IOBASE 0x03F8  /* COM1, i/o address */
  73. #define SMCFDC37B78X_COM1_MCR           (SMCFDC37B78X_COM1_IOBASE + 
  74.                                         SMCFDC37B78X_COM_MCR)
  75. #define SMCFDC37B78X_COM2_IOHIGH 0x02    /* COM2, i/o high byte */
  76. #define SMCFDC37B78X_COM2_IOLOW 0xF8    /* COM2, i/o low  byte */
  77. #define SMCFDC37B78X_COM2_IOBASE 0x02F8  /* COM2, i/o address */
  78. #define SMCFDC37B78X_COM2_MCR           (SMCFDC37B78X_COM2_IOBASE + 
  79.                                         SMCFDC37B78X_COM_MCR)
  80. #define SMCFDC37B78X_LPT1_IOHIGH 0x03    /* LPT1, i/o high byte */
  81. #define SMCFDC37B78X_LPT1_IOLOW 0xBC    /* LPT1, i/o low  byte */
  82. #define SMCFDC37B78X_LPT1_IOBASE 0x03BC  /* LPT1, i/o address */
  83. /* GPIO Stuff */
  84. #define SMCFDC37B78X_IRQMUX_IDX 0xC0    /* IRQ Mux register */
  85. #define SMCFDC37B78X_IRQ_PARALLEL 0x07
  86. #define SMCFDC37B78X_GP53_INDEX 0xD4    /* IRQ 2 pin */
  87. #define SMCFDC37B78X_GP53_IRQ11_OUT 0x08
  88. #define SMCFDC37B78X_GP60_INDEX 0xD0    /* IRQ 1 pin */
  89. #define SMCFDC37B78X_GP60_IRQ1_OUT 0x08
  90. #define SMCFDC37B78X_GP61_INDEX 0xD1    /* IRQ 3 pin */
  91. #define SMCFDC37B78X_GP61_IRQ3_OUT 0x08
  92. #define SMCFDC37B78X_GP62_INDEX 0xD2    /* IRQ 4 pin */
  93. #define SMCFDC37B78X_GP62_IRQ4_OUT 0x08
  94. #define SMCFDC37B78X_GP64_INDEX 0xD4    /* IRQ 6 pin */
  95. #define SMCFDC37B78X_GP64_IRQ6_OUT 0x08
  96. #define SMCFDC37B78X_GP65_INDEX 0xD5    /* IRQ 7 pin */
  97. #define SMCFDC37B78X_GP65_IRQ7_OUT 0x08
  98. /* defined masks */
  99. #define SMCFDC37B78X_COM_HSM_MASK 0x00
  100. #define SMCFDC37B78X_GP_FUNC_MASK 0xBB
  101. #define SMCFDC37B78X_IRQ_PARALLEL_MASK 0x07
  102. #define SMCFDC37B78X_MASK_ALL    0xFF
  103. /* keyboard specific defines */
  104. #define SMCFDC37B78X_KBD_DATA           0x60  /* ISA port addresses */
  105. #define SMCFDC37B78X_KBD_CTLSTS         0x64
  106. #define SMCFDC37B78X_KBD_CCMD_SELFTEST  0xAA  /* kbd controller commands */
  107. #define SMCFDC37B78X_KBD_CCMD_IFCTEST   0xAB
  108. #define SMCFDC37B78X_KBD_CCMD_WRTPORT2  0xD1
  109. #define SMCFDC37B78X_KBD_CTLSTS_IBF     0x2   /* kbd status bit [1:0] */
  110. #define SMCFDC37B78X_KBD_CTLSTS_OBF     0x1
  111. #define SMCFDC37B78X_KBD_SELFTEST_PASS  0x55     
  112. #define SMCFDC37B78X_KBD_IFCTEST_PASS   0x00
  113. #define SMCFDC37B78X_KBD_IRQ_KSC_EN     0xD3
  114. #define SMCFDC37B78X_KBD_DELAY()        sysWait()
  115. #define SMCFDC37B78X_KBD_RD_DATA()      (SMCFDC37B78X_KBD_DELAY(), 
  116.                                         sysInByte (SMCFDC37B78X_KBD_DATA))
  117. #define SMCFDC37B78X_KBD_RD_CTLSTS()    (SMCFDC37B78X_KBD_DELAY(), 
  118.                                         sysInByte (SMCFDC37B78X_KBD_CTLSTS))
  119. #define SMCFDC37B78X_KBD_WRT_DATA(x)    (SMCFDC37B78X_KBD_DELAY(), 
  120.                                         sysOutByte (SMCFDC37B78X_KBD_DATA, x))
  121. #define SMCFDC37B78X_KBD_WRT_CTLSTS(x)  (SMCFDC37B78X_KBD_DELAY(), 
  122.                                         sysOutByte (SMCFDC37B78X_KBD_CTLSTS, x))
  123.     
  124. /* typedefs */
  125. typedef struct smcFdc37b78x_IoPorts
  126.     {
  127.     int    config;
  128.     int    index;
  129.     int    data;
  130.     } SMCFDC37B78X_IOPORTS;
  131. /* function declarations */
  132. extern VOID   smcFdc37b78xDevCreate (SMCFDC37B78X_IOPORTS *fdc37b78x_iop);        
  133. extern VOID   smcFdc37b78xInit (int devInitMask);
  134. extern STATUS smcFdc37b78xKbdInit (VOID);
  135. #ifdef __cplusplus
  136. }
  137. #endif /* __cplusplus */
  138.     
  139. #endif /* INCsmcfdc37b78xh */