1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef __mISDNdsp_H__ 3*4882a593Smuzhiyun #define __mISDNdsp_H__ 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun struct mISDN_dsp_element_arg { 6*4882a593Smuzhiyun char *name; 7*4882a593Smuzhiyun char *def; 8*4882a593Smuzhiyun char *desc; 9*4882a593Smuzhiyun }; 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun struct mISDN_dsp_element { 12*4882a593Smuzhiyun char *name; 13*4882a593Smuzhiyun void *(*new)(const char *arg); 14*4882a593Smuzhiyun void (*free)(void *p); 15*4882a593Smuzhiyun void (*process_tx)(void *p, unsigned char *data, int len); 16*4882a593Smuzhiyun void (*process_rx)(void *p, unsigned char *data, int len, 17*4882a593Smuzhiyun unsigned int txlen); 18*4882a593Smuzhiyun int num_args; 19*4882a593Smuzhiyun struct mISDN_dsp_element_arg 20*4882a593Smuzhiyun *args; 21*4882a593Smuzhiyun }; 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun extern int mISDN_dsp_element_register(struct mISDN_dsp_element *elem); 24*4882a593Smuzhiyun extern void mISDN_dsp_element_unregister(struct mISDN_dsp_element *elem); 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun struct dsp_features { 27*4882a593Smuzhiyun int hfc_id; /* unique id to identify the chip (or -1) */ 28*4882a593Smuzhiyun int hfc_dtmf; /* set if HFCmulti card supports dtmf */ 29*4882a593Smuzhiyun int hfc_conf; /* set if HFCmulti card supports conferences */ 30*4882a593Smuzhiyun int hfc_loops; /* set if card supports tone loops */ 31*4882a593Smuzhiyun int hfc_echocanhw; /* set if card supports echocancelation*/ 32*4882a593Smuzhiyun int pcm_id; /* unique id to identify the pcm bus (or -1) */ 33*4882a593Smuzhiyun int pcm_slots; /* number of slots on the pcm bus */ 34*4882a593Smuzhiyun int pcm_banks; /* number of IO banks of pcm bus */ 35*4882a593Smuzhiyun int unclocked; /* data is not clocked (has jitter/loss) */ 36*4882a593Smuzhiyun int unordered; /* data is unordered (packets have index) */ 37*4882a593Smuzhiyun }; 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun #endif 40*4882a593Smuzhiyun 41