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

VxWorks

开发平台:

C/C++

  1. /* vme2Pci.h - vme2pci chip configuration header */
  2. /* Copyright 1984-1996 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01d,13nov96,mas  added VME2PCI_IO_OFFSET (SPR 7475).
  7. 01c,28feb95,caf  removed MSW() macro (now in vxWorks.h).
  8. 01b,20jan95,vin  clean up & enhancements.
  9. 01a,09jan95,kvk  created.
  10. */
  11. /*
  12. This file contains type declarations for the vme2pci chip Header 
  13. and the macros for the PCI BUS. This header has been designed
  14. with respect to Genesis 1.5 Engineering Specification Version 1.0A.
  15. Configuration registers have to be accessed as long words.
  16. */
  17. #ifndef INCvme2Pcih
  18. #define INCvme2Pcih
  19. #ifdef  _ASMLANGUAGE
  20. #define CASTB
  21. #else
  22. #define CASTB (char *)
  23. #endif  /* _ASMLANGUAGE */
  24. #define VME2PCI_REG_INTERVAL 4
  25. /* to permit alternative board addressing */
  26. #ifndef VME2PCI_IACK_ADRS
  27. #define VME2PCI_IACK_ADRS(reg) (CASTB (VME2PCI_BASE_ADRS + 
  28. (0xF007) + 
  29. (reg * VME2PCI_REG_INTERVAL)))
  30. #endif  /* VME2PCI_ADRS */
  31. /*
  32.  * Defines for the VME2PCI interrupt acknowledge registers
  33.  */
  34. #define VME2PCI_IACK_LEVEL1 VME2PCI_IACK_ADRS(0x00)
  35. #define VME2PCI_IACK_LEVEL2 VME2PCI_IACK_ADRS(0x01)
  36. #define VME2PCI_IACK_LEVEL3 VME2PCI_IACK_ADRS(0x02)
  37. #define VME2PCI_IACK_LEVEL4 VME2PCI_IACK_ADRS(0x03)
  38. #define VME2PCI_IACK_LEVEL5 VME2PCI_IACK_ADRS(0x04)
  39. #define VME2PCI_IACK_LEVEL6 VME2PCI_IACK_ADRS(0x05)
  40. #define VME2PCI_IACK_LEVEL7 VME2PCI_IACK_ADRS(0x06)
  41. /* configuration space header */
  42. typedef struct
  43.     {
  44. #if (_BYTE_ORDER == _BIG_ENDIAN)
  45.     UINT16 pciSlvEndAddr1; /* slave end addr1      0x40 */
  46.     UINT16 pciSlvStrtAddr1;  /* slave start addr1    0x42 */
  47.     UINT16 pciSlvEnable1;  /* pci slave enable 1   0x44 */
  48.     UINT16 pciSlvAddrOffset1; /* addr offset 1        0x46 */
  49.     UINT16 pciSlvEndAddr2; /* slave end addr2      0x48 */
  50.     UINT16 pciSlvStrtAddr2;  /* slave start addr2    0x4A */
  51.     UINT16 pciSlvEnable2;  /* pci slave enable 2   0x4C */
  52.     UINT16 pciSlvAddrOffset2; /* addr offset 2        0x4E */
  53. #else
  54.     UINT16 pciSlvStrtAddr1;  /* slave start addr1    0x40 */
  55.     UINT16 pciSlvEndAddr1; /* slave end addr1      0x42 */
  56.     UINT16 pciSlvAddrOffset1; /* addr offset 1        0x44 */
  57.     UINT16 pciSlvEnable1;  /* pci slave enable 1   0x46 */
  58.     UINT16 pciSlvStrtAddr2;  /* slave start addr2    0x48 */
  59.     UINT16 pciSlvEndAddr2; /* slave end addr2      0x4A */
  60.     UINT16 pciSlvAddrOffset2; /* addr offset 2        0x4C */
  61.     UINT16 pciSlvEnable2;  /* pci slave enable 2   0x4E */
  62. #endif /* _BYTE_ORDER == _BIG_ENDIAN */
  63.     UINT32 pciIntEnable;  /* pending intrpt enabl 0x50 */
  64.     } VME2PCI_CNFG_HDR;
  65. #define VME2PCI_CNFG_OFFSET 0x40 /* offset vme2Pci specific part */
  66. #define VME2PCI_IO_OFFSET 0xF840 /* offset vme2Pci specific IO space */
  67. /* vme2pci device specific masks */
  68. #define VME2PCI_SLV_ADDR_MASK 0xffff0000 /* pci slave addr mask */
  69. #define VME2PCI_SLV_EN_MASK 0x00010000 /* slave enable mask */
  70. #define VME2PCI_INT_MASK        0x00000008 /* vme2PCI interrupt mask */
  71. #define VME2PCI_INT_LVL_MASK 0x00000007 /* vme2PCI intr level mask */
  72. #define VME2PCI_INT_LVL_GET(x) (x & VME2PCI_INT_LVL_MASK)
  73. #define VME2PCI_SLAVE_ENABLE 0x0001 /* slave enable flag */
  74. #define VME2PCI_INT_ENABLE 0x00000008 /* Vme2PCI interrupt enable */
  75. /* pci function declerations */
  76. #if defined(__STDC__) || defined(__cplusplus)
  77. extern int sysVme2PciInit (VME2PCI_CNFG_HDR * pVme2PciCnfgHdr,
  78. ULONG  vme2PciCnfgBase); 
  79. #else
  80. extern int sysVme2PciInit ();
  81. #endif /* __STDC__ */
  82. #endif /* INCvme2Pcih */