1 /************************************************************************/
3 /* Title : RIO Shared Memory Window Inteface */
5 /* Author : N.P.Vassallo */
7 /* Creation : 7th June 1999 */
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.
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.
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.
26 /* Description : Prototypes, structures and definitions */
27 /* describing RIO host card shared memory */
28 /* window interface structures: */
35 /************************************************************************/
39 1.0.0 07/06/99 NPV Creation. (based on PARMMAP.H)
43 #ifndef _riowinif_h /* If RIOWINDIF.H not already defined */
46 /*****************************************************************************
47 ******************************** *********************************
48 ******************************** General *********************************
49 ******************************** *********************************
50 *****************************************************************************/
52 #define TPNULL ((_u16)(0x8000))
54 /*****************************************************************************
55 ******************************** ********************************
56 ******************************** PARM_MAP ********************************
57 ******************************** ********************************
58 *****************************************************************************/
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. */
63 typedef struct _PARM_MAP
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 */
102 /* Same thing again, but defined as offsets... */
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 */
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
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
174 /* PARM_MAP.links definitions... */
175 #define RIO_LINK_ENABLE 0x80FF
177 /*****************************************************************************
178 ********************************** ***********************************
179 ********************************** RUP ***********************************
180 ********************************** ***********************************
181 *****************************************************************************/
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. */
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 */
201 /* Same thing again, but defined as offsets... */
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 */
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 */
221 /* RUP.txcontrol definitions... */
222 #define RX_RUP_INACTIVE 0 /* Nothing received */
223 #define RX_PACKET_READY 1 /* Packet received */
225 #define RUP_NO_OWNER 0xFF /* RUP not owned by any process */
227 /*****************************************************************************
228 ********************************** ***********************************
229 ********************************** PHB ***********************************
230 ********************************** ***********************************
231 *****************************************************************************/
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. */
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 */
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 */
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 */
258 /* Same thing again, but defined as offsets... */
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 */
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)
282 #define MAX_PHB 128 /* range 0-127 */
284 /*****************************************************************************
285 ********************************** ***********************************
286 ********************************** LPB ***********************************
287 ********************************** ***********************************
288 *****************************************************************************/
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. */
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 */
316 _u16 lrt_fail_chan
; /* 0x2A Lrt's failure channel */
317 _u16 ltt_fail_chan
; /* 0x2C Ltt's failure channel */
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 */
335 /* Same thing again, but defined as offsets... */
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 */
373 #define LINKS_PER_UNIT 4 /* number of links from a host */
375 /*****************************************************************************
376 ******************************** *******************************
377 ******************************** FREE_LIST *******************************
378 ******************************** *******************************
379 *****************************************************************************/
381 /* Used to overlay packet headers when allocating/freeing packets from the free list */
383 typedef struct _FREE_LIST
385 _u16 next
; /* 0x00 offset of next list item */
386 _u16 prev
; /* 0x02 offset of previous list item */
390 /* Same thing again, but defined as offsets... */
392 #define FL_next 0x00 /* 0x00 offset of next list item */
393 #define FL_prev 0x02 /* 0x02 offset of previous list item */
395 /*****************************************************************************
396 ********************************** ***********************************
397 ********************************** PKT ***********************************
398 ********************************** ***********************************
399 *****************************************************************************/
401 /* The PKT is the main unit of communication between Host Cards and RTAs across
404 #define PKT_MAX_DATA_LEN 72 /* Size of packet data */
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 */
419 /* Same thing again, but defined as offsets... */
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 */
431 /* PKT.len definitions... */
432 #define PKT_CMD_BIT 0x80
433 #define PKT_CMD_DATA 0x80
434 #define PKT_LEN_MASK 0x7F
436 /* PKT.control definitions... */
439 #define DATA_WNDW 0x10
440 #define PKT_TTL_MASK 0x0F
443 /*****************************************************************************
444 ***************************** ****************************
445 ***************************** Control Packets ****************************
446 ***************************** ****************************
447 *****************************************************************************/
449 /* The following definitions and structures define the control packets sent
450 between the driver and RIO Ports, RTAs and Host Cards. */
452 #define PRE_EMPTIVE 0x80 /* Pre-emptive command (sent via port's RUP) */
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 */
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 */
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 */
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 */
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 */
510 /*****************************************************************************
511 ********************************** **********************************
512 ********************************** OPEN **********************************
513 ********************************** **********************************
514 *****************************************************************************/
516 /* (Driver->RIO,in-band)
519 Structure of configuration info used with OPEN, CONFIG and MOPEN packets... */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
605 /*****************************************************************************
606 ********************************* *********************************
607 ********************************* CONFIG *********************************
608 ********************************* *********************************
609 *****************************************************************************/
611 /* (Driver->RIO,in-band)
613 CONFIG is sent from the driver to configure an already opened port.
614 Packet structure is same as OPEN. */
616 /*****************************************************************************
617 ********************************* **********************************
618 ********************************* MOPEN **********************************
619 ********************************* **********************************
620 *****************************************************************************/
622 /* (Driver->RIO,in-band)
624 MOPEN is sent from the driver to open a port attached to a modem. (in-band)
625 Packet structure is same as OPEN. */
627 /*****************************************************************************
628 ********************************* **********************************
629 ********************************* CLOSE **********************************
630 ********************************* **********************************
631 *****************************************************************************/
633 /* (Driver->RIO,in-band)
635 CLOSE is sent from the driver to close a previously opened port.
639 #define PKT_Cmd (PKT_Data+0) /* Command code */
641 /*****************************************************************************
642 ********************************* *********************************
643 ********************************* WFLUSH *********************************
644 ********************************* *********************************
645 *****************************************************************************/
647 /* (Driver->RIO,pre-emptive)
649 WFLUSH is sent pre-emptively from the driver to flush the write buffers and
650 packets of a port. (pre-emptive)
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)
656 #define PKT_Cmd (PKT_Data+0) /* Command code */
658 #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
660 /*****************************************************************************
661 ********************************* *********************************
662 ********************************* RFLUSH *********************************
663 ********************************* *********************************
664 *****************************************************************************/
666 /* (Driver->RIO,pre-emptive)
668 RFLUSH is sent pre-emptively from the driver to flush the read buffers and
672 #define PKT_Cmd (PKT_Data+0) /* Command code */
673 #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
676 /*****************************************************************************
677 ********************************* *********************************
678 ********************************* RESUME *********************************
679 ********************************* *********************************
680 *****************************************************************************/
682 /* (Driver->RIO,pre-emptive)
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)
688 #define PKT_Cmd (PKT_Data+0) /* Command code */
689 #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
692 /*****************************************************************************
693 ********************************* *********************************
694 ********************************* SBREAK *********************************
695 ********************************* *********************************
696 *****************************************************************************/
698 /* (Driver->RIO,in-band)
700 SBREAK is sent in-band from the driver to a port to suspend data and start
701 break signal transmission.
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.
706 Otherwise, there is no acknowledgement and the break signal will last for the
707 specified number of mS.
710 #define PKT_Cmd (PKT_Data+0) /* Command code */
712 #define PKT_BreakDelay (PKT_Data+1) /* Break delay in mS */
714 /*****************************************************************************
715 ********************************* *********************************
716 ********************************* EBREAK *********************************
717 ********************************* *********************************
718 *****************************************************************************/
720 /* (Driver->RIO,in-band)
722 EBREAK is sent in-band from the driver to a port to stop transmission of a
727 /*****************************************************************************
728 ********************************* ********************************
729 ********************************* SUSPEND ********************************
730 ********************************* ********************************
731 *****************************************************************************/
733 /* (Driver->RIO,pre-emptive)
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)
739 #define PKT_Cmd (PKT_Data+0) /* Command code */
740 #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
743 /*****************************************************************************
744 ********************************* *********************************
745 ********************************* FCLOSE *********************************
746 ********************************* *********************************
747 *****************************************************************************/
749 /* (Driver->RIO,pre-emptive)
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.
756 #define PKT_Cmd (PKT_Data+0) /* Command code */
757 #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
760 /*****************************************************************************
761 ********************************* *********************************
762 ********************************* XPRINT *********************************
763 ********************************* *********************************
764 *****************************************************************************/
766 /* (Driver->RIO,in-band)
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.
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.
777 #define PKT_Cmd (PKT_Data+0) /* Command code */
778 #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
781 /*****************************************************************************
782 ********************************** **********************************
783 ********************************** MBIS **********************************
784 ********************************** **********************************
785 *****************************************************************************/
787 /* (Driver->RIO,pre-emptive)
789 MBIS is sent pre-emptively from the driver to set a port's modem signals.
792 #define PKT_Cmd (PKT_Data+0) /* Command code */
793 #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
795 #define PKT_ModemSet (PKT_Data+4) /* Modem set signals mask */
797 /* ModemSet definitions... */
798 #define MBIS_RTS 0x01 /* RTS modem signal */
799 #define MBIS_DTR 0x02 /* DTR modem signal */
801 /*****************************************************************************
802 ********************************** **********************************
803 ********************************** MBIC **********************************
804 ********************************** **********************************
805 *****************************************************************************/
807 /* (Driver->RIO,pre-emptive)
809 MBIC is sent pre-emptively from the driver to clear a port's modem signals.
812 #define PKT_Cmd (PKT_Data+0) /* Command code */
813 #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
816 #define PKT_ModemClear (PKT_Data+4) /* Modem clear signals mask */
818 /* ModemClear definitions... */
819 #define MBIC_RTS 0x01 /* RTS modem signal */
820 #define MBIC_DTR 0x02 /* DTR modem signal */
822 /*****************************************************************************
823 ********************************** **********************************
824 ********************************** MSET **********************************
825 ********************************** **********************************
826 *****************************************************************************/
828 /* (Driver->RIO,pre-emptive)
830 MSET is sent pre-emptively from the driver to set/clear a port's modem signals. */
832 #define PKT_Cmd (PKT_Data+0) /* Command code */
833 #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
836 #define PKT_ModemSet (PKT_Data+4) /* Modem set signals mask */
838 /* ModemSet definitions... */
839 #define MSET_RTS 0x01 /* RTS modem signal */
840 #define MSET_DTR 0x02 /* DTR modem signal */
842 /*****************************************************************************
843 ********************************* *********************************
844 ********************************* PCLOSE *********************************
845 ********************************* *********************************
846 *****************************************************************************/
848 /* (Driver->RIO,in-band)
850 PCLOSE is sent from the driver to pseudo close a previously opened port.
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. */
856 #define PKT_Cmd (PKT_Data+0) /* Command code */
858 /*****************************************************************************
859 ********************************** **********************************
860 ********************************** MGET **********************************
861 ********************************** **********************************
862 *****************************************************************************/
864 /* (Driver->RIO,pre-emptive)
866 MGET is sent pre-emptively from the driver to request the port's current modem signals. */
868 #define PKT_Cmd (PKT_Data+0) /* Command code */
869 #define PKT_PhbNum (PKT_Data+1) /* Port number wrt RTA */
871 /*****************************************************************************
872 ********************************* ********************************
873 ********************************* MEMDUMP ********************************
874 ********************************* ********************************
875 *****************************************************************************/
877 /* (Driver->RIO,pre-emptive)
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.
883 #define PKT_Cmd (PKT_Data+0) /* Command code */
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 */
889 /*****************************************************************************
890 ****************************** *****************************
891 ****************************** READ_REGISTER *****************************
892 ****************************** *****************************
893 *****************************************************************************/
895 /* (Driver->RIO,pre-emptive)
897 READ_REGISTER is sent pre-emptively from the driver to request the contents
898 of the CD1400 register specified in address.
901 #define PKT_Cmd (PKT_Data+0) /* Command code */
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 */
907 /*****************************************************************************
908 ************************ **************************
909 ************************ COMMAND_RUP - COMPLETE **************************
910 ************************ **************************
911 *****************************************************************************/
913 /* (RIO->Driver,pre-emptive)
915 COMMAND_RUP - COMPLETE is sent in response to all port I/O control command
916 packets, except MEMDUMP and READ_REGISTER.
919 #define PKT_Cmd (PKT_Data+0) /* Command code */
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 */
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 */
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 */
947 /*****************************************************************************
948 ************************ **************************
949 ************************ COMMAND_RUP - COMPLETE **************************
950 ************************ **************************
951 *****************************************************************************/
953 /* (RIO->Driver,pre-emptive)
955 COMMAND_RUP - COMPLETE is sent in response to all port I/O control command
956 packets, except MEMDUMP and READ_REGISTER.
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 */
963 #define PKT_ModemStatus (PKT_Data+3) /* Modem signal status */
964 #define PKT_PortStatus (PKT_Data+4) /* Port signal status */
966 #define PKT_SubCmd (PKT_Data+5) /* Sub Command */
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 */
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 */
989 /*****************************************************************************
990 ******************** ********************
991 ******************** COMMAND_RUP - COMPLETE - MEMDUMP ********************
992 ******************** ********************
993 *****************************************************************************/
995 /* (RIO->Driver,pre-emptive)
997 COMMAND_RUP - COMPLETE - MEMDUMP is sent as an acknowledgement for a MEMDUMP
998 port I/O control command packet.
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 */
1009 #define PKT_Dump (PKT_Data+8) /* 32bytes of requested dump data */
1011 /*****************************************************************************
1012 ***************** *****************
1013 ***************** COMMAND_RUP - COMPLETE - READ_REGISTER *****************
1014 ***************** *****************
1015 *****************************************************************************/
1017 /* (RIO->Driver,pre-emptive)
1019 COMMAND_RUP - COMPLETE - READ_REGISTER is sent as an acknowledgement for a
1020 READ_REGISTER port I/O control command packet.
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 */
1027 #define PKT_RegisterValue (PKT_Data+3) /* Modem signal status */
1029 #define PKT_PortStatus (PKT_Data+4) /* Port signal status */
1030 #define PKT_SubCmd (PKT_Data+5) /* Sub Command */
1033 /*****************************************************************************
1034 ********************* ***********************
1035 ********************* COMMAND_RUP - BREAK_RECEIVED ***********************
1036 ********************* ***********************
1037 *****************************************************************************/
1039 /* (RIO->Driver,pre-emptive)
1041 COMMAND_RUP - BREAK_RECEIVED packets are sent when the port detects a receive BREAK signal.
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 */
1049 /*****************************************************************************
1050 ********************* *************************
1051 ********************* COMMAND_RUP - MODEM_STATUS *************************
1052 ********************* *************************
1053 *****************************************************************************/
1055 /* (RIO->Driver,pre-emptive)
1057 COMMAND_RUP - MODEM_STATUS packets are sent whenever the port detects a
1058 change in the input modem signal states.
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 */
1068 /*****************************************************************************
1069 ************************ *************************
1070 ************************ BOOT_RUP - BOOT_REQUEST *************************
1071 ************************ *************************
1072 *****************************************************************************/
1074 /* (RIO->Driver,pre-emptive)
1076 BOOT_RUP - BOOT_REQUEST packets are sent to the Driver from RIO to request
1077 firmware code to load onto attached RTAs.
1080 #define PKT_Cmd (PKT_Data+0) /* Command code */
1083 /*****************************************************************************
1084 ************************ ************************
1085 ************************ BOOT_RUP - BOOT_SEQUENCE ************************
1086 ************************ ************************
1087 *****************************************************************************/
1089 /* (Driver->RIO,pre-emptive)
1091 BOOT_RUP - BOOT_SEQUENCE packets are sent from the Driver to RIO in response
1092 to a BOOT_RUP - BOOT_REQUEST packet.
1095 #define PKT_Cmd (PKT_Data+0) /* Command code */
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 */
1102 /*****************************************************************************
1103 ************************ ***********************
1104 ************************ BOOT_RUP - BOOT_COMPLETED ***********************
1105 ************************ ***********************
1106 *****************************************************************************/
1108 /* (RIO->Driver,pre-emptive)
1110 BOOT_RUP - BOOT_COMPLETE is sent to the Driver from RIO when downloading of
1111 RTA firmware has completed.
1114 #define PKT_Cmd (PKT_Data+0) /* Command code */
1116 #define PKT_LinkNumber (PKT_Data+1) /* Link number RTA booted on */
1117 #define PKT_SerialNumber (PKT_Data+2) /* 4 byte serial number */
1119 /*****************************************************************************
1120 ************************ ***********************
1121 ************************ BOOT_RUP - Packet Request ***********************
1122 ************************ ***********************
1123 *****************************************************************************/
1125 /* (RIO->Driver,pre-emptive)
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. */
1130 #define PKT_SequenceNumber (PKT_Data+0) /* Packet sequence number */
1132 /*****************************************************************************
1133 *********************** ***********************
1134 *********************** BOOT_RUP - Packet Response ***********************
1135 *********************** ***********************
1136 *****************************************************************************/
1138 /* (Driver->RIO,pre-emptive)
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.
1144 #define PKT_SequenceNumber (PKT_Data+0) /* Packet sequence number */
1146 #define PKT_FirmwarePacket (PKT_Data+2) /* Firmware packet */
1148 /*****************************************************************************
1149 **************************** ****************************
1150 **************************** BOOT_RUP - IFOAD ****************************
1151 **************************** ****************************
1152 *****************************************************************************/
1154 /* (Driver->RIO,pre-emptive)
1156 BOOT_RUP - IFOAD packets are sent from the Driver to an RTA to cause the
1157 RTA to shut down and reboot.
1160 #define PKT_Cmd (PKT_Data+0) /* Command code */
1162 #define PKT_IfoadId1 (PKT_Data+2) /* IFOAD Id 1 */
1163 #define PKT_IfoadId2 (PKT_Data+3) /* IFOAD Id 2 */
1165 #define IFOADID1 0xAD
1166 #define IFOADID2 0xF0
1168 /*****************************************************************************
1169 ************************** ***************************
1170 ************************** BOOT_RUP - IDENTIFY ***************************
1171 ************************** ***************************
1172 *****************************************************************************/
1174 /* (Driver->RIO,pre-emptive)
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.
1180 #define PKT_Cmd (PKT_Data+0) /* Command code */
1182 #define PKT_IdentifyId (PKT_Data+2) /* defines pattern to flash */
1184 /*****************************************************************************
1185 **************************** ***************************
1186 **************************** BOOT_RUP - ZOMBIE ***************************
1187 **************************** ***************************
1188 *****************************************************************************/
1190 /* (Driver->RIO,pre-emptive)
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.
1196 #define PKT_Cmd (PKT_Data+0) /* Command code */
1198 #define PKT_ZombieId1 (PKT_Data+2) /* ZOMBIE Id 1 */
1199 #define PKT_ZombieId2 (PKT_Data+3) /* ZOMBIE Id 2 */
1201 #define ZOMBIEID1 0x52
1202 #define ZOMBIEID2 0x21
1204 /*****************************************************************************
1205 **************************** ****************************
1206 **************************** BOOT_RUP - UFOAD ****************************
1207 **************************** ****************************
1208 *****************************************************************************/
1210 /* (Driver->RIO,pre-emptive)
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.
1216 #define PKT_Cmd (PKT_Data+0) /* Command code */
1217 #define PKT_LinkNumber (PKT_Data+1) /* Link number of RTA to UFOAD */
1219 #define PKT_UfoadId1 (PKT_Data+2) /* UFOAD Id 1 */
1220 #define PKT_UfoadId2 (PKT_Data+3) /* UFOAD Id 2 */
1222 #define UFOADID1 0x1E
1223 #define UFOADID2 0x0D
1225 /*****************************************************************************
1226 **************************** ****************************
1227 **************************** BOOT_RUP - IWAIT ****************************
1228 **************************** ****************************
1229 *****************************************************************************/
1231 /* (Driver->RIO,pre-emptive)
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.
1237 #define PKT_Cmd (PKT_Data+0) /* Command code */
1238 #define PKT_LinkNumber (PKT_Data+1) /* Link number of RTA to UFOAD */
1240 #define PKT_IwaitId1 (PKT_Data+2) /* IWAIT Id 1 */
1241 #define PKT_IwaitId2 (PKT_Data+3) /* IWAIT Id 2 */
1243 #define IWAITID1 0xDE
1244 #define IWAITID2 0xB1
1246 /*****************************************************************************
1247 ************************ ***********************
1248 ************************ ROUTE_RUP - ROUTE_REQUEST ***********************
1249 ************************ ***********************
1250 *****************************************************************************/
1252 /* (RIO->Driver,pre-emptive)
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).
1258 #define PKT_Cmd (PKT_Data+0) /* Command code */
1260 #define PKT_SerialNumber (PKT_Data+2) /* 4 byte serial number */
1261 #define PKT_ModuleTypes (PKT_Data+6) /* RTA Module types */
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 */
1271 #define MOD2 0x08 /* Set to indicate Rev2 module */
1273 /*****************************************************************************
1274 ************************* *************************
1275 ************************* ROUTE_RUP - ROUTE_FOAD *************************
1276 ************************* *************************
1277 *****************************************************************************/
1279 /* (Driver->RIO,pre-emptive)
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.
1285 #define PKT_Cmd (PKT_Data+0) /* Command code */
1287 #define PKT_RouteCmdString (PKT_Data+2) /* Command string */
1289 /*****************************************************************************
1290 *********************** ***********************
1291 *********************** ROUTE_RUP - ROUTE_ALLOCATE ***********************
1292 *********************** ***********************
1293 *****************************************************************************/
1295 /* (Driver->RIO,pre-emptive)
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)
1301 #define PKT_Cmd (PKT_Data+0) /* Command code */
1303 #define PKT_IdNum (PKT_Data+1) /* RUP number for ports 1..8 */
1305 #define PKT_RouteCmdString (PKT_Data+2) /* Command string */
1307 #define PKT_IdNum2 (PKT_Data+0x17) /* RUP number for ports 9..16 */
1309 /*****************************************************************************
1310 *********************** ***********************
1311 *********************** ROUTE_RUP - ROUTE_TOPOLOGY ***********************
1312 *********************** ***********************
1313 *****************************************************************************/
1315 /* (RIO->Driver,pre-emptive)
1317 ROUTE_RUP - ROUTE_TOPOLOGY packet is sent to inform the driver of an RTA's
1318 current link status.
1321 #define PKT_Cmd (PKT_Data+0) /* Command code */
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 */
1333 #endif /* _sxwinif_h */
1335 /* End of RIOWINIF.H */