host.h 4.4 KB

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