#ifndef _telem_card_H
#define _telem_card_H
/******************************************************************************/
/* Copyright 1991 to 1995 MBARI                                               */
/******************************************************************************/
/* Summary  : Telemetry Board VME Bus interface hardware definitions          */
/* Filename : telem_card.h                                                    */
/* Author   : Andrew Pearce                                                   */
/* Project  : Tiburin ROV. Telemetry Board UART Driver for VxWorks            */
/* Version  : Version 1.0                                                     */
/* Created  : 04/03/95                                                        */
/* Modified : 04/03/95                                                        */
/* Archived :                                                                 */
/******************************************************************************/

#define PS_GOOD_UART 0                  /* PS Good signals are connected to   */
#define PS_GOOD_CHAN 6                  /* UART #1, channel 7 of 7, but 6 & 7 */
                                        /* are accessed together, so use 6    */

#define PSU1_GOOD_BIT   0x01            /* Bit mask for PS1_GOOD signal       */
#define PSU2_GOOD_BIT   0x02            /* Bit mask for PS2_GOOD signal       */
#define PSU3_GOOD_BIT   0x04            /* Bit mask for PS3_GOOD signal       */

#define SIO_PS1_GOOD_BIT 0x02           /* UART PSU Good Bits                 */
#define SIO_PS2_GOOD_BIT 0x08

#define SIO32_MAX_UARTS     1           /* Maximum number of uarts per card   */
#define SIO32_CHAN_PER_UART 8           /* Number of serial channels per UART */

                                        /* Number of serial channels per card */
#define PORTS_PER_SIO32  SIO32_MAX_UARTS * SIO32_CHAN_PER_UART

#define TELEM_BOARD_BASE   (Char *) 0xF0100000     /* Telemetry board base    */
#define TELEM_UART1        (TELEM_BOARD_BASE+0x01) /* Octal UART Address      */
#define SIO32_VECT_REG     (TELEM_BOARD_BASE+0xFF) /* Vector Register Address */

#define SIO32_REG_OFFSET  0x02          /* UART registers are every 2 bytes   */
#define SIO32_CHAN_OFFSET 0x10          /* Each channel occupies 0x10 bytes   */

                                        /* Return UART's absolute base address*/
#define SIO32_UART_ADDR(uart) \
    ((Char *) (TELEM_UART1 + uart * SIO32_CHAN_OFFSET * SIO32_CHAN_PER_UART))

                                        /* Return register's absolute address */
                                        /* given uart #, channel # and reg ID */
#define SIO32_REG(uart, chan, reg) ((__volatile__ Char *) \
    (SIO32_UART_ADDR(uart) + (chan * SIO32_CHAN_OFFSET + \
    (reg * SIO32_REG_OFFSET))))





#ifdef INCLUDE_PROTOTYPES

#ifdef __STDC__

STATUS sio32BoardProbe( Nat32 uart, MBool sio32Debug );
Void sio32InitInterrupts(Nat16 sio32IntVecBase, Nat16 sio32IntLevel);
Void sio32IntEnable(Nat16 sio32IntLevel);
Void sio32IntDisable(Nat16 sio32IntLevel);

#endif

#endif /* INCLUDE_PROTOTYPES */







#endif /* _telem_card_H */
