aboutsummaryrefslogblamecommitdiffstats
path: root/drivers/char/rio/riowinif.h
blob: f802d7593b806eea6cc6d141e9427214d9753819 (plain) (tree)









































                                                                            
                                                                        


















                                                                               


































                                                                        























































































                                                                                     









                                                                           




                                                 









                                                                                   



                                  


                                                                   

                                  

                                                              
 
                                                                          










                                                                              
















                                                                                                




                                                 














                                                                                                        

                                  

                                                                 


                                                                       
                                                         










                                                                              




































                                                                                             




                                                 




































                                                                                             








                                                                                       


                                                                       




                                                 

                                                                               









                                                                               
                                                         
 








                                                                          




                                                 








                                                                                  





















                                                                              
                                                                                       

                                                  



                                                                                   


                                                                                                   

                                                                     

                                                                                                    
                                                                       


                                                                                           
                                                                      




                                                                                                      







                                                                              






                                                                                             








                                                                                                 

                              






                                                                                  











                                                                                 











                                                                               

                         
















                                                            

                         






                                                                       

                        







                                                                          

                         







                                                                            

                                      




















                                                                       


































                                                                              
                                                                  















                                                                              
                                                                  
      
                                                                         












                                                                              

                                                                         













                                                                              

                                                                         



















                                                                                
                                                                  
      
                                                                       

























                                                                              

                                                                         














                                                                                

                                                                         


















                                                                              

                                                                         












                                                                              

                                                                         
      
                                                                            

                             

                                                              










                                                                              


                                                                         

      
                                                                              

                               

                                                              










                                                                                     

                                                                         

      
                                                                            

                             

                                                              














                                                                              
                                                                  










                                                                                             

                                                                         












                                                                              
                                                                  
      


                                                                         












                                                                              
                                                                  
      


                                                                         












                                                                              
                                                                  
      




                                                                         

                                







                                                                        

                               







                                                                         












                                                                              


                                                                         
      

                                                                         
     
                                                                 


                                







                                                                        

                               







                                                                         












                                                                               






                                                                         
      
                                                                                    












                                                                              


                                                                        
      
                                                                         
     

                                                                        












                                                                                              


                                                                         














                                                                              



                                                                         













                                                                              
                                                                  













                                                                               
                                                                  
      



                                                                                       












                                                                              
                                                                  
      

                                                                               











                                                                              
                                                                            












                                                                                   
                                                                            
      
                                                                     












                                                                              
                                                                  
      

                                                                















                                                                              
                                                                  
      
                                                                              












                                                                              
                                                                  
      

                                                                 















                                                                               

                                                                                 
      

                                                                















                                                                               

                                                                                 
      

                                                                















                                                                              
                                                                  
      

                                                                          

                                





                                                                  
 
                                                                         












                                                                                     
                                                                  
      
                                                                    












                                                                                         
                                                                  
      
                                                                               
     
                                                                    
      
                                                                                












                                                                              
                                                                  
      










                                                                                       

                       
/************************************************************************/
/*									*/
/*	Title		:	RIO Shared Memory Window Inteface	*/
/*									*/
/*	Author		:	N.P.Vassallo				*/
/*									*/
/*	Creation	:	7th June 1999				*/
/*									*/
/*	Version		:	1.0.0					*/
/*									*/
/*	Copyright	:	(c) Specialix International Ltd. 1999	*
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *									*/
/*	Description	:	Prototypes, structures and definitions	*/
/*				describing RIO host card shared	memory	*/
/*				window interface structures:		*/
/*					PARMMAP				*/
/*					RUP				*/
/*					PHB				*/
/*					LPB				*/
/*					PKT				*/
/*									*/
/************************************************************************/

/* History...

1.0.0	07/06/99 NPV	Creation. (based on PARMMAP.H)

*/

#ifndef	_riowinif_h		/* If RIOWINDIF.H not already defined */
#define	_riowinif_h    1

/*****************************************************************************
********************************             *********************************
********************************   General   *********************************
********************************             *********************************
*****************************************************************************/

#define	TPNULL		((_u16)(0x8000))

/*****************************************************************************
********************************              ********************************
********************************   PARM_MAP   ********************************
********************************              ********************************
*****************************************************************************/

/* The PARM_MAP structure defines global values relating to the Host Card / RTA
   and is the main structure from which all other structures are referenced. */

typedef struct _PARM_MAP {
	_u16 phb_ptr;		/* 0x00 Pointer to the PHB array */
	_u16 phb_num_ptr;	/* 0x02 Ptr to Number of PHB's */
	_u16 free_list;		/* 0x04 Free List pointer */
	_u16 free_list_end;	/* 0x06 Free List End pointer */
	_u16 q_free_list_ptr;	/* 0x08 Ptr to Q_BUF variable */
	_u16 unit_id_ptr;	/* 0x0A Unit Id */
	_u16 link_str_ptr;	/* 0x0C Link Structure Array */
	_u16 bootloader_1;	/* 0x0E 1st Stage Boot Loader */
	_u16 bootloader_2;	/* 0x10 2nd Stage Boot Loader */
	_u16 port_route_map_ptr;	/* 0x12 Port Route Map */
	_u16 route_ptr;		/* 0x14 Route Map */
	_u16 map_present;	/* 0x16 Route Map present */
	_u16 pkt_num;		/* 0x18 Total number of packets */
	_u16 q_num;		/* 0x1A Total number of Q packets */
	_u16 buffers_per_port;	/* 0x1C Number of buffers per port */
	_u16 heap_size;		/* 0x1E Initial size of heap */
	_u16 heap_left;		/* 0x20 Current Heap left */
	_u16 error;		/* 0x22 Error code */
	_u16 tx_max;		/* 0x24 Max number of tx pkts per phb */
	_u16 rx_max;		/* 0x26 Max number of rx pkts per phb */
	_u16 rx_limit;		/* 0x28 For high / low watermarks */
	_u16 links;		/* 0x2A Links to use */
	_u16 timer;		/* 0x2C Interrupts per second */
	_u16 rups;		/* 0x2E Pointer to the RUPs */
	_u16 max_phb;		/* 0x30 Mostly for debugging */
	_u16 living;		/* 0x32 Just increments!! */
	_u16 init_done;		/* 0x34 Initialisation over */
	_u16 booting_link;	/* 0x36 */
	_u16 idle_count;	/* 0x38 Idle time counter */
	_u16 busy_count;	/* 0x3A Busy counter */
	_u16 idle_control;	/* 0x3C Control Idle Process */
	_u16 tx_intr;		/* 0x3E TX interrupt pending */
	_u16 rx_intr;		/* 0x40 RX interrupt pending */
	_u16 rup_intr;		/* 0x42 RUP interrupt pending */

} PARM_MAP;

/* Same thing again, but defined as offsets... */

#define	PM_phb_ptr		0x00	/* 0x00 Pointer to the PHB array */
#define	PM_phb_num_ptr		0x02	/* 0x02 Ptr to Number of PHB's */
#define	PM_free_list		0x04	/* 0x04 Free List pointer */
#define	PM_free_list_end	0x06	/* 0x06 Free List End pointer */
#define	PM_q_free_list_ptr	0x08	/* 0x08 Ptr to Q_BUF variable */
#define	PM_unit_id_ptr		0x0A	/* 0x0A Unit Id */
#define	PM_link_str_ptr		0x0C	/* 0x0C Link Structure Array */
#define	PM_bootloader_1		0x0E	/* 0x0E 1st Stage Boot Loader */
#define	PM_bootloader_2		0x10	/* 0x10 2nd Stage Boot Loader */
#define	PM_port_route_map_ptr	0x12	/* 0x12 Port Route Map */
#define	PM_route_ptr		0x14	/* 0x14 Route Map */
#define	PM_map_present		0x16	/* 0x16 Route Map present */
#define	PM_pkt_num		0x18	/* 0x18 Total number of packets */
#define	PM_q_num		0x1A	/* 0x1A Total number of Q packets */
#define	PM_buffers_per_port	0x1C	/* 0x1C Number of buffers per port */
#define	PM_heap_size		0x1E	/* 0x1E Initial size of heap */
#define	PM_heap_left		0x20	/* 0x20 Current Heap left */
#define	PM_error		0x22	/* 0x22 Error code */
#define	PM_tx_max		0x24	/* 0x24 Max number of tx pkts per phb */
#define	PM_rx_max		0x26	/* 0x26 Max number of rx pkts per phb */
#define	PM_rx_limit		0x28	/* 0x28 For high / low watermarks */
#define	PM_links		0x2A	/* 0x2A Links to use */
#define	PM_timer		0x2C	/* 0x2C Interrupts per second */
#define	PM_rups			0x2E	/* 0x2E Pointer to the RUPs */
#define	PM_max_phb		0x30	/* 0x30 Mostly for debugging */
#define	PM_living		0x32	/* 0x32 Just increments!! */
#define	PM_init_done		0x34	/* 0x34 Initialisation over */
#define	PM_booting_link		0x36	/* 0x36 */
#define	PM_idle_count		0x38	/* 0x38 Idle time counter */
#define	PM_busy_count		0x3A	/* 0x3A Busy counter */
#define	PM_idle_control		0x3C	/* 0x3C Control Idle Process */
#define	PM_tx_intr		0x3E	/* 0x4E TX interrupt pending */
#define	PM_rx_intr		0x40	/* 0x40 RX interrupt pending */
#define	PM_rup_intr		0x42	/* 0x42 RUP interrupt pending */
#define	sizeof_PARM_MAP		0x44	/* structure size = 0x44 */

/* PARM_MAP.error definitions... */
#define	E_NO_ERROR		0x00
#define	E_PROCESS_NOT_INIT	0x01
#define	E_LINK_TIMEOUT		0x02
#define	E_NO_ROUTE		0x03
#define	E_CONFUSED		0x04
#define	E_HOME			0x05
#define	E_CSUM_FAIL		0x06
#define	E_DISCONNECTED		0x07
#define	E_BAD_RUP		0x08
#define	E_NO_VIRGIN		0x09
#define	E_BOOT_RUP_BUSY		0x10
#define	E_CHANALLOC		0x80
#define	E_POLL_ALLOC		0x81
#define	E_LTTWAKE		0x82
#define	E_LTT_ALLOC		0x83
#define	E_LRT_ALLOC		0x84
#define	E_CIRRUS		0x85
#define	E_MONITOR		0x86
#define	E_PHB_ALLOC		0x87
#define	E_ARRAY_ALLOC		0x88
#define	E_QBUF_ALLOC		0x89
#define	E_PKT_ALLOC		0x8a
#define	E_GET_TX_Q_BUF		0x8b
#define	E_GET_RX_Q_BUF		0x8c
#define	E_MEM_OUT		0x8d
#define	E_MMU_INIT		0x8e
#define	E_LTT_INIT		0x8f
#define	E_LRT_INIT		0x90
#define	E_LINK_RUN		0x91
#define	E_MONITOR_ALLOC		0x92
#define	E_MONITOR_INIT		0x93
#define	E_POLL_INIT		0x94

/* PARM_MAP.links definitions... */
#define	RIO_LINK_ENABLE	0x80FF

/*****************************************************************************
**********************************         ***********************************
**********************************   RUP   ***********************************
**********************************         ***********************************
*****************************************************************************/

/* The RUP (Remote Unit Port) structure relates to the Remote Terminal Adapters
   attached to the system and there is normally an array of MAX_RUPS (=16) structures
   in a host card, defined by PARM_MAP->rup. */

typedef struct _RUP {
	_u16 txpkt;		/* 0x00 Outgoing packet */
	_u16 rxpkt;		/* 0x02 ncoming packet */
	_u16 link;		/* 0x04 Which link to send packet down ? */
	_u8 rup_dest_unit[2];	/* 0x06 Destination Unit */
	_u16 handshake;		/* 0x08 Handshaking */
	_u16 timeout;		/* 0x0A Timeout */
	_u16 status;		/* 0x0C Status */
	_u16 txcontrol;		/* 0x0E Transmit control */
	_u16 rxcontrol;		/* 0x10 Receive control */

} RUP;

/* Same thing again, but defined as offsets... */

#define	RUP_txpkt		0x00	/* 0x00 Outgoing packet */
#define	RUP_rxpkt		0x02	/* 0x02 Incoming packet */
#define	RUP_link		0x04	/* 0x04 Which link to send packet down ? */
#define	RUP_rup_dest_unit	0x06	/* 0x06 Destination Unit */
#define	RUP_handshake		0x08	/* 0x08 Handshaking */
#define	RUP_timeout		0x0A	/* 0x0A Timeout */
#define	RUP_status		0x0C	/* 0x0C Status */
#define	RUP_txcontrol		0x0E	/* 0x0E Transmit control */
#define	RUP_rxcontrol		0x10	/* 0x10 Receive control */
#define	sizeof_RUP		0x12	/* structure size = 0x12 */

#define MAX_RUP			16

/* RUP.txcontrol definitions... */
#define	TX_RUP_INACTIVE		0	/* Nothing to transmit */
#define	TX_PACKET_READY		1	/* Transmit packet ready */
#define	TX_LOCK_RUP		2	/* Transmit side locked */

/* RUP.txcontrol definitions... */
#define	RX_RUP_INACTIVE		0	/* Nothing received */
#define	RX_PACKET_READY		1	/* Packet received */

#define	RUP_NO_OWNER		0xFF	/* RUP not owned by any process */

/*****************************************************************************
**********************************         ***********************************
**********************************   PHB   ***********************************
**********************************         ***********************************
*****************************************************************************/

/* The PHB (Port Header Block) structure relates to the serial ports attached
   to the system and there is normally an array of MAX_PHBS (=128) structures
   in a host card, defined by PARM_MAP->phb_ptr and PARM_MAP->phb_num_ptr. */

typedef struct _PHB {
	_u16 source;		/* 0x00 Location of the PHB in the host card */
	_u16 handshake;		/* 0x02 Used to manage receive packet flow control */
	_u16 status;		/* 0x04 Internal port transmit/receive status */
	_u16 timeout;		/* 0x06 Time period to wait for an ACK */
	_u16 link;		/* 0x08 The host link associated with the PHB */
	_u16 destination;	/* 0x0A Location of the remote port on the network */

	_u16 tx_start;		/* 0x0C first entry in the packet array for transmit packets */
	_u16 tx_end;		/* 0x0E last entry in the packet array for transmit packets */
	_u16 tx_add;		/* 0x10 position in the packet array for new transmit packets */
	_u16 tx_remove;		/* 0x12 current position in the packet pointer array */

	_u16 rx_start;		/* 0x14 first entry in the packet array for receive packets */
	_u16 rx_end;		/* 0x16 last entry in the packet array for receive packets */
	_u16 rx_add;		/* 0x18 position in the packet array for new receive packets */
	_u16 rx_remove;		/* 0x1A current position in the packet pointer array */

} PHB;

/* Same thing again, but defined as offsets... */

#define	PHB_source		0x00	/* 0x00 Location of the PHB in the host card */
#define	PHB_handshake		0x02	/* 0x02 Used to manage receive packet flow control */
#define	PHB_status		0x04	/* 0x04 Internal port transmit/receive status */
#define	PHB_timeout		0x06	/* 0x06 Time period to wait for an ACK */
#define	PHB_link		0x08	/* 0x08 The host link associated with the PHB */
#define	PHB_destination		0x0A	/* 0x0A Location of the remote port on the network */
#define	PHB_tx_start		0x0C	/* 0x0C first entry in the packet array for transmit packets */
#define	PHB_tx_end		0x0E	/* 0x0E last entry in the packet array for transmit packets */
#define	PHB_tx_add		0x10	/* 0x10 position in the packet array for new transmit packets */
#define	PHB_tx_remove		0x12	/* 0x12 current position in the packet pointer array */
#define	PHB_rx_start		0x14	/* 0x14 first entry in the packet array for receive packets */
#define	PHB_rx_end		0x16	/* 0x16 last entry in the packet array for receive packets */
#define	PHB_rx_add		0x18	/* 0x18 position in the packet array for new receive packets */
#define	PHB_rx_remove		0x1A	/* 0x1A current position in the packet pointer array */
#define	sizeof_PHB		0x1C	/* structure size = 0x1C */

/* PHB.handshake definitions... */
#define	PHB_HANDSHAKE_SET	0x0001	/* Set by LRT */
#define	PHB_HANDSHAKE_RESET	0x0002	/* Set by ISR / driver */
#define	PHB_HANDSHAKE_FLAGS	(PHB_HANDSHAKE_RESET|PHB_HANDSHAKE_SET)
						/* Reset by ltt */

#define	MAX_PHB			128	/* range 0-127 */

/*****************************************************************************
**********************************         ***********************************
**********************************   LPB   ***********************************
**********************************         ***********************************
*****************************************************************************/

/* The LPB (Link Parameter Block) structure relates to a RIO Network Link
   and there is normally an array of MAX_LINKS (=4) structures in a host card,
   defined by PARM_MAP->link_str_ptr. */

typedef struct _LPB {
	_u16 link_number;	/* 0x00 Link Number */
	_u16 in_ch;		/* 0x02 Link In Channel */
	_u16 out_ch;		/* 0x04 Link Out Channel */
	_u8 attached_serial[4];	/* 0x06 Attached serial number */
	_u8 attached_host_serial[4];	/* 0x0A Serial number of Host who booted other end */
	_u16 descheduled;	/* 0x0E Currently Descheduled */
	_u16 state;		/* 0x10 Current state */
	_u16 send_poll;		/* 0x12 Send a Poll Packet */
	_u16 ltt_p;		/* 0x14 Process Descriptor */
	_u16 lrt_p;		/* 0x16 Process Descriptor */
	_u16 lrt_status;	/* 0x18 Current lrt status */
	_u16 ltt_status;	/* 0x1A Current ltt status */
	_u16 timeout;		/* 0x1C Timeout value */
	_u16 topology;		/* 0x1E Topology bits */
	_u16 mon_ltt;		/* 0x20 */
	_u16 mon_lrt;		/* 0x22 */
	_u16 num_pkts;		/* 0x24 */
	_u16 add_packet_list;	/* 0x26 Add packets to here */
	_u16 remove_packet_list;	/* 0x28 Send packets from here */

	_u16 lrt_fail_chan;	/* 0x2A Lrt's failure channel */
	_u16 ltt_fail_chan;	/* 0x2C Ltt's failure channel */

	RUP rup;		/* 0x2E RUP structure for HOST to driver comms */
	RUP link_rup;		/* 0x40 RUP for the link (POLL, topology etc.) */
	_u16 attached_link;	/* 0x52 Number of attached link */
	_u16 csum_errors;	/* 0x54 csum errors */
	_u16 num_disconnects;	/* 0x56 number of disconnects */
	_u16 num_sync_rcvd;	/* 0x58 # sync's received */
	_u16 num_sync_rqst;	/* 0x5A # sync requests */
	_u16 num_tx;		/* 0x5C Num pkts sent */
	_u16 num_rx;		/* 0x5E Num pkts received */
	_u16 module_attached;	/* 0x60 Module tpyes of attached */
	_u16 led_timeout;	/* 0x62 LED timeout */
	_u16 first_port;	/* 0x64 First port to service */
	_u16 last_port;		/* 0x66 Last port to service */

} LPB;

/* Same thing again, but defined as offsets... */

#define	LPB_link_number		0x00	/* 0x00 Link Number */
#define	LPB_in_ch		0x02	/* 0x02 Link In Channel */
#define	LPB_out_ch		0x04	/* 0x04 Link Out Channel */
#define	LPB_attached_serial	0x06	/* 0x06 Attached serial number */
#define	LPB_attached_host_serial 0x0A	/* 0x0A Serial number of Host who booted other end */
#define	LPB_descheduled		0x0E	/* 0x0E Currently Descheduled */
#define	LPB_state		0x10	/* 0x10 Current state */
#define	LPB_send_poll		0x12	/* 0x12 Send a Poll Packet */
#define	LPB_ltt_p		0x14	/* 0x14 Process Descriptor */
#define	LPB_lrt_p		0x16	/* 0x16 Process Descriptor */
#define	LPB_lrt_status		0x18	/* 0x18 Current lrt status */
#define	LPB_ltt_status		0x1A	/* 0x1A Current ltt status */
#define	LPB_timeout		0x1C	/* 0x1C Timeout value */
#define	LPB_topology		0x1E	/* 0x1E Topology bits */
#define	LPB_mon_ltt		0x20	/* 0x20 */
#define	LPB_mon_lrt		0x22	/* 0x22 */
#define	LPB_num_pkts		0x24	/* 0x24 */
#define	LPB_add_packet_list	0x26	/* 0x26 Add packets to here */
#define	LPB_remove_packet_list	0x28	/* 0x28 Send packets from here */
#define	LPB_lrt_fail_chan	0x2A	/* 0x2A Lrt's failure channel */
#define	LPB_ltt_fail_chan	0x2C	/* 0x2C Ltt's failure channel */
#define	LPB_rup			0x2E	/* 0x2E RUP structure for HOST to driver comms */
#define	LPB_link_rup		0x40	/* 0x40 RUP for the link (POLL, topology etc.) */
#define	LPB_attached_link	0x52	/* 0x52 Number of attached link */
#define	LPB_csum_errors		0x54	/* 0x54 csum errors */
#define	LPB_num_disconnects	0x56	/* 0x56 number of disconnects */
#define	LPB_num_sync_rcvd	0x58	/* 0x58 # sync's received */
#define	LPB_num_sync_rqst	0x5A	/* 0x5A # sync requests */
#define	LPB_num_tx		0x5C	/* 0x5C Num pkts sent */
#define	LPB_num_rx		0x5E	/* 0x5E Num pkts received */
#define	LPB_module_attached	0x60	/* 0x60 Module tpyes of attached */
#define	LPB_led_timeout		0x62	/* 0x62 LED timeout */
#define	LPB_first_port		0x64	/* 0x64 First port to service */
#define	LPB_last_port		0x66	/* 0x66 Last port to service */
#define	sizeof_LPB		0x68	/* structure size = 0x68 */

#define	LINKS_PER_UNIT		4	/* number of links from a host */

/*****************************************************************************
********************************               *******************************
********************************   FREE_LIST   *******************************
********************************               *******************************
*****************************************************************************/

/* Used to overlay packet headers when allocating/freeing packets from the free list */

typedef struct _FREE_LIST {
	_u16 next;		/* 0x00 offset of next list item */
	_u16 prev;		/* 0x02 offset of previous list item */

} FREE_LIST;

/* Same thing again, but defined as offsets... */

#define	FL_next			0x00	/* 0x00 offset of next list item */
#define	FL_prev			0x02	/* 0x02 offset of previous list item */

/*****************************************************************************
**********************************         ***********************************
**********************************   PKT   ***********************************
**********************************         ***********************************
*****************************************************************************/

/* The PKT is the main unit of communication between Host Cards and RTAs across
   the RIO network.  */

#define PKT_MAX_DATA_LEN   72	/* Size of packet data */

typedef struct _PKT {
	_u8 dest_unit;		/* 0x00 Destination Unit Id */
	_u8 dest_port;		/* 0x01 Destination Port */
	_u8 src_unit;		/* 0x02 Source Unit Id */
	_u8 src_port;		/* 0x03 Source Port */
	_u8 len;		/* 0x04 Length (in bytes) of data field */
	_u8 control;		/* 0x05 */
	_u8 data[PKT_MAX_DATA_LEN];	/* 0x06 Actual data */
	_u16 csum;		/* 0x4E C-SUM */

} PKT;

/* Same thing again, but defined as offsets... */

#define	PKT_dest_unit		0x00	/* 0x00 Destination Unit Id */
#define	PKT_dest_port		0x01	/* 0x01 Destination Port */
#define	PKT_src_unit		0x02	/* 0x02 Source Unit Id */
#define	PKT_src_port		0x03	/* 0x03 Source Port */
#define	PKT_len			0x04	/* 0x04 Length (in bytes) of data field */
#define	PKT_control		0x05	/* 0x05 */
#define	PKT_data		0x06	/* 0x06 Actual data */
#define	PKT_csum		0x4E	/* 0x4E C-SUM */
#define	sizeof_PKT		0x50	/* structure size = 0x50 */

/* PKT.len definitions... */
#define	PKT_CMD_BIT		0x80
#define	PKT_CMD_DATA		0x80
#define	PKT_LEN_MASK		0x7F

/* PKT.control definitions... */
#define	PKT_ACK			0x40
#define	PKT_TGL			0x20
#define	DATA_WNDW		0x10
#define	PKT_TTL_MASK		0x0F
#define	MAX_TTL			0x0F

/*****************************************************************************
*****************************                     ****************************
*****************************   Control Packets   ****************************
*****************************                     ****************************
*****************************************************************************/

/* The following definitions and structures define the control packets sent
   between the driver and RIO Ports, RTAs and Host Cards. */

#define	PRE_EMPTIVE		0x80	/* Pre-emptive command (sent via port's RUP) */

/* "in-band" and "pre-emptive" port commands... */
#define	OPEN			0x00	/* Driver->RIO Open a port */
#define	CONFIG			0x01	/* Driver->RIO Configure a port */
#define	MOPEN			0x02	/* Driver->RIO Modem open (wait for DCD) */
#define	CLOSE			0x03	/* Driver->RIO Close a port */
#define	WFLUSH			(0x04|PRE_EMPTIVE)	/* Driver->RIO Write flush */
#define	RFLUSH			(0x05|PRE_EMPTIVE)	/* Driver->RIO Read flush */
#define	RESUME			(0x06|PRE_EMPTIVE)	/* Driver->RIO Behave as if XON received */
#define	SBREAK			0x07	/* Driver->RIO Start break */
#define	EBREAK			0x08	/* Driver->RIO End break */
#define	SUSPEND			(0x09|PRE_EMPTIVE)	/* Driver->RIO Behave as if XOFF received */
#define	FCLOSE			(0x0A|PRE_EMPTIVE)	/* Driver->RIO Force close */
#define	XPRINT			0x0B	/* Driver->RIO Xprint packet */
#define	MBIS			(0x0C|PRE_EMPTIVE)	/* Driver->RIO Set modem lines */
#define	MBIC			(0x0D|PRE_EMPTIVE)	/* Driver->RIO Clear modem lines */
#define	MSET			(0x0E|PRE_EMPTIVE)	/* Driver->RIO Set modem lines */
#define	PCLOSE			0x0F	/* Driver->RIO Pseudo close */
#define	MGET			(0x10|PRE_EMPTIVE)	/* Driver->RIO Force update of modem status */
#define	MEMDUMP			(0x11|PRE_EMPTIVE)	/* Driver->RIO DEBUG request for RTA memory */
#define	READ_REGISTER		(0x12|PRE_EMPTIVE)	/* Driver->RIO DEBUG read CD1400 register */

/* Remote Unit Port (RUP) packet definitions... (specified in PKT.dest_unit and PKT.src_unit) */
#define	SYNC_RUP		0xFF	/* Download internal */
#define	COMMAND_RUP		0xFE	/* Command ack/status */
#define	ERROR_RUP		0xFD	/* Download internal */
#define	POLL_RUP		0xFC	/* Download internal */
#define	BOOT_RUP		0xFB	/* Used to boot RTAs */
#define	ROUTE_RUP		0xFA	/* Used to specify routing/topology */
#define	STATUS_RUP		0xF9	/* Not used */
#define	POWER_RUP		0xF8	/* Download internal */

/* COMMAND_RUP definitions... */
#define	COMPLETE		(0x20|PRE_EMPTIVE)	/* RIO->Driver Command complete */
#define	BREAK_RECEIVED		(0x21|PRE_EMPTIVE)	/* RIO->Driver Break received */
#define	MODEM_STATUS		(0x22|PRE_EMPTIVE)	/* RIO->Driver Modem status change */

/* BOOT_RUP definitions... */
#define	BOOT_REQUEST		0x00	/* RIO->Driver Request for boot */
#define	BOOT_ABORT		0x01	/* Driver->RIO Abort a boot */
#define	BOOT_SEQUENCE		0x02	/* Driver->RIO Packet with firmware details */
#define	BOOT_COMPLETED		0x03	/* RIO->Driver Boot completed */
#define IFOAD			0x2F	/* Driver->RIO Shutdown/Reboot RTA (Fall Over And Die) */
#define	IDENTIFY		0x30	/* Driver->RIO Identify RTA */
#define	ZOMBIE			0x31	/* Driver->RIO Shutdown/Flash LEDs */
#define	UFOAD			0x32	/* Driver->RIO Shutdown/Reboot neighbouring RTA */
#define IWAIT			0x33	/* Driver->RIO Pause booting process */

/* ROUTE_RUP definitions... */
#define	ROUTE_REQUEST		0x00	/* RIO->Driver Request an ID */
#define	ROUTE_FOAD		0x01	/* Driver->RIO Shutdown/reboot RTA */
#define	ROUTE_ALREADY		0x02	/* Driver->RIO Not used */
#define	ROUTE_USED		0x03	/* Driver->RIO Not used */
#define	ROUTE_ALLOCATE		0x04	/* Driver->RIO Allocate RTA RUP numbers */
#define	ROUTE_REQ_TOP		0x05	/* Driver->RIO Not used */
#define ROUTE_TOPOLOGY		0x06	/* RIO->Driver Route/Topology status */

/*****************************************************************************
**********************************          **********************************
**********************************   OPEN   **********************************
**********************************          **********************************
*****************************************************************************/

/* (Driver->RIO,in-band)

   Sent to open a port. 
   Structure of configuration info used with OPEN, CONFIG and MOPEN packets... */

#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_Cor1		(PKT_Data+1)	/* Channel Option Register 1 */
#define	PKT_Cor2		(PKT_Data+2)	/* Channel Option Register 2 */
#define	PKT_Cor4		(PKT_Data+3)	/* Channel Option Register 4 */
#define	PKT_Cor5		(PKT_Data+4)	/* Channel Option Register 5 */
#define	PKT_TxXon		(PKT_Data+5)	/* Transmit XON character */
#define	PKT_TxXoff		(PKT_Data+6)	/* Transmit XOFF character */
#define	PKT_RxXon		(PKT_Data+7)	/* Receive XON character */
#define	PKT_RxXoff		(PKT_Data+8)	/* Receive XOFF character */
#define	PKT_Lnext		(PKT_Data+9)	/* Lnext character */
#define	PKT_TxBaud		(PKT_Data+10)	/* Transmit baud rate */
#define	PKT_RxBaud		(PKT_Data+11)	/* Receive baud rate */

/* COR1 definitions... */
#define	COR1_PARITY		0xE0	/* Parity mask */
#define	COR1_NONE		0x00	/* No parity */
#define	COR1_SPACE		0x20	/* Space parity */
#define	COR1_EVEN		0x40	/* Even parity */
#define	COR1_MARK		0xA0	/* Mark parity */
#define	COR1_ODD		0xC0	/* Odd parity */

#define	COR1_STOPBITS		0x0C	/* Stop bits mask */
#define	COR1_STOP1		0x00	/* 1 stop bit */
#define	COR1_STOP1_5		0x04	/* 1.5 stop bits */
#define	COR1_STOP2		0x08	/* 2 stop bits */

#define	COR1_DATABITS		0x03	/* Data bits mask */
#define	COR1_DATA5		0x00	/* 5 data bits */
#define	COR1_DATA6		0x01	/* 6 data bits */
#define	COR1_DATA7		0x02	/* 7 data bits */
#define	COR1_DATA8		0x03	/* 8 data bits */

/* COR2 definitions... */
#define	COR2_XON_TXFLOW		0x40	/* XON/XOFF Transmit Flow */
#define	COR2_XANY_TXFLOW	0xC0	/* XON/XANY Transmit Flow */
#define	COR2_HUPCL		0x20	/* Hang Up On Close */
#define	COR2_DSR_TXFLOW		0x08	/* DSR Transmit Flow Control */
#define	COR2_RTS_RXFLOW		0x04	/* RTS Receive Flow Control */
#define	COR2_CTS_TXFLOW		0x02	/* CTS Transmit Flow Control */
#define	COR2_XON_RXFLOW		0x01	/* XON/XOFF Receive Flow */

/* COR4 definition... */
#define	COR4_IGNCR		0x80	/* Discard received CR */
#define	COR4_ICRNL		0x40	/* Map received CR -> NL */
#define	COR4_INLCR		0x20	/* Map received NL -> CR */
#define	COR4_IGNBRK		0x10	/* Ignore Received Break */
#define	COR4_NBRKINT		0x08	/* No interrupt on rx Break */
#define	COR4_IGNPAR		0x04	/* ignore rx parity error chars */
#define	COR4_PARMRK		0x02	/* Mark rx parity error chars */
#define	COR4_RAISEMOD		0x01	/* Raise modem lines on !0 baud */

/* COR5 definitions... */
#define	COR5_ISTRIP		0x80	/* Strip input chars to 7 bits */
#define	COR5_LNE		0x40	/* Enable LNEXT processing */
#define	COR5_CMOE		0x20	/* Match good & error characters */
#define	COR5_TAB3		0x10	/* TAB3 mode */
#define	COR5_TSTATE_ON		0x08	/* Enable tbusy/tstop monitoring */
#define	COR5_TSTATE_OFF		0x04	/* Disable tbusy/tstop monitoring */
#define	COR5_ONLCR		0x02	/* NL -> CR NL on output */
#define	COR5_OCRNL		0x01	/* CR -> NL on output */

/* RxBaud and TxBaud definitions... */
#define	RIO_B0			0x00	/* RTS / DTR signals dropped */
#define	RIO_B50			0x01	/* 50 baud */
#define	RIO_B75			0x02	/* 75 baud */
#define	RIO_B110		0x03	/* 110 baud */
#define	RIO_B134		0x04	/* 134.5 baud */
#define	RIO_B150		0x05	/* 150 baud */
#define	RIO_B200		0x06	/* 200 baud */
#define	RIO_B300		0x07	/* 300 baud */
#define	RIO_B600		0x08	/* 600 baud */
#define	RIO_B1200		0x09	/* 1200 baud */
#define	RIO_B1800		0x0A	/* 1800 baud */
#define	RIO_B2400		0x0B	/* 2400 baud */
#define	RIO_B4800		0x0C	/* 4800 baud */
#define	RIO_B9600		0x0D	/* 9600 baud */
#define	RIO_B19200		0x0E	/* 19200 baud */
#define	RIO_B38400		0x0F	/* 38400 baud */
#define	RIO_B56000		0x10	/* 56000 baud */
#define	RIO_B57600		0x11	/* 57600 baud */
#define	RIO_B64000		0x12	/* 64000 baud */
#define	RIO_B115200		0x13	/* 115200 baud */
#define	RIO_B2000		0x14	/* 2000 baud */

/*****************************************************************************
*********************************            *********************************
*********************************   CONFIG   *********************************
*********************************            *********************************
*****************************************************************************/

/* (Driver->RIO,in-band)

   CONFIG is sent from the driver to configure an already opened port.
   Packet structure is same as OPEN.  */

/*****************************************************************************
*********************************           **********************************
*********************************   MOPEN   **********************************
*********************************           **********************************
*****************************************************************************/

/* (Driver->RIO,in-band)

   MOPEN is sent from the driver to open a port attached to a modem. (in-band)
   Packet structure is same as OPEN.  */

/*****************************************************************************
*********************************           **********************************
*********************************   CLOSE   **********************************
*********************************           **********************************
*****************************************************************************/

/* (Driver->RIO,in-band)

   CLOSE is sent from the driver to close a previously opened port.
   No parameters.
 */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
/*****************************************************************************
*********************************            *********************************
*********************************   WFLUSH   *********************************
*********************************            *********************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   WFLUSH is sent pre-emptively from the driver to flush the write buffers and
   packets of a port.  (pre-emptive)
   
   WFLUSH is also sent in-band from the driver to a port as a marker to end
   write flushing previously started by a pre-emptive WFLUSH packet. (in-band)
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */

/*****************************************************************************
*********************************            *********************************
*********************************   RFLUSH   *********************************
*********************************            *********************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   RFLUSH is sent pre-emptively from the driver to flush the read buffers and
   packets of a port.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#endif

/*****************************************************************************
*********************************            *********************************
*********************************   RESUME   *********************************
*********************************            *********************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   RESUME is sent pre-emptively from the driver to cause a port to resume 
   transmission of data if blocked by XOFF.  (as if XON had been received)
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#endif

/*****************************************************************************
*********************************            *********************************
*********************************   SBREAK   *********************************
*********************************            *********************************
*****************************************************************************/

/* (Driver->RIO,in-band)

   SBREAK is sent in-band from the driver to a port to suspend data and start
   break signal transmission.

   If the break delay is 0, the break signal will be acknowledged with a
   RUP_COMMAND, COMPLETE packet and continue until an EBREAK packet is received.

   Otherwise, there is no acknowledgement and the break signal will last for the
   specified number of mS.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_BreakDelay		(PKT_Data+1)	/* Break delay in mS */

/*****************************************************************************
*********************************            *********************************
*********************************   EBREAK   *********************************
*********************************            *********************************
*****************************************************************************/

/* (Driver->RIO,in-band)

   EBREAK is sent in-band from the driver to a port to stop transmission of a
   break signal.

   No parameters.  */

/*****************************************************************************
*********************************             ********************************
*********************************   SUSPEND   ********************************
*********************************             ********************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   SUSPEND is sent pre-emptively from the driver to cause a port to suspend
   transmission of data.  (as if XOFF had been received)
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#endif

/*****************************************************************************
*********************************            *********************************
*********************************   FCLOSE   *********************************
*********************************            *********************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   FCLOSE is sent pre-emptively from the driver to force close a port.
   A force close flushes receive and transmit queues, and also lowers all output
   modem signals if the COR5_HUPCL (Hang Up On Close) flag is set.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#endif

/*****************************************************************************
*********************************            *********************************
*********************************   XPRINT   *********************************
*********************************            *********************************
*****************************************************************************/

/* (Driver->RIO,in-band)

   XPRINT is sent as a normal I/O data packet except that the PKT_CMD_BIT of
   the "len" field is set, and the first "data" byte is XPRINT.

   The I/O data in the XPRINT packet will contain the following:
   -	Transparent Print Start Sequence
   -	Transparent Print Data
   -	Transparent Print Stop Sequence.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#endif

/*****************************************************************************
**********************************          **********************************
**********************************   MBIS   **********************************
**********************************          **********************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   MBIS is sent pre-emptively from the driver to set a port's modem signals.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#endif
#define	PKT_ModemSet		(PKT_Data+4)	/* Modem set signals mask */

/* ModemSet definitions... */
#define	MBIS_RTS		0x01	/* RTS modem signal */
#define	MBIS_DTR		0x02	/* DTR modem signal */

/*****************************************************************************
**********************************          **********************************
**********************************   MBIC   **********************************
**********************************          **********************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   MBIC is sent pre-emptively from the driver to clear a port's modem signals.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#endif

#define	PKT_ModemClear		(PKT_Data+4)	/* Modem clear signals mask */

/* ModemClear definitions... */
#define	MBIC_RTS		0x01	/* RTS modem signal */
#define	MBIC_DTR		0x02	/* DTR modem signal */

/*****************************************************************************
**********************************          **********************************
**********************************   MSET   **********************************
**********************************          **********************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   MSET is sent pre-emptively from the driver to set/clear a port's modem signals. */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#endif

#define	PKT_ModemSet		(PKT_Data+4)	/* Modem set signals mask */

/* ModemSet definitions... */
#define	MSET_RTS		0x01	/* RTS modem signal */
#define	MSET_DTR		0x02	/* DTR modem signal */

/*****************************************************************************
*********************************            *********************************
*********************************   PCLOSE   *********************************
*********************************            *********************************
*****************************************************************************/

/* (Driver->RIO,in-band)

   PCLOSE is sent from the driver to pseudo close a previously opened port.
   
   The port will close when all data has been sent/received, however, the
   port's transmit / receive and modem signals will be left enabled and the
   port marked internally as Pseudo Closed. */

#define	PKT_Cmd			(PKT_Data+0)	/* Command code */

/*****************************************************************************
**********************************          **********************************
**********************************   MGET   **********************************
**********************************          **********************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   MGET is sent pre-emptively from the driver to request the port's current modem signals. */

#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */

/*****************************************************************************
*********************************             ********************************
*********************************   MEMDUMP   ********************************
*********************************             ********************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   MEMDUMP is sent pre-emptively from the driver to request a dump of 32 bytes
   of the specified port's RTA address space.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#define	PKT_SubCmd		(PKT_Data+5)	/* Sub Command */
#define	PKT_Address		(PKT_Data+6)	/* Requested address */

/*****************************************************************************
******************************                   *****************************
******************************   READ_REGISTER   *****************************
******************************                   *****************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   READ_REGISTER is sent pre-emptively from the driver to request the contents
   of the CD1400 register specified in address.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#define	PKT_SubCmd		(PKT_Data+5)	/* Sub Command */
#define	PKT_Address		(PKT_Data+6)	/* Requested address */

/*****************************************************************************
************************                            **************************
************************   COMMAND_RUP - COMPLETE   **************************
************************                            **************************
*****************************************************************************/

/* (RIO->Driver,pre-emptive)

   COMMAND_RUP - COMPLETE is sent in response to all port I/O control command
   packets, except MEMDUMP and READ_REGISTER.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#define	PKT_Cmd2		(PKT_Data+2)	/* Command code copy */
#define	PKT_ModemStatus		(PKT_Data+3)	/* Modem signal status */
#define	PKT_PortStatus		(PKT_Data+4)	/* Port signal status */
#define	PKT_SubCmd		(PKT_Data+5)	/* Sub Command */

/* ModemStatus definitions... */
#define	MODEM_DSR		0x80	/* Data Set Ready modem state */
#define	MODEM_CTS		0x40	/* Clear To Send modem state */
#define	MODEM_RI		0x20	/* Ring Indicate modem state */
#define	MODEM_CD		0x10	/* Carrier Detect modem state */
#define	MODEM_TSTOP		0x08	/* Transmit Stopped state */
#define	MODEM_TEMPTY		0x04	/* Transmit Empty state */
#define	MODEM_DTR		0x02	/* DTR modem output state */
#define	MODEM_RTS		0x01	/* RTS modem output state */

/* PortStatus definitions... */
#define	PORT_ISOPEN		0x01	/* Port open ? */
#define	PORT_HUPCL		0x02	/* Hangup on close? */
#define	PORT_MOPENPEND		0x04	/* Modem open pending */
#define	PORT_ISPARALLEL		0x08	/* Parallel port */
#define	PORT_BREAK		0x10	/* Port on break */
#define	PORT_STATUSPEND		0020	/* Status packet pending */
#define	PORT_BREAKPEND		0x40	/* Break packet pending */
#define	PORT_MODEMPEND		0x80	/* Modem status packet pending */

/*****************************************************************************
************************                            **************************
************************   COMMAND_RUP - COMPLETE   **************************
************************                            **************************
*****************************************************************************/

/* (RIO->Driver,pre-emptive)

   COMMAND_RUP - COMPLETE is sent in response to all port I/O control command
   packets, except MEMDUMP and READ_REGISTER.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#define	PKT_Cmd2		(PKT_Data+2)	/* Command code copy */
#endif
#define	PKT_ModemStatus		(PKT_Data+3)	/* Modem signal status */
#define	PKT_PortStatus		(PKT_Data+4)	/* Port signal status */
#if 0
#define	PKT_SubCmd		(PKT_Data+5)	/* Sub Command */
#endif

/* ModemStatus definitions... */
#define	MODEM_DSR		0x80	/* Data Set Ready modem state */
#define	MODEM_CTS		0x40	/* Clear To Send modem state */
#define	MODEM_RI		0x20	/* Ring Indicate modem state */
#define	MODEM_CD		0x10	/* Carrier Detect modem state */
#define	MODEM_TSTOP		0x08	/* Transmit Stopped state */
#define	MODEM_TEMPTY		0x04	/* Transmit Empty state */
#define	MODEM_DTR		0x02	/* DTR modem output state */
#define	MODEM_RTS		0x01	/* RTS modem output state */

/* PortStatus definitions... */
#define	PORT_ISOPEN		0x01	/* Port open ? */
#define	PORT_HUPCL		0x02	/* Hangup on close? */
#define	PORT_MOPENPEND		0x04	/* Modem open pending */
#define	PORT_ISPARALLEL		0x08	/* Parallel port */
#define	PORT_BREAK		0x10	/* Port on break */
#define	PORT_STATUSPEND		0020	/* Status packet pending */
#define	PORT_BREAKPEND		0x40	/* Break packet pending */
#define	PORT_MODEMPEND		0x80	/* Modem status packet pending */

/*****************************************************************************
********************                                      ********************
********************   COMMAND_RUP - COMPLETE - MEMDUMP   ********************
********************                                      ********************
*****************************************************************************/

/* (RIO->Driver,pre-emptive)

   COMMAND_RUP - COMPLETE - MEMDUMP is sent as an acknowledgement for a MEMDUMP
   port I/O control command packet.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#define	PKT_Cmd2		(PKT_Data+2)	/* Command code copy */
#define	PKT_ModemStatus		(PKT_Data+3)	/* Modem signal status */
#define	PKT_PortStatus		(PKT_Data+4)	/* Port signal status */
#define	PKT_SubCmd		(PKT_Data+5)	/* Sub Command */
#define	PKT_Address		(PKT_Data+6)	/* Requested address */
#endif
#define	PKT_Dump		(PKT_Data+8)	/* 32bytes of requested dump data */

/*****************************************************************************
*****************                                            *****************
*****************   COMMAND_RUP - COMPLETE - READ_REGISTER   *****************
*****************                                            *****************
*****************************************************************************/

/* (RIO->Driver,pre-emptive)

   COMMAND_RUP - COMPLETE - READ_REGISTER is sent as an acknowledgement for a
   READ_REGISTER port I/O control command packet.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/*Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/*Port number wrt RTA */
#define	PKT_Cmd2		(PKT_Data+2)	/* Command code copy */
#endif
#define	PKT_RegisterValue	(PKT_Data+3)	/* Modem signal status */
#if 0
#define	PKT_PortStatus		(PKT_Data+4)	/* Port signal status */
#define	PKT_SubCmd		(PKT_Data+5)	/* Sub Command */
#endif

/*****************************************************************************
*********************                                  ***********************
*********************   COMMAND_RUP - BREAK_RECEIVED   ***********************
*********************                                  ***********************
*****************************************************************************/

/* (RIO->Driver,pre-emptive)

   COMMAND_RUP - BREAK_RECEIVED packets are sent when the port detects a receive BREAK signal.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#define	PKT_Cmd2		(PKT_Data+2)	/* Command code copy */
#endif

/*****************************************************************************
*********************                                *************************
*********************   COMMAND_RUP - MODEM_STATUS   *************************
*********************                                *************************
*****************************************************************************/

/* (RIO->Driver,pre-emptive)

   COMMAND_RUP - MODEM_STATUS packets are sent whenever the port detects a
   change in the input modem signal states.

   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_PhbNum		(PKT_Data+1)	/* Port number wrt RTA */
#define	PKT_Cmd2		(PKT_Data+2)	/* Command code copy */
#define	PKT_ModemStatus		(PKT_Data+3)	/* Modem signal status */
#endif

/*****************************************************************************
************************                             *************************
************************   BOOT_RUP - BOOT_REQUEST   *************************
************************                             *************************
*****************************************************************************/

/* (RIO->Driver,pre-emptive)

   BOOT_RUP - BOOT_REQUEST packets are sent to the Driver from RIO to request
   firmware code to load onto attached RTAs.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif

/*****************************************************************************
************************                              ************************
************************   BOOT_RUP - BOOT_SEQUENCE   ************************
************************                              ************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   BOOT_RUP - BOOT_SEQUENCE packets are sent from the Driver to RIO in response
   to a BOOT_RUP - BOOT_REQUEST packet.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_NumPackets		(PKT_Data+2)	/* Packets required to load firmware */
#define	PKT_LoadBase		(PKT_Data+4)	/* RTA firmware load address */
#define	PKT_CodeSize		(PKT_Data+6)	/* Size of firmware in bytes */
#define	PKT_CmdString		(PKT_Data+8)	/* Command string */

/*****************************************************************************
************************                               ***********************
************************   BOOT_RUP - BOOT_COMPLETED   ***********************
************************                               ***********************
*****************************************************************************/

/* (RIO->Driver,pre-emptive)

   BOOT_RUP - BOOT_COMPLETE is sent to the Driver from RIO when downloading of
   RTA firmware has completed.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_LinkNumber		(PKT_Data+1)	/* Link number RTA booted on */
#define	PKT_SerialNumber	(PKT_Data+2)	/* 4 byte serial number */

/*****************************************************************************
************************                               ***********************
************************   BOOT_RUP - Packet Request   ***********************
************************                               ***********************
*****************************************************************************/

/* (RIO->Driver,pre-emptive)

   BOOT_RUP packet without the PKT_CMD_BIT set in the PKT->len field is sent
   from RIO to the Driver as a request for a firmware boot packet. */

#define	PKT_SequenceNumber	(PKT_Data+0)	/* Packet sequence number */

/*****************************************************************************
***********************                                ***********************
***********************   BOOT_RUP - Packet Response   ***********************
***********************                                ***********************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   In response to a BOOT_RUP boot packet request, the driver fills out the response
   packet with the 70 bytes of the requested sequence.
   */
#if 0
#define	PKT_SequenceNumber	(PKT_Data+0)	/* Packet sequence number */
#endif
#define	PKT_FirmwarePacket	(PKT_Data+2)	/* Firmware packet */

/*****************************************************************************
****************************                      ****************************
****************************   BOOT_RUP - IFOAD   ****************************
****************************                      ****************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   BOOT_RUP - IFOAD packets are sent from the Driver to an RTA to cause the
   RTA to shut down and reboot.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_IfoadId1		(PKT_Data+2)	/* IFOAD Id 1 */
#define	PKT_IfoadId2		(PKT_Data+3)	/* IFOAD Id 2 */

#define	IFOADID1		0xAD
#define	IFOADID2		0xF0

/*****************************************************************************
**************************                         ***************************
**************************   BOOT_RUP - IDENTIFY   ***************************
**************************                         ***************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   BOOT_RUP - IDENTIFY packets are sent from the Driver to an RTA to cause the
   RTA to flash its LEDs for a period of time.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_IdentifyId		(PKT_Data+2)	/* defines pattern to flash */

/*****************************************************************************
****************************                       ***************************
****************************   BOOT_RUP - ZOMBIE   ***************************
****************************                       ***************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   BOOT_RUP - ZOMBIE packets are sent from the Driver to an RTA to cause the
   RTA to shut down and flash it's LEDs.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_ZombieId1		(PKT_Data+2)	/* ZOMBIE Id 1 */
#define	PKT_ZombieId2		(PKT_Data+3)	/* ZOMBIE Id 2 */

#define	ZOMBIEID1		0x52
#define	ZOMBIEID2		0x21

/*****************************************************************************
****************************                      ****************************
****************************   BOOT_RUP - UFOAD   ****************************
****************************                      ****************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   BOOT_RUP - UFOAD packets are sent from the Driver to an RTA to cause the RTA
   to ask it's neighbouring RTA to shut down and reboot.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_LinkNumber		(PKT_Data+1)	/* Link number of RTA to UFOAD */
#endif
#define	PKT_UfoadId1		(PKT_Data+2)	/* UFOAD Id 1 */
#define	PKT_UfoadId2		(PKT_Data+3)	/* UFOAD Id 2 */

#define	UFOADID1		0x1E
#define	UFOADID2		0x0D

/*****************************************************************************
****************************                      ****************************
****************************   BOOT_RUP - IWAIT   ****************************
****************************                      ****************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   BOOT_RUP - IWAIT packets are sent from the Driver to an RTA to cause the RTA
   to pause booting on the specified link for 30 seconds.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#define	PKT_LinkNumber		(PKT_Data+1)	/* Link number of RTA to UFOAD */
#endif
#define	PKT_IwaitId1		(PKT_Data+2)	/* IWAIT Id 1 */
#define	PKT_IwaitId2		(PKT_Data+3)	/* IWAIT Id 2 */

#define	IWAITID1		0xDE
#define	IWAITID2		0xB1

/*****************************************************************************
************************                               ***********************
************************   ROUTE_RUP - ROUTE_REQUEST   ***********************
************************                               ***********************
*****************************************************************************/

/* (RIO->Driver,pre-emptive)

   ROUTE_RUP - ROUTE_REQUEST packets are sent from a newly booted or connected
   RTA to a Driver to request an ID (RUP or unit number).
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_SerialNumber	(PKT_Data+2)	/* 4 byte serial number */
#define	PKT_ModuleTypes		(PKT_Data+6)	/* RTA Module types */

/* ModuleTypes definitions... */
#define	MOD_BLANK		0x0F	/* Blank plate attached */
#define	MOD_RS232DB25		0x00	/* RS232 DB25 connector */
#define	MOD_RS232RJ45		0x01	/* RS232 RJ45 connector */
#define	MOD_RS422DB25		0x02	/* RS422 DB25 connector */
#define	MOD_RS485DB25		0x03	/* RS485 DB25 connector */
#define	MOD_PARALLEL		0x04	/* Centronics parallel */

#define	MOD2			0x08	/* Set to indicate Rev2 module */

/*****************************************************************************
*************************                            *************************
*************************   ROUTE_RUP - ROUTE_FOAD   *************************
*************************                            *************************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   ROUTE_RUP - ROUTE_FOAD packet is sent as a response to a ROUTE_RUP - ROUTE_REQUEST
   packet to cause the RTA to "Fall Over And Die"., i.e. shutdown and reboot.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_RouteCmdString	(PKT_Data+2)	/* Command string */

/*****************************************************************************
***********************                                ***********************
***********************   ROUTE_RUP - ROUTE_ALLOCATE   ***********************
***********************                                ***********************
*****************************************************************************/

/* (Driver->RIO,pre-emptive)

   ROUTE_RUP - ROUTE_ALLOCATE packet is sent as a response to a ROUTE_RUP - ROUTE_REQUEST
   packet to allocate the RTA's Id number (RUP number 1..16)
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_IdNum		(PKT_Data+1)	/* RUP number for ports 1..8 */
#if 0
#define	PKT_RouteCmdString	(PKT_Data+2)	/* Command string */
#endif
#define	PKT_IdNum2		(PKT_Data+0x17)	/* RUP number for ports 9..16 */

/*****************************************************************************
***********************                                ***********************
***********************   ROUTE_RUP - ROUTE_TOPOLOGY   ***********************
***********************                                ***********************
*****************************************************************************/

/* (RIO->Driver,pre-emptive)

   ROUTE_RUP - ROUTE_TOPOLOGY packet is sent to inform the driver of an RTA's
   current link status.
   */
#if 0
#define	PKT_Cmd			(PKT_Data+0)	/* Command code */
#endif
#define	PKT_Link1Rup		(PKT_Data+2)	/* Link 1 RUP number */
#define	PKT_Link1Link		(PKT_Data+3)	/* Link 1 link number */
#define	PKT_Link2Rup		(PKT_Data+4)	/* Link 2 RUP number */
#define	PKT_Link2Link		(PKT_Data+5)	/* Link 2 link number */
#define	PKT_Link3Rup		(PKT_Data+6)	/* Link 3 RUP number */
#define	PKT_Link3Link		(PKT_Data+7)	/* Link 3 link number */
#define	PKT_Link4Rup		(PKT_Data+8)	/* Link 4 RUP number */
#define	PKT_Link4Link		(PKT_Data+9)	/* Link 4 link number */
#define	PKT_RtaVpdProm		(PKT_Data+10)	/* 32 bytes of RTA VPD PROM Contents */

#endif				/* _sxwinif_h */

/* End of RIOWINIF.H */