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