OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [char/] [rio/] [riowinif.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/************************************************************************/
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 */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.