1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __mISDNdsp_H__
3#define __mISDNdsp_H__
4
5struct mISDN_dsp_element_arg {
6	char	*name;
7	char	*def;
8	char	*desc;
9};
10
11struct 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
23extern int  mISDN_dsp_element_register(struct mISDN_dsp_element *elem);
24extern void mISDN_dsp_element_unregister(struct mISDN_dsp_element *elem);
25
26struct 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
41