diff options
Diffstat (limited to 'drivers/sbus/audio/dbri.h')
-rw-r--r-- | drivers/sbus/audio/dbri.h | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/drivers/sbus/audio/dbri.h b/drivers/sbus/audio/dbri.h index 098616ac8..af3a8a4d7 100644 --- a/drivers/sbus/audio/dbri.h +++ b/drivers/sbus/audio/dbri.h @@ -33,6 +33,17 @@ struct dbri_mem { __u32 status; }; +struct dbri_channel { + struct dbri_mem td; + struct dbri_mem rd; + unsigned int recvSDP; + unsigned int xmitSDP; + void (*output_callback)(void *, int); + void *output_callback_arg; + void (*input_callback)(void *, int, unsigned int); + void *input_callback_arg; +}; + #include "cs4215.h" /* This structure holds the information for both chips (DBRI & CS4215) */ @@ -49,6 +60,15 @@ struct dbri { struct wait_queue *wait, *int_wait; /* Where to sleep if busy */ struct audio_info perchip_info; + + /* Track ISDN LIU and notify changes */ + int liu_state; + void (*liu_callback)(void *); + void *liu_callback_arg; + + /* Callback routines and descriptors for ISDN channels */ + struct dbri_channel D; + struct dbri_channel B[2]; }; @@ -106,11 +126,10 @@ struct dbri { #define D_TEST 0xd /* No comment */ #define D_CDM 0xe /* CHI Data mode command */ -#define DBRI_CMD(cmd, intr, value) ((cmd << 28) | (intr << 27) | value) /* Special bits for some commands */ -#define D_PIPE(v) (v<<0) /* Pipe Nr: 0-15 long, 16-21 short */ +#define D_PIPE(v) ((v)<<0) /* Pipe Nr: 0-15 long, 16-21 short */ /* Setup Data Pipe */ /* IRM */ @@ -140,8 +159,8 @@ struct dbri { #define D_DTS_VO (1<<16) /* Valid Output Time-Slot Descriptor */ #define D_DTS_INS (1<<15) /* Insert Time Slot */ #define D_DTS_DEL (0<<15) /* Delete Time Slot */ -#define D_DTS_PRVIN(v) (v<<10) /* Previous In Pipe */ -#define D_DTS_PRVOUT(v) (v<<5) /* Previous Out Pipe */ +#define D_DTS_PRVIN(v) ((v)<<10) /* Previous In Pipe */ +#define D_DTS_PRVOUT(v) ((v)<<5) /* Previous Out Pipe */ /* Time Slot defines */ #define D_TS_LEN(v) (v<<24) /* Number of bits in this time slot */ @@ -151,8 +170,8 @@ struct dbri { #define D_TS_MONITOR (2<<10) /* Monitor pipe */ #define D_TS_NONCONTIG (3<<10) /* Non contiguous mode */ #define D_TS_ANCHOR (7<<10) /* Starting short pipes */ -#define D_TS_MON(v) (v<<5) /* Monitor Pipe */ -#define D_TS_NEXT(v) (v<<0) /* Pipe Nr: 0-15 long, 16-21 short */ +#define D_TS_MON(v) ((v)<<5) /* Monitor Pipe */ +#define D_TS_NEXT(v) ((v)<<0) /* Pipe Nr: 0-15 long, 16-21 short */ /* Concentration Highway Interface Modes */ #define D_CHI_CHICM(v) (v<<16) /* Clock mode */ @@ -268,7 +287,7 @@ struct dbri { /* Transmit descriptor defines */ #define DBRI_TD_F (1<<31) /* End of Frame */ -#define DBRI_TD_D (1<<31) /* Do not append CRC */ +#define DBRI_TD_D (1<<30) /* Do not append CRC */ #define DBRI_TD_CNT(v) (v<<16) /* Number of valid bytes in the buffer */ #define DBRI_TD_B (1<<15) /* Final interrupt */ #define DBRI_TD_M (1<<14) /* Marker interrupt */ @@ -277,17 +296,19 @@ struct dbri { #define DBRI_TD_UNR (1<<3) /* Underrun: transmitter is out of data */ #define DBRI_TD_ABT (1<<2) /* Abort: frame aborted */ #define DBRI_TD_TBC (1<<0) /* Transmit buffer Complete */ +#define DBRI_TD_STATUS(v) ((v)&0xff) /* Transmit status */ /* Receive descriptor defines */ #define DBRI_RD_F (1<<31) /* End of Frame */ #define DBRI_RD_C (1<<30) /* Completed buffer */ #define DBRI_RD_B (1<<15) /* Final interrupt */ #define DBRI_RD_M (1<<14) /* Marker interrupt */ -#define DBRI_RD_CNT(v) (v<<16) /* Number of valid bytes in the buffer */ #define DBRI_RD_BCNT(v) v /* Buffer size */ #define DBRI_RD_CRC (1<<7) /* 0: CRC is correct */ #define DBRI_RD_BBC (1<<6) /* 1: Bad Byte recieved */ #define DBRI_RD_ABT (1<<5) /* Abort: frame aborted */ #define DBRI_RD_OVRN (1<<3) /* Overrun: data lost */ +#define DBRI_RD_STATUS(v) ((v)&0xff) /* Receive status */ +#define DBRI_RD_CNT(v) ((v>>16)&0x1fff) /* Number of valid bytes in the buffer */ #endif /* _DBRI_H_ */ |