host.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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. unsigned char Type; /* RIO_EISA, RIO_MCA, ... */
  49. unsigned char Ivec; /* POLLED or ivec number */
  50. unsigned char Mode; /* Control stuff */
  51. unsigned char Slot; /* Slot */
  52. caddr_t Caddr; /* KV address of DPRAM */
  53. struct DpRam *CardP; /* KV address of DPRAM, with overlay */
  54. unsigned long PaddrP; /* Phys. address of DPRAM */
  55. char Name[MAX_NAME_LEN]; /* The name of the host */
  56. unsigned int UniqueNum; /* host unique number */
  57. spinlock_t HostLock; /* Lock structure for MPX */
  58. unsigned int WorkToBeDone; /* set to true each interrupt */
  59. unsigned int InIntr; /* Being serviced? */
  60. unsigned int IntSrvDone; /* host's interrupt has been serviced */
  61. void (*Copy) (void *, void *, int); /* copy func */
  62. struct timer_list timer;
  63. /*
  64. ** I M P O R T A N T !
  65. **
  66. ** The rest of this data structure is cleared to zero after
  67. ** a RIO_HOST_FOAD command.
  68. */
  69. unsigned long Flags; /* Whats going down */
  70. #define RC_WAITING 0
  71. #define RC_STARTUP 1
  72. #define RC_RUNNING 2
  73. #define RC_STUFFED 3
  74. #define RC_SOMETHING 4
  75. #define RC_SOMETHING_NEW 5
  76. #define RC_SOMETHING_ELSE 6
  77. #define RC_READY 7
  78. #define RUN_STATE 7
  79. /*
  80. ** Boot mode applies to the way in which hosts in this system will
  81. ** boot RTAs
  82. */
  83. #define RC_BOOT_ALL 0x8 /* Boot all RTAs attached */
  84. #define RC_BOOT_OWN 0x10 /* Only boot RTAs bound to this system */
  85. #define RC_BOOT_NONE 0x20 /* Don't boot any RTAs (slave mode) */
  86. struct Top Topology[LINKS_PER_UNIT]; /* one per link */
  87. struct Map Mapping[MAX_RUP]; /* Mappings for host */
  88. struct PHB *PhbP; /* Pointer to the PHB array */
  89. unsigned short *PhbNumP; /* Ptr to Number of PHB's */
  90. struct LPB *LinkStrP; /* Link Structure Array */
  91. struct RUP *RupP; /* Sixteen real rups here */
  92. struct PARM_MAP *ParmMapP; /* points to the parmmap */
  93. unsigned int ExtraUnits[MAX_EXTRA_UNITS]; /* unknown things */
  94. unsigned int NumExtraBooted; /* how many of the above */
  95. /*
  96. ** Twenty logical rups.
  97. ** The first sixteen are the real Rup entries (above), the last four
  98. ** are the link RUPs.
  99. */
  100. struct UnixRup UnixRups[MAX_RUP + LINKS_PER_UNIT];
  101. int timeout_id; /* For calling 100 ms delays */
  102. int timeout_sem; /* For calling 100 ms delays */
  103. long locks; /* long req'd for set_bit --RR */
  104. char ____end_marker____;
  105. };
  106. #define Control CardP->DpControl
  107. #define SetInt CardP->DpSetInt
  108. #define ResetTpu CardP->DpResetTpu
  109. #define ResetInt CardP->DpResetInt
  110. #define Signature CardP->DpSignature
  111. #define Sram1 CardP->DpSram1
  112. #define Sram2 CardP->DpSram2
  113. #define Sram3 CardP->DpSram3
  114. #define Scratch CardP->DpScratch
  115. #define __ParmMapR CardP->DpParmMapR
  116. #define SLX CardP->DpSlx
  117. #define Revision CardP->DpRevision
  118. #define Unique CardP->DpUnique
  119. #define Year CardP->DpYear
  120. #define Week CardP->DpWeek
  121. #define RIO_DUMBPARM 0x0860 /* what not to expect */
  122. #endif