host.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /*
  2. ** -----------------------------------------------------------------------------
  3. **
  4. ** Perle Specialix driver for Linux
  5. ** Ported from existing RIO Driver for SCO sources.
  6. *
  7. * (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK.
  8. *
  9. * This program is free software; you can redistribute it and/or modify
  10. * it under the terms of the GNU General Public License as published by
  11. * the Free Software Foundation; either version 2 of the License, or
  12. * (at your option) any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU General Public License
  20. * along with this program; if not, write to the Free Software
  21. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  22. **
  23. ** Module : host.h
  24. ** SID : 1.2
  25. ** Last Modified : 11/6/98 11:34:10
  26. ** Retrieved : 11/6/98 11:34:21
  27. **
  28. ** ident @(#)host.h 1.2
  29. **
  30. ** -----------------------------------------------------------------------------
  31. */
  32. #ifndef __rio_host_h__
  33. #define __rio_host_h__
  34. #ifdef SCCS_LABELS
  35. #ifndef lint
  36. static char *_host_h_sccs_ = "@(#)host.h 1.2";
  37. #endif
  38. #endif
  39. /*
  40. ** the host structure - one per host card in the system.
  41. */
  42. #define MAX_EXTRA_UNITS 64
  43. /*
  44. ** Host data structure. This is used for the software equiv. of
  45. ** the host.
  46. */
  47. struct Host
  48. {
  49. uchar Type; /* RIO_EISA, RIO_MCA, ... */
  50. uchar Ivec; /* POLLED or ivec number */
  51. uchar Mode; /* Control stuff */
  52. uchar Slot; /* Slot */
  53. volatile caddr_t Caddr; /* KV address of DPRAM */
  54. volatile struct DpRam *CardP; /* KV address of DPRAM, with overlay */
  55. paddr_t PaddrP; /* Phys. address of DPRAM */
  56. char Name[MAX_NAME_LEN]; /* The name of the host */
  57. uint UniqueNum; /* host unique number */
  58. spinlock_t HostLock; /* Lock structure for MPX */
  59. /*struct pci_devinfo PciDevInfo; *//* PCI Bus/Device/Function stuff */
  60. /*struct lockb HostLock; *//* Lock structure for MPX */
  61. uint WorkToBeDone; /* set to true each interrupt */
  62. uint InIntr; /* Being serviced? */
  63. uint IntSrvDone;/* host's interrupt has been serviced */
  64. int (*Copy)( caddr_t, caddr_t, int ); /* copy func */
  65. struct timer_list timer;
  66. /*
  67. ** I M P O R T A N T !
  68. **
  69. ** The rest of this data structure is cleared to zero after
  70. ** a RIO_HOST_FOAD command.
  71. */
  72. ulong Flags; /* Whats going down */
  73. #define RC_WAITING 0
  74. #define RC_STARTUP 1
  75. #define RC_RUNNING 2
  76. #define RC_STUFFED 3
  77. #define RC_SOMETHING 4
  78. #define RC_SOMETHING_NEW 5
  79. #define RC_SOMETHING_ELSE 6
  80. #define RC_READY 7
  81. #define RUN_STATE 7
  82. /*
  83. ** Boot mode applies to the way in which hosts in this system will
  84. ** boot RTAs
  85. */
  86. #define RC_BOOT_ALL 0x8 /* Boot all RTAs attached */
  87. #define RC_BOOT_OWN 0x10 /* Only boot RTAs bound to this system */
  88. #define RC_BOOT_NONE 0x20 /* Don't boot any RTAs (slave mode) */
  89. struct Top Topology[LINKS_PER_UNIT]; /* one per link */
  90. struct Map Mapping[MAX_RUP]; /* Mappings for host */
  91. struct PHB *PhbP; /* Pointer to the PHB array */
  92. ushort *PhbNumP; /* Ptr to Number of PHB's */
  93. struct LPB *LinkStrP ; /* Link Structure Array */
  94. struct RUP *RupP; /* Sixteen real rups here */
  95. struct PARM_MAP *ParmMapP; /* points to the parmmap */
  96. uint ExtraUnits[MAX_EXTRA_UNITS]; /* unknown things */
  97. uint NumExtraBooted; /* how many of the above */
  98. /*
  99. ** Twenty logical rups.
  100. ** The first sixteen are the real Rup entries (above), the last four
  101. ** are the link RUPs.
  102. */
  103. struct UnixRup UnixRups[MAX_RUP+LINKS_PER_UNIT];
  104. int timeout_id; /* For calling 100 ms delays */
  105. int timeout_sem;/* For calling 100 ms delays */
  106. long locks; /* long req'd for set_bit --RR */
  107. char ____end_marker____;
  108. };
  109. #define Control CardP->DpControl
  110. #define SetInt CardP->DpSetInt
  111. #define ResetTpu CardP->DpResetTpu
  112. #define ResetInt CardP->DpResetInt
  113. #define Signature CardP->DpSignature
  114. #define Sram1 CardP->DpSram1
  115. #define Sram2 CardP->DpSram2
  116. #define Sram3 CardP->DpSram3
  117. #define Scratch CardP->DpScratch
  118. #define __ParmMapR CardP->DpParmMapR
  119. #define SLX CardP->DpSlx
  120. #define Revision CardP->DpRevision
  121. #define Unique CardP->DpUnique
  122. #define Year CardP->DpYear
  123. #define Week CardP->DpWeek
  124. #define RIO_DUMBPARM 0x0860 /* what not to expect */
  125. #endif