Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /************************************************************************/ |
| 2 | /* */ |
| 3 | /* Title : RIO Shared Memory Window Inteface */ |
| 4 | /* */ |
| 5 | /* Author : N.P.Vassallo */ |
| 6 | /* */ |
| 7 | /* Creation : 7th June 1999 */ |
| 8 | /* */ |
| 9 | /* Version : 1.0.0 */ |
| 10 | /* */ |
| 11 | /* Copyright : (c) Specialix International Ltd. 1999 * |
| 12 | * This program is free software; you can redistribute it and/or modify |
| 13 | * it under the terms of the GNU General Public License as published by |
| 14 | * the Free Software Foundation; either version 2 of the License, or |
| 15 | * (at your option) any later version. |
| 16 | * |
| 17 | * This program is distributed in the hope that it will be useful, |
| 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 20 | * GNU General Public License for more details. |
| 21 | * |
| 22 | * You should have received a copy of the GNU General Public License |
| 23 | * along with this program; if not, write to the Free Software |
| 24 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| 25 | * */ |
| 26 | /* Description : Prototypes, structures and definitions */ |
| 27 | /* describing RIO host card shared memory */ |
| 28 | /* window interface structures: */ |
| 29 | /* PARMMAP */ |
| 30 | /* RUP */ |
| 31 | /* PHB */ |
| 32 | /* LPB */ |
| 33 | /* PKT */ |
| 34 | /* */ |
| 35 | /************************************************************************/ |
| 36 | |
| 37 | /* History... |
| 38 | |
| 39 | 1.0.0 07/06/99 NPV Creation. (based on PARMMAP.H) |
| 40 | |
| 41 | */ |
| 42 | |
| 43 | #ifndef _riowinif_h /* If RIOWINDIF.H not already defined */ |
| 44 | #define _riowinif_h 1 |
| 45 | |
| 46 | /***************************************************************************** |
| 47 | ******************************** ********************************* |
| 48 | ******************************** General ********************************* |
| 49 | ******************************** ********************************* |
| 50 | *****************************************************************************/ |
| 51 | |
| 52 | #define TPNULL ((_u16)(0x8000)) |
| 53 | |
| 54 | /***************************************************************************** |
| 55 | ******************************** ******************************** |
| 56 | ******************************** PARM_MAP ******************************** |
| 57 | ******************************** ******************************** |
| 58 | *****************************************************************************/ |
| 59 | |
| 60 | /* The PARM_MAP structure defines global values relating to the Host Card / RTA |
| 61 | and is the main structure from which all other structures are referenced. */ |
| 62 | |
| 63 | typedef struct _PARM_MAP |
| 64 | { |
| 65 | _u16 phb_ptr; /* 0x00 Pointer to the PHB array */ |
| 66 | _u16 phb_num_ptr; /* 0x02 Ptr to Number of PHB's */ |
| 67 | _u16 free_list; /* 0x04 Free List pointer */ |
| 68 | _u16 free_list_end; /* 0x06 Free List End pointer */ |
| 69 | _u16 q_free_list_ptr; /* 0x08 Ptr to Q_BUF variable */ |
| 70 | _u16 unit_id_ptr; /* 0x0A Unit Id */ |
| 71 | _u16 link_str_ptr; /* 0x0C Link Structure Array */ |
| 72 | _u16 bootloader_1; /* 0x0E 1st Stage Boot Loader */ |
| 73 | _u16 bootloader_2; /* 0x10 2nd Stage Boot Loader */ |
| 74 | _u16 port_route_map_ptr; /* 0x12 Port Route Map */ |
| 75 | _u16 route_ptr; /* 0x14 Route Map */ |
| 76 | _u16 map_present; /* 0x16 Route Map present */ |
| 77 | _u16 pkt_num; /* 0x18 Total number of packets */ |
| 78 | _u16 q_num; /* 0x1A Total number of Q packets */ |
| 79 | _u16 buffers_per_port; /* 0x1C Number of buffers per port */ |
| 80 | _u16 heap_size; /* 0x1E Initial size of heap */ |
| 81 | _u16 heap_left; /* 0x20 Current Heap left */ |
| 82 | _u16 error; /* 0x22 Error code */ |
| 83 | _u16 tx_max; /* 0x24 Max number of tx pkts per phb */ |
| 84 | _u16 rx_max; /* 0x26 Max number of rx pkts per phb */ |
| 85 | _u16 rx_limit; /* 0x28 For high / low watermarks */ |
| 86 | _u16 links; /* 0x2A Links to use */ |
| 87 | _u16 timer; /* 0x2C Interrupts per second */ |
| 88 | _u16 rups; /* 0x2E Pointer to the RUPs */ |
| 89 | _u16 max_phb; /* 0x30 Mostly for debugging */ |
| 90 | _u16 living; /* 0x32 Just increments!! */ |
| 91 | _u16 init_done; /* 0x34 Initialisation over */ |
| 92 | _u16 booting_link; /* 0x36 */ |
| 93 | _u16 idle_count; /* 0x38 Idle time counter */ |
| 94 | _u16 busy_count; /* 0x3A Busy counter */ |
| 95 | _u16 idle_control; /* 0x3C Control Idle Process */ |
| 96 | _u16 tx_intr; /* 0x3E TX interrupt pending */ |
| 97 | _u16 rx_intr; /* 0x40 RX interrupt pending */ |
| 98 | _u16 rup_intr; /* 0x42 RUP interrupt pending */ |
| 99 | |
| 100 | } PARM_MAP; |
| 101 | |
| 102 | /* Same thing again, but defined as offsets... */ |
| 103 | |
| 104 | #define PM_phb_ptr 0x00 /* 0x00 Pointer to the PHB array */ |
| 105 | #define PM_phb_num_ptr 0x02 /* 0x02 Ptr to Number of PHB's */ |
| 106 | #define PM_free_list 0x04 /* 0x04 Free List pointer */ |
| 107 | #define PM_free_list_end 0x06 /* 0x06 Free List End pointer */ |
| 108 | #define PM_q_free_list_ptr 0x08 /* 0x08 Ptr to Q_BUF variable */ |
| 109 | #define PM_unit_id_ptr 0x0A /* 0x0A Unit Id */ |
| 110 | #define PM_link_str_ptr 0x0C /* 0x0C Link Structure Array */ |
| 111 | #define PM_bootloader_1 0x0E /* 0x0E 1st Stage Boot Loader */ |
| 112 | #define PM_bootloader_2 0x10 /* 0x10 2nd Stage Boot Loader */ |
| 113 | #define PM_port_route_map_ptr 0x12 /* 0x12 Port Route Map */ |
| 114 | #define PM_route_ptr 0x14 /* 0x14 Route Map */ |
| 115 | #define PM_map_present 0x16 /* 0x16 Route Map present */ |
| 116 | #define PM_pkt_num 0x18 /* 0x18 Total number of packets */ |
| 117 | #define PM_q_num 0x1A /* 0x1A Total number of Q packets */ |
| 118 | #define PM_buffers_per_port 0x1C /* 0x1C Number of buffers per port */ |
| 119 | #define PM_heap_size 0x1E /* 0x1E Initial size of heap */ |
| 120 | #define PM_heap_left 0x20 /* 0x20 Current Heap left */ |
| 121 | #define PM_error 0x22 /* 0x22 Error code */ |
| 122 | #define PM_tx_max 0x24 /* 0x24 Max number of tx pkts per phb */ |
| 123 | #define PM_rx_max 0x26 /* 0x26 Max number of rx pkts per phb */ |
| 124 | #define PM_rx_limit 0x28 /* 0x28 For high / low watermarks */ |
| 125 | #define PM_links 0x2A /* 0x2A Links to use */ |
| 126 | #define PM_timer 0x2C /* 0x2C Interrupts per second */ |
| 127 | #define PM_rups 0x2E /* 0x2E Pointer to the RUPs */ |
| 128 | #define PM_max_phb 0x30 /* 0x30 Mostly for debugging */ |
| 129 | #define PM_living 0x32 /* 0x32 Just increments!! */ |
| 130 | #define PM_init_done 0x34 /* 0x34 Initialisation over */ |
| 131 | #define PM_booting_link 0x36 /* 0x36 */ |
| 132 | #define PM_idle_count 0x38 /* 0x38 Idle time counter */ |
| 133 | #define PM_busy_count 0x3A /* 0x3A Busy counter */ |
| 134 | #define PM_idle_control 0x3C /* 0x3C Control Idle Process */ |
| 135 | #define PM_tx_intr 0x3E /* 0x4E TX interrupt pending */ |
| 136 | #define PM_rx_intr 0x40 /* 0x40 RX interrupt pending */ |
| 137 | #define PM_rup_intr 0x42 /* 0x42 RUP interrupt pending */ |
| 138 | #define sizeof_PARM_MAP 0x44 /* structure size = 0x44 */ |
| 139 | |
| 140 | /* PARM_MAP.error definitions... */ |
| 141 | #define E_NO_ERROR 0x00 |
| 142 | #define E_PROCESS_NOT_INIT 0x01 |
| 143 | #define E_LINK_TIMEOUT 0x02 |
| 144 | #define E_NO_ROUTE 0x03 |
| 145 | #define E_CONFUSED 0x04 |
| 146 | #define E_HOME 0x05 |
| 147 | #define E_CSUM_FAIL 0x06 |
| 148 | #define E_DISCONNECTED 0x07 |
| 149 | #define E_BAD_RUP 0x08 |
| 150 | #define E_NO_VIRGIN 0x09 |
| 151 | #define E_BOOT_RUP_BUSY 0x10 |
| 152 | #define E_CHANALLOC 0x80 |
| 153 | #define E_POLL_ALLOC 0x81 |
| 154 | #define E_LTTWAKE 0x82 |
| 155 | #define E_LTT_ALLOC 0x83 |
| 156 | #define E_LRT_ALLOC 0x84 |
| 157 | #define E_CIRRUS 0x85 |
| 158 | #define E_MONITOR 0x86 |
| 159 | #define E_PHB_ALLOC 0x87 |
| 160 | #define E_ARRAY_ALLOC 0x88 |
| 161 | #define E_QBUF_ALLOC 0x89 |
| 162 | #define E_PKT_ALLOC 0x8a |
| 163 | #define E_GET_TX_Q_BUF 0x8b |
| 164 | #define E_GET_RX_Q_BUF 0x8c |
| 165 | #define E_MEM_OUT 0x8d |
| 166 | #define E_MMU_INIT 0x8e |
| 167 | #define E_LTT_INIT 0x8f |
| 168 | #define E_LRT_INIT 0x90 |
| 169 | #define E_LINK_RUN 0x91 |
| 170 | #define E_MONITOR_ALLOC 0x92 |
| 171 | #define E_MONITOR_INIT 0x93 |
| 172 | #define E_POLL_INIT 0x94 |
| 173 | |
| 174 | /* PARM_MAP.links definitions... */ |
| 175 | #define RIO_LINK_ENABLE 0x80FF |
| 176 | |
| 177 | /***************************************************************************** |
| 178 | ********************************** *********************************** |
| 179 | ********************************** RUP *********************************** |
| 180 | ********************************** *********************************** |
| 181 | *****************************************************************************/ |
| 182 | |
| 183 | /* The RUP (Remote Unit Port) structure relates to the Remote Terminal Adapters |
| 184 | attached to the system and there is normally an array of MAX_RUPS (=16) structures |
| 185 | in a host card, defined by PARM_MAP->rup. */ |
| 186 | |
| 187 | typedef struct _RUP |
| 188 | { |
| 189 | _u16 txpkt; /* 0x00 Outgoing packet */ |
| 190 | _u16 rxpkt; /* 0x02 ncoming packet */ |
| 191 | _u16 link; /* 0x04 Which link to send packet down ? */ |
| 192 | _u8 rup_dest_unit[2]; /* 0x06 Destination Unit */ |
| 193 | _u16 handshake; /* 0x08 Handshaking */ |
| 194 | _u16 timeout; /* 0x0A Timeout */ |
| 195 | _u16 status; /* 0x0C Status */ |
| 196 | _u16 txcontrol; /* 0x0E Transmit control */ |
| 197 | _u16 rxcontrol; /* 0x10 Receive control */ |
| 198 | |
| 199 | } RUP; |
| 200 | |
| 201 | /* Same thing again, but defined as offsets... */ |
| 202 | |
| 203 | #define RUP_txpkt 0x00 /* 0x00 Outgoing packet */ |
| 204 | #define RUP_rxpkt 0x02 /* 0x02 Incoming packet */ |
| 205 | #define RUP_link 0x04 /* 0x04 Which link to send packet down ? */ |
| 206 | #define RUP_rup_dest_unit 0x06 /* 0x06 Destination Unit */ |
| 207 | #define RUP_handshake 0x08 /* 0x08 Handshaking */ |
| 208 | #define RUP_timeout 0x0A /* 0x0A Timeout */ |
| 209 | #define RUP_status 0x0C /* 0x0C Status */ |
| 210 | #define RUP_txcontrol 0x0E /* 0x0E Transmit control */ |
| 211 | #define RUP_rxcontrol 0x10 /* 0x10 Receive control */ |
| 212 | #define sizeof_RUP 0x12 /* structure size = 0x12 */ |
| 213 | |
| 214 | #define MAX_RUP 16 |
| 215 | |
| 216 | /* RUP.txcontrol definitions... */ |
| 217 | #define TX_RUP_INACTIVE 0 /* Nothing to transmit */ |
| 218 | #define TX_PACKET_READY 1 /* Transmit packet ready */ |
| 219 | #define TX_LOCK_RUP 2 /* Transmit side locked */ |
| 220 | |
| 221 | /* RUP.txcontrol definitions... */ |
| 222 | #define RX_RUP_INACTIVE 0 /* Nothing received */ |
| 223 | #define RX_PACKET_READY 1 /* Packet received */ |
| 224 | |
| 225 | #define RUP_NO_OWNER 0xFF /* RUP not owned by any process */ |
| 226 | |
| 227 | /***************************************************************************** |
| 228 | ********************************** *********************************** |
| 229 | ********************************** PHB *********************************** |
| 230 | ********************************** *********************************** |
| 231 | *****************************************************************************/ |
| 232 | |
| 233 | /* The PHB (Port Header Block) structure relates to the serial ports attached |
| 234 | to the system and there is normally an array of MAX_PHBS (=128) structures |
| 235 | in a host card, defined by PARM_MAP->phb_ptr and PARM_MAP->phb_num_ptr. */ |
| 236 | |
| 237 | typedef struct _PHB |
| 238 | { |
| 239 | _u16 source; /* 0x00 Location of the PHB in the host card */ |
| 240 | _u16 handshake; /* 0x02 Used to manage receive packet flow control */ |
| 241 | _u16 status; /* 0x04 Internal port transmit/receive status */ |
| 242 | _u16 timeout; /* 0x06 Time period to wait for an ACK */ |
| 243 | _u16 link; /* 0x08 The host link associated with the PHB */ |
| 244 | _u16 destination; /* 0x0A Location of the remote port on the network */ |
| 245 | |
| 246 | _u16 tx_start; /* 0x0C first entry in the packet array for transmit packets */ |
| 247 | _u16 tx_end; /* 0x0E last entry in the packet array for transmit packets */ |
| 248 | _u16 tx_add; /* 0x10 position in the packet array for new transmit packets */ |
| 249 | _u16 tx_remove; /* 0x12 current position in the packet pointer array */ |
| 250 | |
| 251 | _u16 rx_start; /* 0x14 first entry in the packet array for receive packets */ |
| 252 | _u16 rx_end; /* 0x16 last entry in the packet array for receive packets */ |
| 253 | _u16 rx_add; /* 0x18 position in the packet array for new receive packets */ |
| 254 | _u16 rx_remove; /* 0x1A current position in the packet pointer array */ |
| 255 | |
| 256 | } PHB; |
| 257 | |
| 258 | /* Same thing again, but defined as offsets... */ |
| 259 | |
| 260 | #define PHB_source 0x00 /* 0x00 Location of the PHB in the host card */ |
| 261 | #define PHB_handshake 0x02 /* 0x02 Used to manage receive packet flow control */ |
| 262 | #define PHB_status 0x04 /* 0x04 Internal port transmit/receive status */ |
| 263 | #define PHB_timeout 0x06 /* 0x06 Time period to wait for an ACK */ |
| 264 | #define PHB_link 0x08 /* 0x08 The host link associated with the PHB */ |
| 265 | #define PHB_destination 0x0A /* 0x0A Location of the remote port on the network */ |
| 266 | #define PHB_tx_start 0x0C /* 0x0C first entry in the packet array for transmit packets */ |
| 267 | #define PHB_tx_end 0x0E /* 0x0E last entry in the packet array for transmit packets */ |
| 268 | #define PHB_tx_add 0x10 /* 0x10 position in the packet array for new transmit packets */ |
| 269 | #define PHB_tx_remove 0x12 /* 0x12 current position in the packet pointer array */ |
| 270 | #define PHB_rx_start 0x14 /* 0x14 first entry in the packet array for receive packets */ |
| 271 | #define PHB_rx_end 0x16 /* 0x16 last entry in the packet array for receive packets */ |
| 272 | #define PHB_rx_add 0x18 /* 0x18 position in the packet array for new receive packets */ |
| 273 | #define PHB_rx_remove 0x1A /* 0x1A current position in the packet pointer array */ |
| 274 | #define sizeof_PHB 0x1C /* structure size = 0x1C */ |
| 275 | |
| 276 | /* PHB.handshake definitions... */ |
| 277 | #define PHB_HANDSHAKE_SET 0x0001 /* Set by LRT */ |
| 278 | #define PHB_HANDSHAKE_RESET 0x0002 /* Set by ISR / driver */ |
| 279 | #define PHB_HANDSHAKE_FLAGS (PHB_HANDSHAKE_RESET|PHB_HANDSHAKE_SET) |
| 280 | /* Reset by ltt */ |
| 281 | |
| 282 | #define MAX_PHB 128 /* range 0-127 */ |
| 283 | |
| 284 | /***************************************************************************** |
| 285 | ********************************** *********************************** |
| 286 | ********************************** LPB *********************************** |
| 287 | ********************************** *********************************** |
| 288 | *****************************************************************************/ |
| 289 | |
| 290 | /* The LPB (Link Parameter Block) structure relates to a RIO Network Link |
| 291 | and there is normally an array of MAX_LINKS (=4) structures in a host card, |
| 292 | defined by PARM_MAP->link_str_ptr. */ |
| 293 | |
| 294 | typedef struct _LPB |
| 295 | { |
| 296 | _u16 link_number; /* 0x00 Link Number */ |
| 297 | _u16 in_ch; /* 0x02 Link In Channel */ |
| 298 | _u16 out_ch; /* 0x04 Link Out Channel */ |
| 299 | _u8 attached_serial[4]; /* 0x06 Attached serial number */ |
| 300 | _u8 attached_host_serial[4];/* 0x0A Serial number of Host who booted other end */ |
| 301 | _u16 descheduled; /* 0x0E Currently Descheduled */ |
| 302 | _u16 state; /* 0x10 Current state */ |
| 303 | _u16 send_poll; /* 0x12 Send a Poll Packet */ |
| 304 | _u16 ltt_p; /* 0x14 Process Descriptor */ |
| 305 | _u16 lrt_p; /* 0x16 Process Descriptor */ |
| 306 | _u16 lrt_status; /* 0x18 Current lrt status */ |
| 307 | _u16 ltt_status; /* 0x1A Current ltt status */ |
| 308 | _u16 timeout; /* 0x1C Timeout value */ |
| 309 | _u16 topology; /* 0x1E Topology bits */ |
| 310 | _u16 mon_ltt; /* 0x20 */ |
| 311 | _u16 mon_lrt; /* 0x22 */ |
| 312 | _u16 num_pkts; /* 0x24 */ |
| 313 | _u16 add_packet_list; /* 0x26 Add packets to here */ |
| 314 | _u16 remove_packet_list; /* 0x28 Send packets from here */ |
| 315 | |
| 316 | _u16 lrt_fail_chan; /* 0x2A Lrt's failure channel */ |
| 317 | _u16 ltt_fail_chan; /* 0x2C Ltt's failure channel */ |
| 318 | |
| 319 | RUP rup; /* 0x2E RUP structure for HOST to driver comms */ |
| 320 | RUP link_rup; /* 0x40 RUP for the link (POLL, topology etc.) */ |
| 321 | _u16 attached_link; /* 0x52 Number of attached link */ |
| 322 | _u16 csum_errors; /* 0x54 csum errors */ |
| 323 | _u16 num_disconnects; /* 0x56 number of disconnects */ |
| 324 | _u16 num_sync_rcvd; /* 0x58 # sync's received */ |
| 325 | _u16 num_sync_rqst; /* 0x5A # sync requests */ |
| 326 | _u16 num_tx; /* 0x5C Num pkts sent */ |
| 327 | _u16 num_rx; /* 0x5E Num pkts received */ |
| 328 | _u16 module_attached; /* 0x60 Module tpyes of attached */ |
| 329 | _u16 led_timeout; /* 0x62 LED timeout */ |
| 330 | _u16 first_port; /* 0x64 First port to service */ |
| 331 | _u16 last_port; /* 0x66 Last port to service */ |
| 332 | |
| 333 | } LPB; |
| 334 | |
| 335 | /* Same thing again, but defined as offsets... */ |
| 336 | |
| 337 | #define LPB_link_number 0x00 /* 0x00 Link Number */ |
| 338 | #define LPB_in_ch 0x02 /* 0x02 Link In Channel */ |
| 339 | #define LPB_out_ch 0x04 /* 0x04 Link Out Channel */ |
| 340 | #define LPB_attached_serial 0x06 /* 0x06 Attached serial number */ |
| 341 | #define LPB_attached_host_serial 0x0A /* 0x0A Serial number of Host who booted other end */ |
| 342 | #define LPB_descheduled 0x0E /* 0x0E Currently Descheduled */ |
| 343 | #define LPB_state 0x10 /* 0x10 Current state */ |
| 344 | #define LPB_send_poll 0x12 /* 0x12 Send a Poll Packet */ |
| 345 | #define LPB_ltt_p 0x14 /* 0x14 Process Descriptor */ |
| 346 | #define LPB_lrt_p 0x16 /* 0x16 Process Descriptor */ |
| 347 | #define LPB_lrt_status 0x18 /* 0x18 Current lrt status */ |
| 348 | #define LPB_ltt_status 0x1A /* 0x1A Current ltt status */ |
| 349 | #define LPB_timeout 0x1C /* 0x1C Timeout value */ |
| 350 | #define LPB_topology 0x1E /* 0x1E Topology bits */ |
| 351 | #define LPB_mon_ltt 0x20 /* 0x20 */ |
| 352 | #define LPB_mon_lrt 0x22 /* 0x22 */ |
| 353 | #define LPB_num_pkts 0x24 /* 0x24 */ |
| 354 | #define LPB_add_packet_list 0x26 /* 0x26 Add packets to here */ |
| 355 | #define LPB_remove_packet_list 0x28 /* 0x28 Send packets from here */ |
| 356 | #define LPB_lrt_fail_chan 0x2A /* 0x2A Lrt's failure channel */ |
| 357 | #define LPB_ltt_fail_chan 0x2C /* 0x2C Ltt's failure channel */ |
| 358 | #define LPB_rup 0x2E /* 0x2E RUP structure for HOST to driver comms */ |
| 359 | #define LPB_link_rup 0x40 /* 0x40 RUP for the link (POLL, topology etc.) */ |
| 360 | #define LPB_attached_link 0x52 /* 0x52 Number of attached link */ |
| 361 | #define LPB_csum_errors 0x54 /* 0x54 csum errors */ |
| 362 | #define LPB_num_disconnects 0x56 /* 0x56 number of disconnects */ |
| 363 | #define LPB_num_sync_rcvd 0x58 /* 0x58 # sync's received */ |
| 364 | #define LPB_num_sync_rqst 0x5A /* 0x5A # sync requests */ |
| 365 | #define LPB_num_tx 0x5C /* 0x5C Num pkts sent */ |
| 366 | #define LPB_num_rx 0x5E /* 0x5E Num pkts received */ |
| 367 | #define LPB_module_attached 0x60 /* 0x60 Module tpyes of attached */ |
| 368 | #define LPB_led_timeout 0x62 /* 0x62 LED timeout */ |
| 369 | #define LPB_first_port 0x64 /* 0x64 First port to service */ |
| 370 | #define LPB_last_port 0x66 /* 0x66 Last port to service */ |
| 371 | #define sizeof_LPB 0x68 /* structure size = 0x68 */ |
| 372 | |
| 373 | #define LINKS_PER_UNIT 4 /* number of links from a host */ |
| 374 | |
| 375 | /***************************************************************************** |
| 376 | ******************************** ******************************* |
| 377 | ******************************** FREE_LIST ******************************* |
| 378 | ******************************** ******************************* |
| 379 | *****************************************************************************/ |
| 380 | |
| 381 | /* Used to overlay packet headers when allocating/freeing packets from the free list */ |
| 382 | |
| 383 | typedef struct _FREE_LIST |
| 384 | { |
| 385 | _u16 next; /* 0x00 offset of next list item */ |
| 386 | _u16 prev; /* 0x02 offset of previous list item */ |
| 387 | |
| 388 | } FREE_LIST; |
| 389 | |
| 390 | /* Same thing again, but defined as offsets... */ |
| 391 | |
| 392 | #define FL_next 0x00 /* 0x00 offset of next list item */ |
| 393 | #define FL_prev 0x02 /* 0x02 offset of previous list item */ |
| 394 | |
| 395 | /***************************************************************************** |
| 396 | ********************************** *********************************** |
| 397 | ********************************** PKT *********************************** |
| 398 | ********************************** *********************************** |
| 399 | *****************************************************************************/ |
| 400 | |
| 401 | /* The PKT is the main unit of communication between Host Cards and RTAs across |
| 402 | the RIO network. */ |
| 403 | |
| 404 | #define PKT_MAX_DATA_LEN 72 /* Size of packet data */ |
| 405 | |
| 406 | typedef struct _PKT |
| 407 | { |
| 408 | _u8 dest_unit; /* 0x00 Destination Unit Id */ |
| 409 | _u8 dest_port; /* 0x01 Destination Port */ |
| 410 | _u8 src_unit; /* 0x02 Source Unit Id */ |
| 411 | _u8 src_port; /* 0x03 Source Port */ |
| 412 | _u8 len; /* 0x04 Length (in bytes) of data field */ |
| 413 | _u8 control; /* 0x05 */ |
| 414 | _u8 data[PKT_MAX_DATA_LEN]; /* 0x06 Actual data */ |
| 415 | _u16 csum; /* 0x4E C-SUM */ |
| 416 | |
| 417 | } PKT; |
| 418 | |
| 419 | /* Same thing again, but defined as offsets... */ |
| 420 | |
| 421 | #define PKT_dest_unit 0x00 /* 0x00 Destination Unit Id */ |
| 422 | #define PKT_dest_port 0x01 /* 0x01 Destination Port */ |
| 423 | #define PKT_src_unit 0x02 /* 0x02 Source Unit Id */ |
| 424 | #define PKT_src_port 0x03 /* 0x03 Source Port */ |
| 425 | #define PKT_len 0x04 /* 0x04 Length (in bytes) of data field */ |
| 426 | #define PKT_control 0x05 /* 0x05 */ |
| 427 | #define PKT_data 0x06 /* 0x06 Actual data */ |
| 428 | #define PKT_csum 0x4E /* 0x4E C-SUM */ |
| 429 | #define sizeof_PKT 0x50 /* structure size = 0x50 */ |
| 430 | |
| 431 | /* PKT.len definitions... */ |
| 432 | #define PKT_CMD_BIT 0x80 |
| 433 | #define PKT_CMD_DATA 0x80 |
| 434 | #define PKT_LEN_MASK 0x7F |
| 435 | |
| 436 | /* PKT.control definitions... */ |
| 437 | #define PKT_ACK 0x40 |
| 438 | #define PKT_TGL 0x20 |
| 439 | #define DATA_WNDW 0x10 |
| 440 | #define PKT_TTL_MASK 0x0F |
| 441 | #define MAX_TTL 0x0F |
| 442 | |
| 443 | /***************************************************************************** |
| 444 | ***************************** **************************** |
| 445 | ***************************** Control Packets **************************** |
| 446 | ***************************** **************************** |
| 447 | *****************************************************************************/ |
| 448 | |
| 449 | /* The following definitions and structures define the control packets sent |
| 450 | between the driver and RIO Ports, RTAs and Host Cards. */ |
| 451 | |
| 452 | #define PRE_EMPTIVE 0x80 /* Pre-emptive command (sent via port's RUP) */ |
| 453 | |
| 454 | /* "in-band" and "pre-emptive" port commands... */ |
| 455 | #define OPEN 0x00 /* Driver->RIO Open a port */ |
| 456 | #define CONFIG 0x01 /* Driver->RIO Configure a port */ |
| 457 | #define MOPEN 0x02 /* Driver->RIO Modem open (wait for DCD) */ |
| 458 | #define CLOSE 0x03 /* Driver->RIO Close a port */ |
| 459 | #define WFLUSH (0x04|PRE_EMPTIVE) /* Driver->RIO Write flush */ |
| 460 | #define RFLUSH (0x05|PRE_EMPTIVE) /* Driver->RIO Read flush */ |
| 461 | #define RESUME (0x06|PRE_EMPTIVE) /* Driver->RIO Behave as if XON received */ |
| 462 | #define SBREAK 0x07 /* Driver->RIO Start break */ |
| 463 | #define EBREAK 0x08 /* Driver->RIO End break */ |
| 464 | #define SUSPEND (0x09|PRE_EMPTIVE) /* Driver->RIO Behave as if XOFF received */ |
| 465 | #define FCLOSE (0x0A|PRE_EMPTIVE) /* Driver->RIO Force close */ |
| 466 | #define XPRINT 0x0B /* Driver->RIO Xprint packet */ |
| 467 | #define MBIS (0x0C|PRE_EMPTIVE) /* Driver->RIO Set modem lines */ |
| 468 | #define MBIC (0x0D|PRE_EMPTIVE) /* Driver->RIO Clear modem lines */ |
| 469 | #define MSET (0x0E|PRE_EMPTIVE) /* Driver->RIO Set modem lines */ |
| 470 | #define PCLOSE 0x0F /* Driver->RIO Pseudo close */ |
| 471 | #define MGET (0x10|PRE_EMPTIVE) /* Driver->RIO Force update of modem status */ |
| 472 | #define MEMDUMP (0x11|PRE_EMPTIVE) /* Driver->RIO DEBUG request for RTA memory */ |
| 473 | #define READ_REGISTER (0x12|PRE_EMPTIVE) /* Driver->RIO DEBUG read CD1400 register */ |
| 474 | |
| 475 | /* Remote Unit Port (RUP) packet definitions... (specified in PKT.dest_unit and PKT.src_unit) */ |
| 476 | #define SYNC_RUP 0xFF /* Download internal */ |
| 477 | #define COMMAND_RUP 0xFE /* Command ack/status */ |
| 478 | #define ERROR_RUP 0xFD /* Download internal */ |
| 479 | #define POLL_RUP 0xFC /* Download internal */ |
| 480 | #define BOOT_RUP 0xFB /* Used to boot RTAs */ |
| 481 | #define ROUTE_RUP 0xFA /* Used to specify routing/topology */ |
| 482 | #define STATUS_RUP 0xF9 /* Not used */ |
| 483 | #define POWER_RUP 0xF8 /* Download internal */ |
| 484 | |
| 485 | /* COMMAND_RUP definitions... */ |
| 486 | #define COMPLETE (0x20|PRE_EMPTIVE) /* RIO->Driver Command complete */ |
| 487 | #define BREAK_RECEIVED (0x21|PRE_EMPTIVE) /* RIO->Driver Break received */ |
| 488 | #define MODEM_STATUS (0x22|PRE_EMPTIVE) /* RIO->Driver Modem status change */ |
| 489 | |
| 490 | /* BOOT_RUP definitions... */ |
| 491 | #define BOOT_REQUEST 0x00 /* RIO->Driver Request for boot */ |
| 492 | #define BOOT_ABORT 0x01 /* Driver->RIO Abort a boot */ |
| 493 | #define BOOT_SEQUENCE 0x02 /* Driver->RIO Packet with firmware details */ |
| 494 | #define BOOT_COMPLETED 0x03 /* RIO->Driver Boot completed */ |
| 495 | #define IFOAD 0x2F /* Driver->RIO Shutdown/Reboot RTA (Fall Over And Die) */ |
| 496 | #define IDENTIFY 0x30 /* Driver->RIO Identify RTA */ |
| 497 | #define ZOMBIE 0x31 /* Driver->RIO Shutdown/Flash LEDs */ |
| 498 | #define UFOAD 0x32 /* Driver->RIO Shutdown/Reboot neighbouring RTA */ |
| 499 | #define IWAIT 0x33 /* Driver->RIO Pause booting process */ |
| 500 | |
| 501 | /* ROUTE_RUP definitions... */ |
| 502 | #define ROUTE_REQUEST 0x00 /* RIO->Driver Request an ID */ |
| 503 | #define ROUTE_FOAD 0x01 /* Driver->RIO Shutdown/reboot RTA */ |
| 504 | #define ROUTE_ALREADY 0x02 /* Driver->RIO Not used */ |
| 505 | #define ROUTE_USED 0x03 /* Driver->RIO Not used */ |
| 506 | #define ROUTE_ALLOCATE 0x04 /* Driver->RIO Allocate RTA RUP numbers */ |
| 507 | #define ROUTE_REQ_TOP 0x05 /* Driver->RIO Not used */ |
| 508 | #define ROUTE_TOPOLOGY 0x06 /* RIO->Driver Route/Topology status */ |
| 509 | |
| 510 | /***************************************************************************** |
| 511 | ********************************** ********************************** |
| 512 | ********************************** OPEN ********************************** |
| 513 | ********************************** ********************************** |
| 514 | *****************************************************************************/ |
| 515 | |
| 516 | /* (Driver->RIO,in-band) |
| 517 | |
| 518 | Sent to open a port. |
| 519 | Structure of configuration info used with OPEN, CONFIG and MOPEN packets... */ |
| 520 | |
| 521 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 522 | #define PKT_Cor1 (PKT_Data+1) /* Channel Option Register 1 */ |
| 523 | #define PKT_Cor2 (PKT_Data+2) /* Channel Option Register 2 */ |
| 524 | #define PKT_Cor4 (PKT_Data+3) /* Channel Option Register 4 */ |
| 525 | #define PKT_Cor5 (PKT_Data+4) /* Channel Option Register 5 */ |
| 526 | #define PKT_TxXon (PKT_Data+5) /* Transmit XON character */ |
| 527 | #define PKT_TxXoff (PKT_Data+6) /* Transmit XOFF character */ |
| 528 | #define PKT_RxXon (PKT_Data+7) /* Receive XON character */ |
| 529 | #define PKT_RxXoff (PKT_Data+8) /* Receive XOFF character */ |
| 530 | #define PKT_Lnext (PKT_Data+9) /* Lnext character */ |
| 531 | #define PKT_TxBaud (PKT_Data+10) /* Transmit baud rate */ |
| 532 | #define PKT_RxBaud (PKT_Data+11) /* Receive baud rate */ |
| 533 | |
| 534 | /* COR1 definitions... */ |
| 535 | #define COR1_PARITY 0xE0 /* Parity mask */ |
| 536 | #define COR1_NONE 0x00 /* No parity */ |
| 537 | #define COR1_SPACE 0x20 /* Space parity */ |
| 538 | #define COR1_EVEN 0x40 /* Even parity */ |
| 539 | #define COR1_MARK 0xA0 /* Mark parity */ |
| 540 | #define COR1_ODD 0xC0 /* Odd parity */ |
| 541 | |
| 542 | #define COR1_STOPBITS 0x0C /* Stop bits mask */ |
| 543 | #define COR1_STOP1 0x00 /* 1 stop bit */ |
| 544 | #define COR1_STOP1_5 0x04 /* 1.5 stop bits */ |
| 545 | #define COR1_STOP2 0x08 /* 2 stop bits */ |
| 546 | |
| 547 | #define COR1_DATABITS 0x03 /* Data bits mask */ |
| 548 | #define COR1_DATA5 0x00 /* 5 data bits */ |
| 549 | #define COR1_DATA6 0x01 /* 6 data bits */ |
| 550 | #define COR1_DATA7 0x02 /* 7 data bits */ |
| 551 | #define COR1_DATA8 0x03 /* 8 data bits */ |
| 552 | |
| 553 | /* COR2 definitions... */ |
| 554 | #define COR2_XON_TXFLOW 0x40 /* XON/XOFF Transmit Flow */ |
| 555 | #define COR2_XANY_TXFLOW 0xC0 /* XON/XANY Transmit Flow */ |
| 556 | #define COR2_HUPCL 0x20 /* Hang Up On Close */ |
| 557 | #define COR2_DSR_TXFLOW 0x08 /* DSR Transmit Flow Control */ |
| 558 | #define COR2_RTS_RXFLOW 0x04 /* RTS Receive Flow Control */ |
| 559 | #define COR2_CTS_TXFLOW 0x02 /* CTS Transmit Flow Control */ |
| 560 | #define COR2_XON_RXFLOW 0x01 /* XON/XOFF Receive Flow */ |
| 561 | |
| 562 | /* COR4 definition... */ |
| 563 | #define COR4_IGNCR 0x80 /* Discard received CR */ |
| 564 | #define COR4_ICRNL 0x40 /* Map received CR -> NL */ |
| 565 | #define COR4_INLCR 0x20 /* Map received NL -> CR */ |
| 566 | #define COR4_IGNBRK 0x10 /* Ignore Received Break */ |
| 567 | #define COR4_NBRKINT 0x08 /* No interrupt on rx Break */ |
| 568 | #define COR4_IGNPAR 0x04 /* ignore rx parity error chars */ |
| 569 | #define COR4_PARMRK 0x02 /* Mark rx parity error chars */ |
| 570 | #define COR4_RAISEMOD 0x01 /* Raise modem lines on !0 baud */ |
| 571 | |
| 572 | /* COR5 definitions... */ |
| 573 | #define COR5_ISTRIP 0x80 /* Strip input chars to 7 bits */ |
| 574 | #define COR5_LNE 0x40 /* Enable LNEXT processing */ |
| 575 | #define COR5_CMOE 0x20 /* Match good & error characters */ |
| 576 | #define COR5_TAB3 0x10 /* TAB3 mode */ |
| 577 | #define COR5_TSTATE_ON 0x08 /* Enable tbusy/tstop monitoring */ |
| 578 | #define COR5_TSTATE_OFF 0x04 /* Disable tbusy/tstop monitoring */ |
| 579 | #define COR5_ONLCR 0x02 /* NL -> CR NL on output */ |
| 580 | #define COR5_OCRNL 0x01 /* CR -> NL on output */ |
| 581 | |
| 582 | /* RxBaud and TxBaud definitions... */ |
| 583 | #define RIO_B0 0x00 /* RTS / DTR signals dropped */ |
| 584 | #define RIO_B50 0x01 /* 50 baud */ |
| 585 | #define RIO_B75 0x02 /* 75 baud */ |
| 586 | #define RIO_B110 0x03 /* 110 baud */ |
| 587 | #define RIO_B134 0x04 /* 134.5 baud */ |
| 588 | #define RIO_B150 0x05 /* 150 baud */ |
| 589 | #define RIO_B200 0x06 /* 200 baud */ |
| 590 | #define RIO_B300 0x07 /* 300 baud */ |
| 591 | #define RIO_B600 0x08 /* 600 baud */ |
| 592 | #define RIO_B1200 0x09 /* 1200 baud */ |
| 593 | #define RIO_B1800 0x0A /* 1800 baud */ |
| 594 | #define RIO_B2400 0x0B /* 2400 baud */ |
| 595 | #define RIO_B4800 0x0C /* 4800 baud */ |
| 596 | #define RIO_B9600 0x0D /* 9600 baud */ |
| 597 | #define RIO_B19200 0x0E /* 19200 baud */ |
| 598 | #define RIO_B38400 0x0F /* 38400 baud */ |
| 599 | #define RIO_B56000 0x10 /* 56000 baud */ |
| 600 | #define RIO_B57600 0x11 /* 57600 baud */ |
| 601 | #define RIO_B64000 0x12 /* 64000 baud */ |
| 602 | #define RIO_B115200 0x13 /* 115200 baud */ |
| 603 | #define RIO_B2000 0x14 /* 2000 baud */ |
| 604 | |
| 605 | /***************************************************************************** |
| 606 | ********************************* ********************************* |
| 607 | ********************************* CONFIG ********************************* |
| 608 | ********************************* ********************************* |
| 609 | *****************************************************************************/ |
| 610 | |
| 611 | /* (Driver->RIO,in-band) |
| 612 | |
| 613 | CONFIG is sent from the driver to configure an already opened port. |
| 614 | Packet structure is same as OPEN. */ |
| 615 | |
| 616 | /***************************************************************************** |
| 617 | ********************************* ********************************** |
| 618 | ********************************* MOPEN ********************************** |
| 619 | ********************************* ********************************** |
| 620 | *****************************************************************************/ |
| 621 | |
| 622 | /* (Driver->RIO,in-band) |
| 623 | |
| 624 | MOPEN is sent from the driver to open a port attached to a modem. (in-band) |
| 625 | Packet structure is same as OPEN. */ |
| 626 | |
| 627 | /***************************************************************************** |
| 628 | ********************************* ********************************** |
| 629 | ********************************* CLOSE ********************************** |
| 630 | ********************************* ********************************** |
| 631 | *****************************************************************************/ |
| 632 | |
| 633 | /* (Driver->RIO,in-band) |
| 634 | |
| 635 | CLOSE is sent from the driver to close a previously opened port. |
| 636 | No parameters. |
| 637 | */ |
| 638 | #if 0 |
| 639 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 640 | #endif |
| 641 | /***************************************************************************** |
| 642 | ********************************* ********************************* |
| 643 | ********************************* WFLUSH ********************************* |
| 644 | ********************************* ********************************* |
| 645 | *****************************************************************************/ |
| 646 | |
| 647 | /* (Driver->RIO,pre-emptive) |
| 648 | |
| 649 | WFLUSH is sent pre-emptively from the driver to flush the write buffers and |
| 650 | packets of a port. (pre-emptive) |
| 651 | |
| 652 | WFLUSH is also sent in-band from the driver to a port as a marker to end |
| 653 | write flushing previously started by a pre-emptive WFLUSH packet. (in-band) |
| 654 | */ |
| 655 | #if 0 |
| 656 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 657 | #endif |
| 658 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 659 | |
| 660 | /***************************************************************************** |
| 661 | ********************************* ********************************* |
| 662 | ********************************* RFLUSH ********************************* |
| 663 | ********************************* ********************************* |
| 664 | *****************************************************************************/ |
| 665 | |
| 666 | /* (Driver->RIO,pre-emptive) |
| 667 | |
| 668 | RFLUSH is sent pre-emptively from the driver to flush the read buffers and |
| 669 | packets of a port. |
| 670 | */ |
| 671 | #if 0 |
| 672 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 673 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 674 | #endif |
| 675 | |
| 676 | /***************************************************************************** |
| 677 | ********************************* ********************************* |
| 678 | ********************************* RESUME ********************************* |
| 679 | ********************************* ********************************* |
| 680 | *****************************************************************************/ |
| 681 | |
| 682 | /* (Driver->RIO,pre-emptive) |
| 683 | |
| 684 | RESUME is sent pre-emptively from the driver to cause a port to resume |
| 685 | transmission of data if blocked by XOFF. (as if XON had been received) |
| 686 | */ |
| 687 | #if 0 |
| 688 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 689 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 690 | #endif |
| 691 | |
| 692 | /***************************************************************************** |
| 693 | ********************************* ********************************* |
| 694 | ********************************* SBREAK ********************************* |
| 695 | ********************************* ********************************* |
| 696 | *****************************************************************************/ |
| 697 | |
| 698 | /* (Driver->RIO,in-band) |
| 699 | |
| 700 | SBREAK is sent in-band from the driver to a port to suspend data and start |
| 701 | break signal transmission. |
| 702 | |
| 703 | If the break delay is 0, the break signal will be acknowledged with a |
| 704 | RUP_COMMAND, COMPLETE packet and continue until an EBREAK packet is received. |
| 705 | |
| 706 | Otherwise, there is no acknowledgement and the break signal will last for the |
| 707 | specified number of mS. |
| 708 | */ |
| 709 | #if 0 |
| 710 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 711 | #endif |
| 712 | #define PKT_BreakDelay (PKT_Data+1) /* Break delay in mS */ |
| 713 | |
| 714 | /***************************************************************************** |
| 715 | ********************************* ********************************* |
| 716 | ********************************* EBREAK ********************************* |
| 717 | ********************************* ********************************* |
| 718 | *****************************************************************************/ |
| 719 | |
| 720 | /* (Driver->RIO,in-band) |
| 721 | |
| 722 | EBREAK is sent in-band from the driver to a port to stop transmission of a |
| 723 | break signal. |
| 724 | |
| 725 | No parameters. */ |
| 726 | |
| 727 | /***************************************************************************** |
| 728 | ********************************* ******************************** |
| 729 | ********************************* SUSPEND ******************************** |
| 730 | ********************************* ******************************** |
| 731 | *****************************************************************************/ |
| 732 | |
| 733 | /* (Driver->RIO,pre-emptive) |
| 734 | |
| 735 | SUSPEND is sent pre-emptively from the driver to cause a port to suspend |
| 736 | transmission of data. (as if XOFF had been received) |
| 737 | */ |
| 738 | #if 0 |
| 739 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 740 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 741 | #endif |
| 742 | |
| 743 | /***************************************************************************** |
| 744 | ********************************* ********************************* |
| 745 | ********************************* FCLOSE ********************************* |
| 746 | ********************************* ********************************* |
| 747 | *****************************************************************************/ |
| 748 | |
| 749 | /* (Driver->RIO,pre-emptive) |
| 750 | |
| 751 | FCLOSE is sent pre-emptively from the driver to force close a port. |
| 752 | A force close flushes receive and transmit queues, and also lowers all output |
| 753 | modem signals if the COR5_HUPCL (Hang Up On Close) flag is set. |
| 754 | */ |
| 755 | #if 0 |
| 756 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 757 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 758 | #endif |
| 759 | |
| 760 | /***************************************************************************** |
| 761 | ********************************* ********************************* |
| 762 | ********************************* XPRINT ********************************* |
| 763 | ********************************* ********************************* |
| 764 | *****************************************************************************/ |
| 765 | |
| 766 | /* (Driver->RIO,in-band) |
| 767 | |
| 768 | XPRINT is sent as a normal I/O data packet except that the PKT_CMD_BIT of |
| 769 | the "len" field is set, and the first "data" byte is XPRINT. |
| 770 | |
| 771 | The I/O data in the XPRINT packet will contain the following: |
| 772 | - Transparent Print Start Sequence |
| 773 | - Transparent Print Data |
| 774 | - Transparent Print Stop Sequence. |
| 775 | */ |
| 776 | #if 0 |
| 777 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 778 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 779 | #endif |
| 780 | |
| 781 | /***************************************************************************** |
| 782 | ********************************** ********************************** |
| 783 | ********************************** MBIS ********************************** |
| 784 | ********************************** ********************************** |
| 785 | *****************************************************************************/ |
| 786 | |
| 787 | /* (Driver->RIO,pre-emptive) |
| 788 | |
| 789 | MBIS is sent pre-emptively from the driver to set a port's modem signals. |
| 790 | */ |
| 791 | #if 0 |
| 792 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 793 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 794 | #endif |
| 795 | #define PKT_ModemSet (PKT_Data+4) /* Modem set signals mask */ |
| 796 | |
| 797 | /* ModemSet definitions... */ |
| 798 | #define MBIS_RTS 0x01 /* RTS modem signal */ |
| 799 | #define MBIS_DTR 0x02 /* DTR modem signal */ |
| 800 | |
| 801 | /***************************************************************************** |
| 802 | ********************************** ********************************** |
| 803 | ********************************** MBIC ********************************** |
| 804 | ********************************** ********************************** |
| 805 | *****************************************************************************/ |
| 806 | |
| 807 | /* (Driver->RIO,pre-emptive) |
| 808 | |
| 809 | MBIC is sent pre-emptively from the driver to clear a port's modem signals. |
| 810 | */ |
| 811 | #if 0 |
| 812 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 813 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 814 | #endif |
| 815 | |
| 816 | #define PKT_ModemClear (PKT_Data+4) /* Modem clear signals mask */ |
| 817 | |
| 818 | /* ModemClear definitions... */ |
| 819 | #define MBIC_RTS 0x01 /* RTS modem signal */ |
| 820 | #define MBIC_DTR 0x02 /* DTR modem signal */ |
| 821 | |
| 822 | /***************************************************************************** |
| 823 | ********************************** ********************************** |
| 824 | ********************************** MSET ********************************** |
| 825 | ********************************** ********************************** |
| 826 | *****************************************************************************/ |
| 827 | |
| 828 | /* (Driver->RIO,pre-emptive) |
| 829 | |
| 830 | MSET is sent pre-emptively from the driver to set/clear a port's modem signals. */ |
| 831 | #if 0 |
| 832 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 833 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 834 | #endif |
| 835 | |
| 836 | #define PKT_ModemSet (PKT_Data+4) /* Modem set signals mask */ |
| 837 | |
| 838 | /* ModemSet definitions... */ |
| 839 | #define MSET_RTS 0x01 /* RTS modem signal */ |
| 840 | #define MSET_DTR 0x02 /* DTR modem signal */ |
| 841 | |
| 842 | /***************************************************************************** |
| 843 | ********************************* ********************************* |
| 844 | ********************************* PCLOSE ********************************* |
| 845 | ********************************* ********************************* |
| 846 | *****************************************************************************/ |
| 847 | |
| 848 | /* (Driver->RIO,in-band) |
| 849 | |
| 850 | PCLOSE is sent from the driver to pseudo close a previously opened port. |
| 851 | |
| 852 | The port will close when all data has been sent/received, however, the |
| 853 | port's transmit / receive and modem signals will be left enabled and the |
| 854 | port marked internally as Pseudo Closed. */ |
| 855 | |
| 856 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 857 | |
| 858 | /***************************************************************************** |
| 859 | ********************************** ********************************** |
| 860 | ********************************** MGET ********************************** |
| 861 | ********************************** ********************************** |
| 862 | *****************************************************************************/ |
| 863 | |
| 864 | /* (Driver->RIO,pre-emptive) |
| 865 | |
| 866 | MGET is sent pre-emptively from the driver to request the port's current modem signals. */ |
| 867 | |
| 868 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 869 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 870 | |
| 871 | /***************************************************************************** |
| 872 | ********************************* ******************************** |
| 873 | ********************************* MEMDUMP ******************************** |
| 874 | ********************************* ******************************** |
| 875 | *****************************************************************************/ |
| 876 | |
| 877 | /* (Driver->RIO,pre-emptive) |
| 878 | |
| 879 | MEMDUMP is sent pre-emptively from the driver to request a dump of 32 bytes |
| 880 | of the specified port's RTA address space. |
| 881 | */ |
| 882 | #if 0 |
| 883 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 884 | #endif |
| 885 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 886 | #define PKT_SubCmd (PKT_Data+5) /* Sub Command */ |
| 887 | #define PKT_Address (PKT_Data+6) /* Requested address */ |
| 888 | |
| 889 | /***************************************************************************** |
| 890 | ****************************** ***************************** |
| 891 | ****************************** READ_REGISTER ***************************** |
| 892 | ****************************** ***************************** |
| 893 | *****************************************************************************/ |
| 894 | |
| 895 | /* (Driver->RIO,pre-emptive) |
| 896 | |
| 897 | READ_REGISTER is sent pre-emptively from the driver to request the contents |
| 898 | of the CD1400 register specified in address. |
| 899 | */ |
| 900 | #if 0 |
| 901 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 902 | #endif |
| 903 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 904 | #define PKT_SubCmd (PKT_Data+5) /* Sub Command */ |
| 905 | #define PKT_Address (PKT_Data+6) /* Requested address */ |
| 906 | |
| 907 | /***************************************************************************** |
| 908 | ************************ ************************** |
| 909 | ************************ COMMAND_RUP - COMPLETE ************************** |
| 910 | ************************ ************************** |
| 911 | *****************************************************************************/ |
| 912 | |
| 913 | /* (RIO->Driver,pre-emptive) |
| 914 | |
| 915 | COMMAND_RUP - COMPLETE is sent in response to all port I/O control command |
| 916 | packets, except MEMDUMP and READ_REGISTER. |
| 917 | */ |
| 918 | #if 0 |
| 919 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 920 | #endif |
| 921 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 922 | #define PKT_Cmd2 (PKT_Data+2) /* Command code copy */ |
| 923 | #define PKT_ModemStatus (PKT_Data+3) /* Modem signal status */ |
| 924 | #define PKT_PortStatus (PKT_Data+4) /* Port signal status */ |
| 925 | #define PKT_SubCmd (PKT_Data+5) /* Sub Command */ |
| 926 | |
| 927 | /* ModemStatus definitions... */ |
| 928 | #define MODEM_DSR 0x80 /* Data Set Ready modem state */ |
| 929 | #define MODEM_CTS 0x40 /* Clear To Send modem state */ |
| 930 | #define MODEM_RI 0x20 /* Ring Indicate modem state */ |
| 931 | #define MODEM_CD 0x10 /* Carrier Detect modem state */ |
| 932 | #define MODEM_TSTOP 0x08 /* Transmit Stopped state */ |
| 933 | #define MODEM_TEMPTY 0x04 /* Transmit Empty state */ |
| 934 | #define MODEM_DTR 0x02 /* DTR modem output state */ |
| 935 | #define MODEM_RTS 0x01 /* RTS modem output state */ |
| 936 | |
| 937 | /* PortStatus definitions... */ |
| 938 | #define PORT_ISOPEN 0x01 /* Port open ? */ |
| 939 | #define PORT_HUPCL 0x02 /* Hangup on close? */ |
| 940 | #define PORT_MOPENPEND 0x04 /* Modem open pending */ |
| 941 | #define PORT_ISPARALLEL 0x08 /* Parallel port */ |
| 942 | #define PORT_BREAK 0x10 /* Port on break */ |
| 943 | #define PORT_STATUSPEND 0020 /* Status packet pending */ |
| 944 | #define PORT_BREAKPEND 0x40 /* Break packet pending */ |
| 945 | #define PORT_MODEMPEND 0x80 /* Modem status packet pending */ |
| 946 | |
| 947 | /***************************************************************************** |
| 948 | ************************ ************************** |
| 949 | ************************ COMMAND_RUP - COMPLETE ************************** |
| 950 | ************************ ************************** |
| 951 | *****************************************************************************/ |
| 952 | |
| 953 | /* (RIO->Driver,pre-emptive) |
| 954 | |
| 955 | COMMAND_RUP - COMPLETE is sent in response to all port I/O control command |
| 956 | packets, except MEMDUMP and READ_REGISTER. |
| 957 | */ |
| 958 | #if 0 |
| 959 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 960 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 961 | #define PKT_Cmd2 (PKT_Data+2) /* Command code copy */ |
| 962 | #endif |
| 963 | #define PKT_ModemStatus (PKT_Data+3) /* Modem signal status */ |
| 964 | #define PKT_PortStatus (PKT_Data+4) /* Port signal status */ |
| 965 | #if 0 |
| 966 | #define PKT_SubCmd (PKT_Data+5) /* Sub Command */ |
| 967 | #endif |
| 968 | |
| 969 | /* ModemStatus definitions... */ |
| 970 | #define MODEM_DSR 0x80 /* Data Set Ready modem state */ |
| 971 | #define MODEM_CTS 0x40 /* Clear To Send modem state */ |
| 972 | #define MODEM_RI 0x20 /* Ring Indicate modem state */ |
| 973 | #define MODEM_CD 0x10 /* Carrier Detect modem state */ |
| 974 | #define MODEM_TSTOP 0x08 /* Transmit Stopped state */ |
| 975 | #define MODEM_TEMPTY 0x04 /* Transmit Empty state */ |
| 976 | #define MODEM_DTR 0x02 /* DTR modem output state */ |
| 977 | #define MODEM_RTS 0x01 /* RTS modem output state */ |
| 978 | |
| 979 | /* PortStatus definitions... */ |
| 980 | #define PORT_ISOPEN 0x01 /* Port open ? */ |
| 981 | #define PORT_HUPCL 0x02 /* Hangup on close? */ |
| 982 | #define PORT_MOPENPEND 0x04 /* Modem open pending */ |
| 983 | #define PORT_ISPARALLEL 0x08 /* Parallel port */ |
| 984 | #define PORT_BREAK 0x10 /* Port on break */ |
| 985 | #define PORT_STATUSPEND 0020 /* Status packet pending */ |
| 986 | #define PORT_BREAKPEND 0x40 /* Break packet pending */ |
| 987 | #define PORT_MODEMPEND 0x80 /* Modem status packet pending */ |
| 988 | |
| 989 | /***************************************************************************** |
| 990 | ******************** ******************** |
| 991 | ******************** COMMAND_RUP - COMPLETE - MEMDUMP ******************** |
| 992 | ******************** ******************** |
| 993 | *****************************************************************************/ |
| 994 | |
| 995 | /* (RIO->Driver,pre-emptive) |
| 996 | |
| 997 | COMMAND_RUP - COMPLETE - MEMDUMP is sent as an acknowledgement for a MEMDUMP |
| 998 | port I/O control command packet. |
| 999 | */ |
| 1000 | #if 0 |
| 1001 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1002 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 1003 | #define PKT_Cmd2 (PKT_Data+2) /* Command code copy */ |
| 1004 | #define PKT_ModemStatus (PKT_Data+3) /* Modem signal status */ |
| 1005 | #define PKT_PortStatus (PKT_Data+4) /* Port signal status */ |
| 1006 | #define PKT_SubCmd (PKT_Data+5) /* Sub Command */ |
| 1007 | #define PKT_Address (PKT_Data+6) /* Requested address */ |
| 1008 | #endif |
| 1009 | #define PKT_Dump (PKT_Data+8) /* 32bytes of requested dump data */ |
| 1010 | |
| 1011 | /***************************************************************************** |
| 1012 | ***************** ***************** |
| 1013 | ***************** COMMAND_RUP - COMPLETE - READ_REGISTER ***************** |
| 1014 | ***************** ***************** |
| 1015 | *****************************************************************************/ |
| 1016 | |
| 1017 | /* (RIO->Driver,pre-emptive) |
| 1018 | |
| 1019 | COMMAND_RUP - COMPLETE - READ_REGISTER is sent as an acknowledgement for a |
| 1020 | READ_REGISTER port I/O control command packet. |
| 1021 | */ |
| 1022 | #if 0 |
| 1023 | #define PKT_Cmd (PKT_Data+0) /*Command code */ |
| 1024 | #define PKT_PhbNum (PKT_Data+1) /*Port number wrt RTA */ |
| 1025 | #define PKT_Cmd2 (PKT_Data+2) /* Command code copy */ |
| 1026 | #endif |
| 1027 | #define PKT_RegisterValue (PKT_Data+3) /* Modem signal status */ |
| 1028 | #if 0 |
| 1029 | #define PKT_PortStatus (PKT_Data+4) /* Port signal status */ |
| 1030 | #define PKT_SubCmd (PKT_Data+5) /* Sub Command */ |
| 1031 | #endif |
| 1032 | |
| 1033 | /***************************************************************************** |
| 1034 | ********************* *********************** |
| 1035 | ********************* COMMAND_RUP - BREAK_RECEIVED *********************** |
| 1036 | ********************* *********************** |
| 1037 | *****************************************************************************/ |
| 1038 | |
| 1039 | /* (RIO->Driver,pre-emptive) |
| 1040 | |
| 1041 | COMMAND_RUP - BREAK_RECEIVED packets are sent when the port detects a receive BREAK signal. |
| 1042 | */ |
| 1043 | #if 0 |
| 1044 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1045 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 1046 | #define PKT_Cmd2 (PKT_Data+2) /* Command code copy */ |
| 1047 | #endif |
| 1048 | |
| 1049 | /***************************************************************************** |
| 1050 | ********************* ************************* |
| 1051 | ********************* COMMAND_RUP - MODEM_STATUS ************************* |
| 1052 | ********************* ************************* |
| 1053 | *****************************************************************************/ |
| 1054 | |
| 1055 | /* (RIO->Driver,pre-emptive) |
| 1056 | |
| 1057 | COMMAND_RUP - MODEM_STATUS packets are sent whenever the port detects a |
| 1058 | change in the input modem signal states. |
| 1059 | |
| 1060 | */ |
| 1061 | #if 0 |
| 1062 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1063 | #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */ |
| 1064 | #define PKT_Cmd2 (PKT_Data+2) /* Command code copy */ |
| 1065 | #define PKT_ModemStatus (PKT_Data+3) /* Modem signal status */ |
| 1066 | #endif |
| 1067 | |
| 1068 | /***************************************************************************** |
| 1069 | ************************ ************************* |
| 1070 | ************************ BOOT_RUP - BOOT_REQUEST ************************* |
| 1071 | ************************ ************************* |
| 1072 | *****************************************************************************/ |
| 1073 | |
| 1074 | /* (RIO->Driver,pre-emptive) |
| 1075 | |
| 1076 | BOOT_RUP - BOOT_REQUEST packets are sent to the Driver from RIO to request |
| 1077 | firmware code to load onto attached RTAs. |
| 1078 | */ |
| 1079 | #if 0 |
| 1080 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1081 | #endif |
| 1082 | |
| 1083 | /***************************************************************************** |
| 1084 | ************************ ************************ |
| 1085 | ************************ BOOT_RUP - BOOT_SEQUENCE ************************ |
| 1086 | ************************ ************************ |
| 1087 | *****************************************************************************/ |
| 1088 | |
| 1089 | /* (Driver->RIO,pre-emptive) |
| 1090 | |
| 1091 | BOOT_RUP - BOOT_SEQUENCE packets are sent from the Driver to RIO in response |
| 1092 | to a BOOT_RUP - BOOT_REQUEST packet. |
| 1093 | */ |
| 1094 | #if 0 |
| 1095 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1096 | #endif |
| 1097 | #define PKT_NumPackets (PKT_Data+2) /* Packets required to load firmware */ |
| 1098 | #define PKT_LoadBase (PKT_Data+4) /* RTA firmware load address */ |
| 1099 | #define PKT_CodeSize (PKT_Data+6) /* Size of firmware in bytes */ |
| 1100 | #define PKT_CmdString (PKT_Data+8) /* Command string */ |
| 1101 | |
| 1102 | /***************************************************************************** |
| 1103 | ************************ *********************** |
| 1104 | ************************ BOOT_RUP - BOOT_COMPLETED *********************** |
| 1105 | ************************ *********************** |
| 1106 | *****************************************************************************/ |
| 1107 | |
| 1108 | /* (RIO->Driver,pre-emptive) |
| 1109 | |
| 1110 | BOOT_RUP - BOOT_COMPLETE is sent to the Driver from RIO when downloading of |
| 1111 | RTA firmware has completed. |
| 1112 | */ |
| 1113 | #if 0 |
| 1114 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1115 | #endif |
| 1116 | #define PKT_LinkNumber (PKT_Data+1) /* Link number RTA booted on */ |
| 1117 | #define PKT_SerialNumber (PKT_Data+2) /* 4 byte serial number */ |
| 1118 | |
| 1119 | /***************************************************************************** |
| 1120 | ************************ *********************** |
| 1121 | ************************ BOOT_RUP - Packet Request *********************** |
| 1122 | ************************ *********************** |
| 1123 | *****************************************************************************/ |
| 1124 | |
| 1125 | /* (RIO->Driver,pre-emptive) |
| 1126 | |
| 1127 | BOOT_RUP packet without the PKT_CMD_BIT set in the PKT->len field is sent |
| 1128 | from RIO to the Driver as a request for a firmware boot packet. */ |
| 1129 | |
| 1130 | #define PKT_SequenceNumber (PKT_Data+0) /* Packet sequence number */ |
| 1131 | |
| 1132 | /***************************************************************************** |
| 1133 | *********************** *********************** |
| 1134 | *********************** BOOT_RUP - Packet Response *********************** |
| 1135 | *********************** *********************** |
| 1136 | *****************************************************************************/ |
| 1137 | |
| 1138 | /* (Driver->RIO,pre-emptive) |
| 1139 | |
| 1140 | In response to a BOOT_RUP boot packet request, the driver fills out the response |
| 1141 | packet with the 70 bytes of the requested sequence. |
| 1142 | */ |
| 1143 | #if 0 |
| 1144 | #define PKT_SequenceNumber (PKT_Data+0) /* Packet sequence number */ |
| 1145 | #endif |
| 1146 | #define PKT_FirmwarePacket (PKT_Data+2) /* Firmware packet */ |
| 1147 | |
| 1148 | /***************************************************************************** |
| 1149 | **************************** **************************** |
| 1150 | **************************** BOOT_RUP - IFOAD **************************** |
| 1151 | **************************** **************************** |
| 1152 | *****************************************************************************/ |
| 1153 | |
| 1154 | /* (Driver->RIO,pre-emptive) |
| 1155 | |
| 1156 | BOOT_RUP - IFOAD packets are sent from the Driver to an RTA to cause the |
| 1157 | RTA to shut down and reboot. |
| 1158 | */ |
| 1159 | #if 0 |
| 1160 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1161 | #endif |
| 1162 | #define PKT_IfoadId1 (PKT_Data+2) /* IFOAD Id 1 */ |
| 1163 | #define PKT_IfoadId2 (PKT_Data+3) /* IFOAD Id 2 */ |
| 1164 | |
| 1165 | #define IFOADID1 0xAD |
| 1166 | #define IFOADID2 0xF0 |
| 1167 | |
| 1168 | /***************************************************************************** |
| 1169 | ************************** *************************** |
| 1170 | ************************** BOOT_RUP - IDENTIFY *************************** |
| 1171 | ************************** *************************** |
| 1172 | *****************************************************************************/ |
| 1173 | |
| 1174 | /* (Driver->RIO,pre-emptive) |
| 1175 | |
| 1176 | BOOT_RUP - IDENTIFY packets are sent from the Driver to an RTA to cause the |
| 1177 | RTA to flash its LEDs for a period of time. |
| 1178 | */ |
| 1179 | #if 0 |
| 1180 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1181 | #endif |
| 1182 | #define PKT_IdentifyId (PKT_Data+2) /* defines pattern to flash */ |
| 1183 | |
| 1184 | /***************************************************************************** |
| 1185 | **************************** *************************** |
| 1186 | **************************** BOOT_RUP - ZOMBIE *************************** |
| 1187 | **************************** *************************** |
| 1188 | *****************************************************************************/ |
| 1189 | |
| 1190 | /* (Driver->RIO,pre-emptive) |
| 1191 | |
| 1192 | BOOT_RUP - ZOMBIE packets are sent from the Driver to an RTA to cause the |
| 1193 | RTA to shut down and flash it's LEDs. |
| 1194 | */ |
| 1195 | #if 0 |
| 1196 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1197 | #endif |
| 1198 | #define PKT_ZombieId1 (PKT_Data+2) /* ZOMBIE Id 1 */ |
| 1199 | #define PKT_ZombieId2 (PKT_Data+3) /* ZOMBIE Id 2 */ |
| 1200 | |
| 1201 | #define ZOMBIEID1 0x52 |
| 1202 | #define ZOMBIEID2 0x21 |
| 1203 | |
| 1204 | /***************************************************************************** |
| 1205 | **************************** **************************** |
| 1206 | **************************** BOOT_RUP - UFOAD **************************** |
| 1207 | **************************** **************************** |
| 1208 | *****************************************************************************/ |
| 1209 | |
| 1210 | /* (Driver->RIO,pre-emptive) |
| 1211 | |
| 1212 | BOOT_RUP - UFOAD packets are sent from the Driver to an RTA to cause the RTA |
| 1213 | to ask it's neighbouring RTA to shut down and reboot. |
| 1214 | */ |
| 1215 | #if 0 |
| 1216 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1217 | #define PKT_LinkNumber (PKT_Data+1) /* Link number of RTA to UFOAD */ |
| 1218 | #endif |
| 1219 | #define PKT_UfoadId1 (PKT_Data+2) /* UFOAD Id 1 */ |
| 1220 | #define PKT_UfoadId2 (PKT_Data+3) /* UFOAD Id 2 */ |
| 1221 | |
| 1222 | #define UFOADID1 0x1E |
| 1223 | #define UFOADID2 0x0D |
| 1224 | |
| 1225 | /***************************************************************************** |
| 1226 | **************************** **************************** |
| 1227 | **************************** BOOT_RUP - IWAIT **************************** |
| 1228 | **************************** **************************** |
| 1229 | *****************************************************************************/ |
| 1230 | |
| 1231 | /* (Driver->RIO,pre-emptive) |
| 1232 | |
| 1233 | BOOT_RUP - IWAIT packets are sent from the Driver to an RTA to cause the RTA |
| 1234 | to pause booting on the specified link for 30 seconds. |
| 1235 | */ |
| 1236 | #if 0 |
| 1237 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1238 | #define PKT_LinkNumber (PKT_Data+1) /* Link number of RTA to UFOAD */ |
| 1239 | #endif |
| 1240 | #define PKT_IwaitId1 (PKT_Data+2) /* IWAIT Id 1 */ |
| 1241 | #define PKT_IwaitId2 (PKT_Data+3) /* IWAIT Id 2 */ |
| 1242 | |
| 1243 | #define IWAITID1 0xDE |
| 1244 | #define IWAITID2 0xB1 |
| 1245 | |
| 1246 | /***************************************************************************** |
| 1247 | ************************ *********************** |
| 1248 | ************************ ROUTE_RUP - ROUTE_REQUEST *********************** |
| 1249 | ************************ *********************** |
| 1250 | *****************************************************************************/ |
| 1251 | |
| 1252 | /* (RIO->Driver,pre-emptive) |
| 1253 | |
| 1254 | ROUTE_RUP - ROUTE_REQUEST packets are sent from a newly booted or connected |
| 1255 | RTA to a Driver to request an ID (RUP or unit number). |
| 1256 | */ |
| 1257 | #if 0 |
| 1258 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1259 | #endif |
| 1260 | #define PKT_SerialNumber (PKT_Data+2) /* 4 byte serial number */ |
| 1261 | #define PKT_ModuleTypes (PKT_Data+6) /* RTA Module types */ |
| 1262 | |
| 1263 | /* ModuleTypes definitions... */ |
| 1264 | #define MOD_BLANK 0x0F /* Blank plate attached */ |
| 1265 | #define MOD_RS232DB25 0x00 /* RS232 DB25 connector */ |
| 1266 | #define MOD_RS232RJ45 0x01 /* RS232 RJ45 connector */ |
| 1267 | #define MOD_RS422DB25 0x02 /* RS422 DB25 connector */ |
| 1268 | #define MOD_RS485DB25 0x03 /* RS485 DB25 connector */ |
| 1269 | #define MOD_PARALLEL 0x04 /* Centronics parallel */ |
| 1270 | |
| 1271 | #define MOD2 0x08 /* Set to indicate Rev2 module */ |
| 1272 | |
| 1273 | /***************************************************************************** |
| 1274 | ************************* ************************* |
| 1275 | ************************* ROUTE_RUP - ROUTE_FOAD ************************* |
| 1276 | ************************* ************************* |
| 1277 | *****************************************************************************/ |
| 1278 | |
| 1279 | /* (Driver->RIO,pre-emptive) |
| 1280 | |
| 1281 | ROUTE_RUP - ROUTE_FOAD packet is sent as a response to a ROUTE_RUP - ROUTE_REQUEST |
| 1282 | packet to cause the RTA to "Fall Over And Die"., i.e. shutdown and reboot. |
| 1283 | */ |
| 1284 | #if 0 |
| 1285 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1286 | #endif |
| 1287 | #define PKT_RouteCmdString (PKT_Data+2) /* Command string */ |
| 1288 | |
| 1289 | /***************************************************************************** |
| 1290 | *********************** *********************** |
| 1291 | *********************** ROUTE_RUP - ROUTE_ALLOCATE *********************** |
| 1292 | *********************** *********************** |
| 1293 | *****************************************************************************/ |
| 1294 | |
| 1295 | /* (Driver->RIO,pre-emptive) |
| 1296 | |
| 1297 | ROUTE_RUP - ROUTE_ALLOCATE packet is sent as a response to a ROUTE_RUP - ROUTE_REQUEST |
| 1298 | packet to allocate the RTA's Id number (RUP number 1..16) |
| 1299 | */ |
| 1300 | #if 0 |
| 1301 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1302 | #endif |
| 1303 | #define PKT_IdNum (PKT_Data+1) /* RUP number for ports 1..8 */ |
| 1304 | #if 0 |
| 1305 | #define PKT_RouteCmdString (PKT_Data+2) /* Command string */ |
| 1306 | #endif |
| 1307 | #define PKT_IdNum2 (PKT_Data+0x17) /* RUP number for ports 9..16 */ |
| 1308 | |
| 1309 | /***************************************************************************** |
| 1310 | *********************** *********************** |
| 1311 | *********************** ROUTE_RUP - ROUTE_TOPOLOGY *********************** |
| 1312 | *********************** *********************** |
| 1313 | *****************************************************************************/ |
| 1314 | |
| 1315 | /* (RIO->Driver,pre-emptive) |
| 1316 | |
| 1317 | ROUTE_RUP - ROUTE_TOPOLOGY packet is sent to inform the driver of an RTA's |
| 1318 | current link status. |
| 1319 | */ |
| 1320 | #if 0 |
| 1321 | #define PKT_Cmd (PKT_Data+0) /* Command code */ |
| 1322 | #endif |
| 1323 | #define PKT_Link1Rup (PKT_Data+2) /* Link 1 RUP number */ |
| 1324 | #define PKT_Link1Link (PKT_Data+3) /* Link 1 link number */ |
| 1325 | #define PKT_Link2Rup (PKT_Data+4) /* Link 2 RUP number */ |
| 1326 | #define PKT_Link2Link (PKT_Data+5) /* Link 2 link number */ |
| 1327 | #define PKT_Link3Rup (PKT_Data+6) /* Link 3 RUP number */ |
| 1328 | #define PKT_Link3Link (PKT_Data+7) /* Link 3 link number */ |
| 1329 | #define PKT_Link4Rup (PKT_Data+8) /* Link 4 RUP number */ |
| 1330 | #define PKT_Link4Link (PKT_Data+9) /* Link 4 link number */ |
| 1331 | #define PKT_RtaVpdProm (PKT_Data+10) /* 32 bytes of RTA VPD PROM Contents */ |
| 1332 | |
| 1333 | #endif /* _sxwinif_h */ |
| 1334 | |
| 1335 | /* End of RIOWINIF.H */ |