/************************************************/
/*                                              */
/* File        : tsbits.h                       */
/* Description : TS bits interpreter            */
/*                                              */
/* Author: Enrico Graziani                      */
/*                                              */
/* Created      : 29.05.1997                    */
/*                                              */
/************************************************/

#ifndef TSBITS_H
#define TSBITS_H

#include "bits.h"
/* #include "/kloe/soft/onl/Common/v1/src/bits.h" */
#include "tshard.h"


/*********************************************************************/
/*                       bit values                                  */
/*********************************************************************/

#define TSB_BIT_ON       0
#define TSB_BIT_OFF      1


/*********************************************************************/
/*                  Register bits                                    */
/*        if no mask specified, use 1                                */
/*        DO NOT USE DIRECTLY IF NOT REALLY NECESSARY                */
/*********************************************************************/

/* INTLEVEL Register */

#define TSB_INTLEVEL_INTLEVEL_SHIFT     0
#define TSB_INTLEVEL_INTLEVEL_NBITS     3
#define TSB_INTLEVEL_ROAK               3


/* STATUS Register */

#define TSB_SREG_TMOUTBUSY              0
#define TSB_SREG_SYNCFAILSTART          1
#define TSB_SREG_SYNCFAILEND            2
#define TSB_SREG_TBERR                  3
#define TSB_SREG_AUXTBERR               4
#define TSB_SREG_OVFWACTTIME            5
#define TSB_SREG_OVFWDEADTIME           6
#define TSB_SREG_ERRA                   7
#define TSB_SREG_ERRB                   8
#define TSB_SREG_ERRT1                  9
#define TSB_SREG_ERRT2                 10
#define TSB_SREG_ERRSYNCFAND           11
#define TSB_SREG_ERRSYNCFOR            12



/* Interrupt Mask Register */

#define TSB_INTMASK_TMOUTBUSY              0
#define TSB_INTMASK_SYNCFAILSTART          1
#define TSB_INTMASK_SYNCFAILEND            2
#define TSB_INTMASK_TBERR                  3
#define TSB_INTMASK_AUXTBERR               4
#define TSB_INTMASK_OVFWACTTIME            5
#define TSB_INTMASK_OVFWDEADTIME           6
#define TSB_INTMASK_ERRA                   7
#define TSB_INTMASK_ERRB                   8
#define TSB_INTMASK_ERRT1                  9
#define TSB_INTMASK_ERRT2                 10
#define TSB_INTMASK_ERRSYNCFAND           11
#define TSB_INTMASK_ERRSYNCFOR            12


/* Latch Mask Register */

#define TSB_LATMASK_TMOUTBUSY              0
#define TSB_LATMASK_SYNCFAILSTART          1
#define TSB_LATMASK_SYNCFAILEND            2
#define TSB_LATMASK_TBERR                  3
#define TSB_LATMASK_AUXTBERR               4
#define TSB_LATMASK_OVFWACTTIME            5
#define TSB_LATMASK_OVFWDEADTIME           6
#define TSB_LATMASK_ERRA                   7
#define TSB_LATMASK_ERRB                   8
#define TSB_LATMASK_ERRT1                  9
#define TSB_LATMASK_ERRT2                 10
#define TSB_LATMASK_ERRSYNCFAND           11
#define TSB_LATMASK_ERRSYNCFOR            12


/* Error Mask Register */

#define TSB_ERR_TMOUTBUSY              0
#define TSB_ERR_SYNCFAILSTART          1
#define TSB_ERR_SYNCFAILEND            2
#define TSB_ERR_TBERR                  3
#define TSB_ERR_AUXTBERR               4
#define TSB_ERR_OVFWACTTIME            5
#define TSB_ERR_OVFWDEADTIME           6
#define TSB_ERR_ERRA                   7
#define TSB_ERR_ERRB                   8
#define TSB_ERR_ERRT1                  9
#define TSB_ERR_ERRT2                 10
#define TSB_ERR_ERRSYNCFAND           11
#define TSB_ERR_ERRSYNCFOR            12


/*  Tmode Register   */

#define TSB_TMODE_MODE_SHIFT 3
#define TSB_TMODE_MODE_NBITS 2
#define TSB_TMODE_PRESC_SHIFT 0
#define TSB_TMODE_PRESC_NBITS 3



#ifndef BS

/*  SyncMask Register   */

#define TSB_SYNCMASK_MASK_SHIFT 0
#define TSB_SYNCMASK_MASK_NBITS 24
#define TSB_SYNCMASK_ENA        31

#endif

/*********************************************************************/
/**************                types               *******************/
/*********************************************************************/

/*********************************************************************/
/*                       internal page                               */
/*********************************************************************/


typedef struct
        {
	  unsigned char intlevel;   /* 0,1,2,3,4,5,6,7   */
	  unsigned char roak;       /* 0/1 */
        } TSB_INTLEVEL_bits;


typedef struct
        {
	  unsigned char tmoutbusy;       /* 0/1 */
	  unsigned char syncfailstart;   /* 0/1 */
	  unsigned char syncfailend;     /* 0/1 */
	  unsigned char tberr;           /* 0/1 */
	  unsigned char auxtberr;        /* 0/1 */
	  unsigned char ovfwacttime;     /* 0/1 */
	  unsigned char ovfwdeadtime;    /* 0/1 */
	  unsigned char erra;            /* 0/1 */
	  unsigned char errb;            /* 0/1 */
	  unsigned char errt1;           /* 0/1 */
	  unsigned char errt2;           /* 0/1 */
	  unsigned char errsyncfand;     /* 0/1 */
	  unsigned char errsyncfor;      /* 0/1 */
        } TSB_SREG_bits;

typedef struct
        {
	  unsigned char tmoutbusy;       /* 0/1 */
	  unsigned char syncfailstart;   /* 0/1 */
	  unsigned char syncfailend;     /* 0/1 */
	  unsigned char tberr;           /* 0/1 */
	  unsigned char auxtberr;        /* 0/1 */
	  unsigned char ovfwacttime;     /* 0/1 */
	  unsigned char ovfwdeadtime;    /* 0/1 */
	  unsigned char erra;            /* 0/1 */
	  unsigned char errb;            /* 0/1 */
	  unsigned char errt1;           /* 0/1 */
	  unsigned char errt2;           /* 0/1 */
	  unsigned char errsyncfand;     /* 0/1 */
	  unsigned char errsyncfor;      /* 0/1 */
        } TSB_INTMASK_bits;

typedef struct
        {
	  unsigned char tmoutbusy;       /* 0/1 */
	  unsigned char syncfailstart;   /* 0/1 */
	  unsigned char syncfailend;     /* 0/1 */
	  unsigned char tberr;           /* 0/1 */
	  unsigned char auxtberr;        /* 0/1 */
	  unsigned char ovfwacttime;     /* 0/1 */
	  unsigned char ovfwdeadtime;    /* 0/1 */
	  unsigned char erra;            /* 0/1 */
	  unsigned char errb;            /* 0/1 */
	  unsigned char errt1;           /* 0/1 */
	  unsigned char errt2;           /* 0/1 */
	  unsigned char errsyncfand;     /* 0/1 */
	  unsigned char errsyncfor;      /* 0/1 */
        } TSB_LATMASK_bits;


typedef struct
        {
	  unsigned char tmoutbusy;       /* 0/1 */
	  unsigned char syncfailstart;   /* 0/1 */
	  unsigned char syncfailend;     /* 0/1 */
	  unsigned char tberr;           /* 0/1 */
	  unsigned char auxtberr;        /* 0/1 */
	  unsigned char ovfwacttime;     /* 0/1 */
	  unsigned char ovfwdeadtime;    /* 0/1 */
	  unsigned char erra;            /* 0/1 */
	  unsigned char errb;            /* 0/1 */
	  unsigned char errt1;           /* 0/1 */
	  unsigned char errt2;           /* 0/1 */
	  unsigned char errsyncfand;     /* 0/1 */
	  unsigned char errsyncfor;      /* 0/1 */
        } TSB_ERRMASK_bits;


typedef struct
        {
	  unsigned char mode;        /* 0,1,2,3   */
	  unsigned char presc;       /* 0,1,2,3,4 */
        } TSB_TMODE_bits;


#ifndef BS

typedef struct
        {
	  unsigned int mask;        
	  unsigned char ena;       /* 0/1  */
        } TSB_SYNCMASK_bits;

#endif




/*********************************************************************/
/**************      conversion routines           *******************/
/*********************************************************************/

/* intlevel */

#define tsb_intleveltonr(/*TSB_INTLEVEL_bits*/ intlevel)   /* IN  */               \
      (bits_pos_bits(intlevel.intlevel,TSB_INTLEVEL_INTLEVEL_SHIFT,TSB_INTLEVEL_INTLEVEL_NBITS) |   \
      bits_pos_bit(intlevel.roak,TSB_INTLEVEL_ROAK)) 

#define tsb_nrtointlevel(/*unsigned char*/ nr,             /* IN  */  \
		       /*TSB_INTLEVEL_bits*/ intlevel)       /* OUT */  \
 {                                                           \
  intlevel.intlevel = bits_get_bits(nr,TSB_INTLEVEL_INTLEVEL_SHIFT,TSB_INTLEVEL_INTLEVEL_NBITS);    \
  intlevel.roak = bits_get_bit(nr,TSB_INTLEVEL_ROAK); \
 }


/* status */

#define tsb_sregtonr(/*TSB_SREG_bits*/ status)   /* IN  */               \
        (bits_pos_bit(status.tmoutbusy,TSB_SREG_TMOUTBUSY)           |   \
         bits_pos_bit(status.syncfailstart,TSB_SREG_SYNCFAILSTART)   |   \
         bits_pos_bit(status.syncfailend,TSB_SREG_SYNCFAILEND)       |   \
         bits_pos_bit(status.tberr,TSB_SREG_TBERR)                   |   \
         bits_pos_bit(status.auxtberr,TSB_SREG_AUXTBERR)             |   \
         bits_pos_bit(status.ovfwacttime,TSB_SREG_OVFWACTTIME)       |   \
         bits_pos_bit(status.ovfwdeadtime,TSB_SREG_OVFWDEADTIME)     |   \
         bits_pos_bit(status.erra,TSB_SREG_ERRA)                     |   \
         bits_pos_bit(status.errb,TSB_SREG_ERRB)                     |   \
         bits_pos_bit(status.errt1,TSB_SREG_ERRT1)                   |   \
         bits_pos_bit(status.errt2,TSB_SREG_ERRT2)                   |   \
         bits_pos_bit(status.errsyncfand,TSB_SREG_ERRSYNCFAND)       |   \
         bits_pos_bit(status.errsyncfor,TSB_SREG_ERRSYNCFOR)) 

#define tsb_nrtosreg(/*unsigned char*/ nr,             /* IN  */  \
		       /*TSB_SREG_bits*/ status)       /* OUT */  \
        {                                                           \
	  status.tmoutbusy = bits_get_bit(nr,TSB_SREG_TMOUTBUSY);         \
          status.syncfailstart = bits_get_bit(nr,TSB_SREG_SYNCFAILSTART); \
          status.syncfailend = bits_get_bit(nr,TSB_SREG_SYNCFAILEND);     \
          status.tberr = bits_get_bit(nr,TSB_SREG_TBERR);                 \
          status.auxtberr = bits_get_bit(nr,TSB_SREG_AUXTBERR);           \
          status.ovfwacttime = bits_get_bit(nr,TSB_SREG_OVFWACTTIME);     \
          status.ovfwdeadtime = bits_get_bit(nr,TSB_SREG_OVFWDEADTIME);   \
          status.erra = bits_get_bit(nr,TSB_SREG_ERRA);                   \
          status.errb = bits_get_bit(nr,TSB_SREG_ERRB);                   \
          status.errt1 = bits_get_bit(nr,TSB_SREG_ERRT1);                 \
          status.errt2 = bits_get_bit(nr,TSB_SREG_ERRT2);                 \
          status.errsyncfand = bits_get_bit(nr,TSB_SREG_ERRSYNCFAND);     \
          status.errsyncfor = bits_get_bit(nr,TSB_SREG_ERRSYNCFOR);       \
        }




/* interrupt mask */

#define tsb_intmasktonr(/*TSB_INTMASK_bits*/ intmask)   /* IN  */               \
         (bits_pos_bit(intmask.tmoutbusy,TSB_INTMASK_TMOUTBUSY)           |   \
         bits_pos_bit(intmask.syncfailstart,TSB_INTMASK_SYNCFAILSTART)   |   \
         bits_pos_bit(intmask.syncfailend,TSB_INTMASK_SYNCFAILEND)       |   \
         bits_pos_bit(intmask.tberr,TSB_INTMASK_TBERR)                   |   \
         bits_pos_bit(intmask.auxtberr,TSB_INTMASK_AUXTBERR)             |   \
         bits_pos_bit(intmask.ovfwacttime,TSB_INTMASK_OVFWACTTIME)       |   \
         bits_pos_bit(intmask.ovfwdeadtime,TSB_INTMASK_OVFWDEADTIME)     |   \
         bits_pos_bit(intmask.erra,TSB_INTMASK_ERRA)                     |   \
         bits_pos_bit(intmask.errb,TSB_INTMASK_ERRB)                     |   \
         bits_pos_bit(intmask.errt1,TSB_INTMASK_ERRT1)                   |   \
         bits_pos_bit(intmask.errt2,TSB_INTMASK_ERRT2)                   |   \
         bits_pos_bit(intmask.errsyncfand,TSB_INTMASK_ERRSYNCFAND)       |   \
         bits_pos_bit(intmask.errsyncfor,TSB_INTMASK_ERRSYNCFOR)) 

#define tsb_nrtointmask(/*unsigned char*/ nr,             /* IN  */  \
		       /*TSB_INTMASK_bits*/ intmask)       /* OUT */  \
        {                                                           \
	  intmask.tmoutbusy = bits_get_bit(nr,TSB_INTMASK_TMOUTBUSY);         \
          intmask.syncfailstart = bits_get_bit(nr,TSB_INTMASK_SYNCFAILSTART); \
          intmask.syncfailend = bits_get_bit(nr,TSB_INTMASK_SYNCFAILEND);     \
          intmask.tberr = bits_get_bit(nr,TSB_INTMASK_TBERR);                 \
          intmask.auxtberr = bits_get_bit(nr,TSB_INTMASK_AUXTBERR);           \
          intmask.ovfwacttime = bits_get_bit(nr,TSB_INTMASK_OVFWACTTIME);     \
          intmask.ovfwdeadtime = bits_get_bit(nr,TSB_INTMASK_OVFWDEADTIME);   \
          intmask.erra = bits_get_bit(nr,TSB_INTMASK_ERRA);                   \
          intmask.errb = bits_get_bit(nr,TSB_INTMASK_ERRB);                   \
          intmask.errt1 = bits_get_bit(nr,TSB_INTMASK_ERRT1);                 \
          intmask.errt2 = bits_get_bit(nr,TSB_INTMASK_ERRT2);                 \
          intmask.errsyncfand = bits_get_bit(nr,TSB_INTMASK_ERRSYNCFAND);     \
          intmask.errsyncfor = bits_get_bit(nr,TSB_INTMASK_ERRSYNCFOR);       \
        }


/* latch mask */

#define tsb_latmasktonr(/*TSB_LATMASK_bits*/ latmask)   /* IN  */               \
         (bits_pos_bit(latmask.tmoutbusy,TSB_LATMASK_TMOUTBUSY)           |   \
         bits_pos_bit(latmask.syncfailstart,TSB_LATMASK_SYNCFAILSTART)   |   \
         bits_pos_bit(latmask.syncfailend,TSB_LATMASK_SYNCFAILEND)       |   \
         bits_pos_bit(latmask.tberr,TSB_LATMASK_TBERR)                   |   \
         bits_pos_bit(latmask.auxtberr,TSB_LATMASK_AUXTBERR)             |   \
         bits_pos_bit(latmask.ovfwacttime,TSB_LATMASK_OVFWACTTIME)       |   \
         bits_pos_bit(latmask.ovfwdeadtime,TSB_LATMASK_OVFWDEADTIME)     |   \
         bits_pos_bit(latmask.erra,TSB_LATMASK_ERRA)                     |   \
         bits_pos_bit(latmask.errb,TSB_LATMASK_ERRB)                     |   \
         bits_pos_bit(latmask.errt1,TSB_LATMASK_ERRT1)                   |   \
         bits_pos_bit(latmask.errt2,TSB_LATMASK_ERRT2)                   |   \
         bits_pos_bit(latmask.errsyncfand,TSB_LATMASK_ERRSYNCFAND)       |   \
         bits_pos_bit(latmask.errsyncfor,TSB_LATMASK_ERRSYNCFOR)) 

#define tsb_nrtolatmask(/*unsigned char*/ nr,             /* IN  */  \
		       /*TSB_LATMASK_bits*/ latmask)       /* OUT */  \
        {                                                           \
	  latmask.tmoutbusy = bits_get_bit(nr,TSB_LATMASK_TMOUTBUSY);         \
          latmask.syncfailstart = bits_get_bit(nr,TSB_LATMASK_SYNCFAILSTART); \
          latmask.syncfailend = bits_get_bit(nr,TSB_LATMASK_SYNCFAILEND);     \
          latmask.tberr = bits_get_bit(nr,TSB_LATMASK_TBERR);                 \
          latmask.auxtberr = bits_get_bit(nr,TSB_LATMASK_AUXTBERR);           \
          latmask.ovfwacttime = bits_get_bit(nr,TSB_LATMASK_OVFWACTTIME);     \
          latmask.ovfwdeadtime = bits_get_bit(nr,TSB_LATMASK_OVFWDEADTIME);   \
          latmask.erra = bits_get_bit(nr,TSB_LATMASK_ERRA);                   \
          latmask.errb = bits_get_bit(nr,TSB_LATMASK_ERRB);                   \
          latmask.errt1 = bits_get_bit(nr,TSB_LATMASK_ERRT1);                 \
          latmask.errt2 = bits_get_bit(nr,TSB_LATMASK_ERRT2);                 \
          latmask.errsyncfand = bits_get_bit(nr,TSB_LATMASK_ERRSYNCFAND);     \
          latmask.errsyncfor = bits_get_bit(nr,TSB_LATMASK_ERRSYNCFOR);       \
        }


/* error mask */

#define tsb_errmasktonr(/*TSB_ERRMASK_bits*/ errmask)   /* IN  */               \
         (bits_pos_bit(errmask.tmoutbusy,TSB_ERR_TMOUTBUSY)           |   \
         bits_pos_bit(errmask.syncfailstart,TSB_ERR_SYNCFAILSTART)   |   \
         bits_pos_bit(errmask.syncfailend,TSB_ERR_SYNCFAILEND)       |   \
         bits_pos_bit(errmask.tberr,TSB_ERR_TBERR)                   |   \
         bits_pos_bit(errmask.auxtberr,TSB_ERR_AUXTBERR)             |   \
         bits_pos_bit(errmask.ovfwacttime,TSB_ERR_OVFWACTTIME)       |   \
         bits_pos_bit(errmask.ovfwdeadtime,TSB_ERR_OVFWDEADTIME)     |   \
         bits_pos_bit(errmask.erra,TSB_ERR_ERRA)                     |   \
         bits_pos_bit(errmask.errb,TSB_ERR_ERRB)                     |   \
         bits_pos_bit(errmask.errt1,TSB_ERR_ERRT1)                   |   \
         bits_pos_bit(errmask.errt2,TSB_ERR_ERRT2)                   |   \
         bits_pos_bit(errmask.errsyncfand,TSB_ERR_ERRSYNCFAND)       |   \
         bits_pos_bit(errmask.errsyncfor,TSB_ERR_ERRSYNCFOR)) 

#define tsb_nrtoerrmask(/*unsigned char*/ nr,             /* IN  */  \
		       /*TSB_LATMASK_bits*/ errmask)       /* OUT */  \
        {                                                           \
	  errmask.tmoutbusy = bits_get_bit(nr,TSB_ERR_TMOUTBUSY);         \
          errmask.syncfailstart = bits_get_bit(nr,TSB_ERR_SYNCFAILSTART); \
          errmask.syncfailend = bits_get_bit(nr,TSB_ERR_SYNCFAILEND);     \
          errmask.tberr = bits_get_bit(nr,TSB_ERR_TBERR);                 \
          errmask.auxtberr = bits_get_bit(nr,TSB_ERR_AUXTBERR);           \
          errmask.ovfwacttime = bits_get_bit(nr,TSB_ERR_OVFWACTTIME);     \
          errmask.ovfwdeadtime = bits_get_bit(nr,TSB_ERR_OVFWDEADTIME);   \
          errmask.erra = bits_get_bit(nr,TSB_ERR_ERRA);                   \
          errmask.errb = bits_get_bit(nr,TSB_ERR_ERRB);                   \
          errmask.errt1 = bits_get_bit(nr,TSB_ERR_ERRT1);                 \
          errmask.errt2 = bits_get_bit(nr,TSB_ERR_ERRT2);                 \
          errmask.errsyncfand = bits_get_bit(nr,TSB_ERR_ERRSYNCFAND);     \
          errmask.errsyncfor = bits_get_bit(nr,TSB_ERR_ERRSYNCFOR);       \
        }


/* tmode */

#define tsb_tmodetonr(/*TSB_TMODE_bits*/ tmode)   /* IN  */               \
      (bits_pos_bits(tmode.mode,TSB_TMODE_MODE_SHIFT,TSB_TMODE_MODE_NBITS) |   \
      bits_pos_bits(tmode.presc,TSB_TMODE_PRESC_SHIFT,TSB_TMODE_PRESC_NBITS)) 

#define tsb_nrtotmode(/*unsigned char*/ nr,             /* IN  */  \
		       /*TSB_TMODE_bits*/ tmode)       /* OUT */  \
 {                                                           \
  tmode.mode = bits_get_bits(nr,TSB_TMODE_MODE_SHIFT,TSB_TMODE_MODE_NBITS);    \
  tmode.presc = bits_get_bits(nr,TSB_TMODE_PRESC_SHIFT,TSB_TMODE_PRESC_NBITS); \
 }


/* syncmask   */

#ifndef BS

#define tsb_syncmasktonr(/*TSB_SYNCMASK_bits*/ syncmask)   /* IN  */               \
      (bits_pos_bits(syncmask.mask,TSB_SYNCMASK_MASK_SHIFT,TSB_SYNCMASK_MASK_NBITS) |   \
      bits_pos_bit(syncmask.ena,TSB_SYNCMASK_ENA)) 

#define tsb_nrtosyncmask(/*unsigned int*/ nr,             /* IN  */  \
		       /*TSB_SYNCMASK_bits*/ syncmask)       /* OUT */  \
 {                                                           \
  syncmask.mask = bits_get_bits(nr,TSB_SYNCMASK_MASK_SHIFT,TSB_SYNCMASK_MASK_NBITS);    \
  syncmask.ena = bits_get_bit(nr,TSB_SYNCMASK_ENA); \
 }

#endif


/* intlevel */

#define tsb_get_intlevel_intlevel(/*unsigned char */ nr) /* IN */  \
        bits_get_bits(nr,TSB_INTLEVEL_INTLEVEL_SHIFT,TSB_INTLEVEL_INTLEVEL_NBITS)

#define tsb_get_intlevel_roak(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTLEVEL_ROAK)



/* status */

#define tsb_get_sreg_tmoutbusy(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SREG_TMOUTBUSY)

#define tsb_get_sreg_syncfailstart(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SREG_SYNCFAILSTART)

#define tsb_get_sreg_syncfailend(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SREG_SYNCFAILEND)

#define tsb_get_sreg_tberr(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SREG_TBERR)

#define tsb_get_sreg_auxtberr(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SREG_AUXTBERR)

#define tsb_get_sreg_ovfwacttime(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SREG_OVFWACTTIME)

#define tsb_get_sreg_ovfwdeadtime(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SREG_OVFWDEADTIME)

#define tsb_get_sreg_erra(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SREG_ERRA)

#define tsb_get_sreg_errb(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SREG_ERRB)

#define tsb_get_sreg_errt1(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SREG_ERRT1)

#define tsb_get_sreg_errt2(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SREG_ERRT2)

#define tsb_get_sreg_errsyncfand(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SREG_ERRSYNCFAND)

#define tsb_get_sreg_errsyncfor(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SREG_ERRSYNCFOR)



/* interrupt mask */

#define tsb_get_intmask_tmoutbusy(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTMASK_TMOUTBUSY)

#define tsb_get_intmask_syncfailstart(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTMASK_SYNCFAILSTART)

#define tsb_get_intmask_syncfailend(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTMASK_SYNCFAILEND)

#define tsb_get_intmask_tberr(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTMASK_TBERR)

#define tsb_get_intmask_auxtberr(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTMASK_AUXTBERR)

#define tsb_get_intmask_ovfwacttime(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTMASK_OVFWACTTIME)

#define tsb_get_intmask_ovfwdeadtime(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTMASK_OVFWDEADTIME)

#define tsb_get_intmask_erra(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTMASK_ERRA)

#define tsb_get_intmask_errb(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTMASK_ERRB)

#define tsb_get_intmask_errt1(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTMASK_ERRT1)

#define tsb_get_intmask_errt2(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTMASK_ERRT2)

#define tsb_get_intmask_errsyncfand(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTMASK_ERRSYNCFAND)

#define tsb_get_intmask_errsyncfor(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_INTMASK_ERRSYNCFOR)



/* latch mask */

#define tsb_get_latmask_tmoutbusy(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_LATMASK_TMOUTBUSY)

#define tsb_get_latmask_syncfailstart(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_LATMASK_SYNCFAILSTART)

#define tsb_get_latmask_syncfailend(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_LATMASK_SYNCFAILEND)

#define tsb_get_latmask_tberr(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_LATMASK_TBERR)

#define tsb_get_latmask_auxtberr(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_LATMASK_AUXTBERR)

#define tsb_get_latmask_ovfwacttime(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_LATMASK_OVFWACTTIME)

#define tsb_get_latmask_ovfwdeadtime(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_LATMASK_OVFWDEADTIME)

#define tsb_get_latmask_erra(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_LATMASK_ERRA)

#define tsb_get_latmask_errb(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_LATMASK_ERRB)

#define tsb_get_latmask_errt1(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_LATMASK_ERRT1)

#define tsb_get_latmask_errt2(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_LATMASK_ERRT2)

#define tsb_get_latmask_errsyncfand(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_LATMASK_ERRSYNCFAND)

#define tsb_get_latmask_errsyncfor(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_LATMASK_ERRSYNCFOR)




/* error mask */

#define tsb_get_errmask_tmoutbusy(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_ERR_TMOUTBUSY)

#define tsb_get_errmask_syncfailstart(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_ERR_SYNCFAILSTART)

#define tsb_get_errmask_syncfailend(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_ERR_SYNCFAILEND)

#define tsb_get_errmask_tberr(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_ERR_TBERR)

#define tsb_get_errmask_auxtberr(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_ERR_AUXTBERR)

#define tsb_get_errmask_ovfwacttime(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_ERR_OVFWACTTIME)

#define tsb_get_errmask_ovfwdeadtime(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_ERR_OVFWDEADTIME)

#define tsb_get_errmask_erra(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_ERR_ERRA)

#define tsb_get_errmask_errb(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_ERR_ERRB)

#define tsb_get_errmask_errt1(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_ERR_ERRT1)

#define tsb_get_errmask_errt2(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_ERR_ERRT2)

#define tsb_get_errmask_errsyncfand(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_ERR_ERRSYNCFAND)

#define tsb_get_errmask_errsyncfor(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_ERR_ERRSYNCFOR)




/* tmode */

#define tsb_get_tmode_mode(/*unsigned char */ nr) /* IN */  \
        bits_get_bits(nr,TSB_TMODE_MODE_SHIFT,TSB_TMODE_MODE_NBITS)

#define tsb_get_tmode_presc(/*unsigned char */ nr) /* IN */  \
        bits_get_bits(nr,TSB_TMODE_PRESC_SHIFT,TSB_TMODE_PRESC_NBITS)

#ifndef BS

#define tsb_get_syncmask_mask(/*unsigned int */ nr) /* IN */  \
        bits_get_bits(nr,TSB_SYNCMASK_MASK_SHIFT,TSB_SYNCMASK_MASK_NBITS)

#define tsb_get_syncmask_ena(/*unsigned char */ nr) /* IN */  \
        bits_get_bit(nr,TSB_SYNCMASK_ENA)

#endif


/*********************************************************************/
/**************         set bit routines           *******************/
/*********************************************************************/


/* tmode */

#define tsb_set_intlevel_intlevel(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bits(nr,TSB_INTLEVEL_INTLEVEL_SHIFT,TSB_INTLEVEL_INTLEVEL_NBITS,value)

#define tsb_set_intlevel_roak(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_TMODE_INTLEVEL_ROAK,value)



/* status */

#define tsb_set_sreg_tmoutbusy(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SREG_TMOUTBUSY,value)

#define tsb_set_sreg_syncfailstart(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SREG_SYNCFAILSTART,value)

#define tsb_set_sreg_syncfailend(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SREG_SYNCFAILEND,value)

#define tsb_set_sreg_tberr(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SREG_TBERR,value)

#define tsb_set_sreg_auxtberr(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SREG_AUXTBERR,value)

#define tsb_set_sreg_ovfwacttime(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SREG_OVFWACTTIME,value)

#define tsb_set_sreg_ovfwdeadtime(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SREG_OVFWDEADTIME,value)

#define tsb_set_sreg_erra(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SREG_ERRA,value)

#define tsb_set_sreg_errb(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SREG_ERRB,value)

#define tsb_set_sreg_errt1(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SREG_ERRT1,value)

#define tsb_set_sreg_errt2(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SREG_ERRT2,value)

#define tsb_set_sreg_errsyncfand(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SREG_ERRSYNCFAND,value)

#define tsb_set_sreg_errsyncfor(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SREG_ERRSYNCFOR,value)



/* interrupt mask */

#define tsb_set_intmask_tmoutbusy(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_INTMASK_TMOUTBUSY,value)

#define tsb_set_intmask_syncfailstart(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_INTMASK_SYNCFAILSTART,value)

#define tsb_set_intmask_syncfailend(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_INTMASK_SYNCFAILEND,value)

#define tsb_set_intmask_tberr(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_INTMASK_TBERR,value)

#define tsb_set_intmask_auxtberr(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_INTMASK_AUXTBERR,value)

#define tsb_set_intmask_ovfwacttime(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_INTMASK_OVFWACTTIME,value)

#define tsb_set_intmask_ovfwdeadtime(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_INTMASK_OVFWDEADTIME,value)

#define tsb_set_intmask_erra(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_INTMASK_ERRA,value)

#define tsb_set_intmask_errb(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_INTMASK_ERRB,value)

#define tsb_set_intmask_errt1(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_INTMASK_ERRT1,value)

#define tsb_set_intmask_errt2(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_INTMASK_ERRT2,value)

#define tsb_set_intmask_errsyncfand(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_INTMASK_ERRSYNCFAND,value)

#define tsb_set_intmask_errsyncfor(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_INTMASK_ERRSYNCFOR,value)


/* latch mask */

#define tsb_set_latmask_tmoutbusy(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_LATMASK_TMOUTBUSY,value)

#define tsb_set_latmask_syncfailstart(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_LATMASK_SYNCFAILSTART,value)

#define tsb_set_latmask_syncfailend(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_LATMASK_SYNCFAILEND,value)

#define tsb_set_latmask_tberr(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_LATMASK_TBERR,value)

#define tsb_set_latmask_auxtberr(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_LATMASK_AUXTBERR,value)

#define tsb_set_latmask_ovfwacttime(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_LATMASK_OVFWACTTIME,value)

#define tsb_set_latmask_ovfwdeadtime(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_LATMASK_OVFWDEADTIME,value)

#define tsb_set_latmask_erra(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_LATMASK_ERRA,value)

#define tsb_set_latmask_errb(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_LATMASK_ERRB,value)

#define tsb_set_latmask_errt1(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_LATMASK_ERRT1,value)

#define tsb_set_latmask_errt2(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_LATMASK_ERRT2,value)

#define tsb_set_latmask_errsyncfand(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_LATMASK_ERRSYNCFAND,value)

#define tsb_set_latmask_errsyncfor(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_LATMASK_ERRSYNCFOR,value)


/* error mask */

#define tsb_set_errmask_tmoutbusy(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_ERR_TMOUTBUSY,value)

#define tsb_set_errmask_syncfailstart(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_ERR_SYNCFAILSTART,value)

#define tsb_set_errmask_syncfailend(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_ERR_SYNCFAILEND,value)

#define tsb_set_errmask_tberr(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_ERR_TBERR,value)

#define tsb_set_errmask_auxtberr(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_ERR_AUXTBERR,value)

#define tsb_set_errmask_ovfwacttime(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_ERR_OVFWACTTIME,value)

#define tsb_set_errmask_ovfwdeadtime(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_ERR_OVFWDEADTIME,value)

#define tsb_set_errmask_erra(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_ERR_ERRA,value)

#define tsb_set_errmask_errb(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_ERR_ERRB,value)

#define tsb_set_errmask_errt1(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_ERR_ERRT1,value)

#define tsb_set_errmask_errt2(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_ERR_ERRT2,value)

#define tsb_set_errmask_errsyncfand(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_ERR_ERRSYNCFAND,value)

#define tsb_set_errmask_errsyncfor(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_ERR_ERRSYNCFOR,value)




/* tmode */

#define tsb_set_tmode_mode(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bits(nr,TSB_TMODE_MODE_SHIFT,TSB_TMODE_MODE_NBITS,value)

#define tsb_set_tmode_presc(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bits(nr,TSB_TMODE_PRESC_SHIFT,TSB_TMODE_PRESC_NBITS,value)


/*  syncmask */

#ifndef BS

#define tsb_set_syncmask_mask(/*unsigned int */ nr,     /* IN */  \
			/*unsigned int */ value)  /* IN */  \
        bits_set_bits(nr,TSB_SYNCMASK_MASK_SHIFT,TSB_SYNCMASK_MASK_NBITS,value)

#define tsb_set_syncmask_ena(/*unsigned char */ nr,     /* IN */  \
			/*unsigned char */ value)  /* IN */  \
        bits_set_bit(nr,TSB_SYNCMASK_ENA,value)

#endif



#endif /* TSBITS_H */