map.h 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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 : map.h
  24. ** SID : 1.2
  25. ** Last Modified : 11/6/98 11:34:11
  26. ** Retrieved : 11/6/98 11:34:21
  27. **
  28. ** ident @(#)map.h 1.2
  29. **
  30. ** -----------------------------------------------------------------------------
  31. */
  32. #ifndef __rio_map_h__
  33. #define __rio_map_h__
  34. /*
  35. ** mapping structure passed to and from the config.rio program to
  36. ** determine the current topology of the world
  37. */
  38. #define MAX_MAP_ENTRY 17
  39. #define TOTAL_MAP_ENTRIES (MAX_MAP_ENTRY*RIO_SLOTS)
  40. #define MAX_NAME_LEN 32
  41. struct Map {
  42. unsigned int HostUniqueNum; /* Supporting hosts unique number */
  43. unsigned int RtaUniqueNum; /* Unique number */
  44. /*
  45. ** The next two IDs must be swapped on big-endian architectures
  46. ** when using a v2.04 /etc/rio/config with a v3.00 driver (when
  47. ** upgrading for example).
  48. */
  49. unsigned short ID; /* ID used in the subnet */
  50. unsigned short ID2; /* ID of 2nd block of 8 for 16 port */
  51. unsigned long Flags; /* Booted, ID Given, Disconnected */
  52. unsigned long SysPort; /* First tty mapped to this port */
  53. struct Top Topology[LINKS_PER_UNIT]; /* ID connected to each link */
  54. char Name[MAX_NAME_LEN]; /* Cute name by which RTA is known */
  55. };
  56. /*
  57. ** Flag values:
  58. */
  59. #define RTA_BOOTED 0x00000001
  60. #define RTA_NEWBOOT 0x00000010
  61. #define MSG_DONE 0x00000020
  62. #define RTA_INTERCONNECT 0x00000040
  63. #define RTA16_SECOND_SLOT 0x00000080
  64. #define BEEN_HERE 0x00000100
  65. #define SLOT_TENTATIVE 0x40000000
  66. #define SLOT_IN_USE 0x80000000
  67. /*
  68. ** HostUniqueNum is the unique number from the host card that this RTA
  69. ** is to be connected to.
  70. ** RtaUniqueNum is the unique number of the RTA concerned. It will be ZERO
  71. ** if the slot in the table is unused. If it is the same as the HostUniqueNum
  72. ** then this slot represents a host card.
  73. ** Flags contains current boot/route state info
  74. ** SysPort is a value in the range 0-504, being the number of the first tty
  75. ** on this RTA. Each RTA supports 8 ports. The SysPort value must be modulo 8.
  76. ** SysPort 0-127 correspond to /dev/ttyr001 to /dev/ttyr128, with minor
  77. ** numbers 0-127. SysPort 128-255 correspond to /dev/ttyr129 to /dev/ttyr256,
  78. ** again with minor numbers 0-127, and so on for SysPorts 256-383 and 384-511
  79. ** ID will be in the range 0-16 for a `known' RTA. ID will be 0xFFFF for an
  80. ** unused slot/unknown ID etc.
  81. ** The Topology array contains the ID of the unit connected to each of the
  82. ** four links on this unit. The entry will be 0xFFFF if NOTHING is connected
  83. ** to the link, or will be 0xFF00 if an UNKNOWN unit is connected to the link.
  84. ** The Name field is a null-terminated string, upto 31 characters, containing
  85. ** the 'cute' name that the sysadmin/users know the RTA by. It is permissible
  86. ** for this string to contain any character in the range \040 to \176 inclusive.
  87. ** In particular, ctrl sequences and DEL (0x7F, \177) are not allowed. The
  88. ** special character '%' IS allowable, and needs no special action.
  89. **
  90. */
  91. #endif