riodrvr.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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 : riodrvr.h
  24. ** SID : 1.3
  25. ** Last Modified : 11/6/98 09:22:46
  26. ** Retrieved : 11/6/98 09:22:46
  27. **
  28. ** ident @(#)riodrvr.h 1.3
  29. **
  30. ** -----------------------------------------------------------------------------
  31. */
  32. #ifndef __riodrvr_h
  33. #define __riodrvr_h
  34. #include <asm/param.h> /* for HZ */
  35. #define MEMDUMP_SIZE 32
  36. #define MOD_DISABLE (RIO_NOREAD|RIO_NOWRITE|RIO_NOXPRINT)
  37. struct rio_info {
  38. int mode; /* Intr or polled, word/byte */
  39. spinlock_t RIOIntrSem; /* Interrupt thread sem */
  40. int current_chan; /* current channel */
  41. int RIOFailed; /* Not initialised ? */
  42. int RIOInstallAttempts; /* no. of rio-install() calls */
  43. int RIOLastPCISearch; /* status of last search */
  44. int RIONumHosts; /* Number of RIO Hosts */
  45. struct Host *RIOHosts; /* RIO Host values */
  46. struct Port **RIOPortp; /* RIO port values */
  47. /*
  48. ** 02.03.1999 ARG - ESIL 0820 fix
  49. ** We no longer use RIOBootMode
  50. **
  51. int RIOBootMode; * RIO boot mode *
  52. **
  53. */
  54. int RIOPrintDisabled; /* RIO printing disabled ? */
  55. int RIOPrintLogState; /* RIO printing state ? */
  56. int RIOPolling; /* Polling ? */
  57. /*
  58. ** 09.12.1998 ARG - ESIL 0776 part fix
  59. ** The 'RIO_QUICK_CHECK' ioctl was using RIOHalted.
  60. ** The fix for this ESIL introduces another member (RIORtaDisCons) here to be
  61. ** updated in RIOConCon() - to keep track of RTA connections/disconnections.
  62. ** 'RIO_QUICK_CHECK' now returns the value of RIORtaDisCons.
  63. */
  64. int RIOHalted; /* halted ? */
  65. int RIORtaDisCons; /* RTA connections/disconnections */
  66. unsigned int RIOReadCheck; /* Rio read check */
  67. unsigned int RIONoMessage; /* To display message or not */
  68. unsigned int RIONumBootPkts; /* how many packets for an RTA */
  69. unsigned int RIOBootCount; /* size of RTA code */
  70. unsigned int RIOBooting; /* count of outstanding boots */
  71. unsigned int RIOSystemUp; /* Booted ?? */
  72. unsigned int RIOCounting; /* for counting interrupts */
  73. unsigned int RIOIntCount; /* # of intr since last check */
  74. unsigned int RIOTxCount; /* number of xmit intrs */
  75. unsigned int RIORxCount; /* number of rx intrs */
  76. unsigned int RIORupCount; /* number of rup intrs */
  77. int RIXTimer;
  78. int RIOBufferSize; /* Buffersize */
  79. int RIOBufferMask; /* Buffersize */
  80. int RIOFirstMajor; /* First host card's major no */
  81. unsigned int RIOLastPortsMapped; /* highest port number known */
  82. unsigned int RIOFirstPortsMapped; /* lowest port number known */
  83. unsigned int RIOLastPortsBooted; /* highest port number running */
  84. unsigned int RIOFirstPortsBooted; /* lowest port number running */
  85. unsigned int RIOLastPortsOpened; /* highest port number running */
  86. unsigned int RIOFirstPortsOpened; /* lowest port number running */
  87. /* Flag to say that the topology information has been changed. */
  88. unsigned int RIOQuickCheck;
  89. unsigned int CdRegister; /* ??? */
  90. int RIOSignalProcess; /* Signalling process */
  91. int rio_debug; /* To debug ... */
  92. int RIODebugWait; /* For what ??? */
  93. int tpri; /* Thread prio */
  94. int tid; /* Thread id */
  95. unsigned int _RIO_Polled; /* Counter for polling */
  96. unsigned int _RIO_Interrupted; /* Counter for interrupt */
  97. int intr_tid; /* iointset return value */
  98. int TxEnSem; /* TxEnable Semaphore */
  99. struct Error RIOError; /* to Identify what went wrong */
  100. struct Conf RIOConf; /* Configuration ??? */
  101. struct ttystatics channel[RIO_PORTS]; /* channel information */
  102. char RIOBootPackets[1 + (SIXTY_FOUR_K / RTA_BOOT_DATA_SIZE)]
  103. [RTA_BOOT_DATA_SIZE];
  104. struct Map RIOConnectTable[TOTAL_MAP_ENTRIES];
  105. struct Map RIOSavedTable[TOTAL_MAP_ENTRIES];
  106. /* RTA to host binding table for master/slave operation */
  107. unsigned long RIOBindTab[MAX_RTA_BINDINGS];
  108. /* RTA memory dump variable */
  109. unsigned char RIOMemDump[MEMDUMP_SIZE];
  110. struct ModuleInfo RIOModuleTypes[MAX_MODULE_TYPES];
  111. };
  112. #ifdef linux
  113. #define debug(x) printk x
  114. #else
  115. #define debug(x) kkprintf x
  116. #endif
  117. #define RIO_RESET_INT 0x7d80
  118. #endif /* __riodrvr.h */