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 */ 1336