xref: /linux-6.15/include/linux/mISDNdsp.h (revision b2441318)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2960366cfSKarsten Keil #ifndef __mISDNdsp_H__
3960366cfSKarsten Keil #define __mISDNdsp_H__
4960366cfSKarsten Keil 
5960366cfSKarsten Keil struct mISDN_dsp_element_arg {
6960366cfSKarsten Keil 	char	*name;
7960366cfSKarsten Keil 	char	*def;
8960366cfSKarsten Keil 	char	*desc;
9960366cfSKarsten Keil };
10960366cfSKarsten Keil 
11960366cfSKarsten Keil struct mISDN_dsp_element {
12960366cfSKarsten Keil 	char	*name;
13960366cfSKarsten Keil 	void	*(*new)(const char *arg);
14960366cfSKarsten Keil 	void	(*free)(void *p);
15960366cfSKarsten Keil 	void	(*process_tx)(void *p, unsigned char *data, int len);
167cfa153dSAndreas Eversberg 	void	(*process_rx)(void *p, unsigned char *data, int len,
177cfa153dSAndreas Eversberg 			unsigned int txlen);
18960366cfSKarsten Keil 	int	num_args;
19960366cfSKarsten Keil 	struct mISDN_dsp_element_arg
20960366cfSKarsten Keil 		*args;
21960366cfSKarsten Keil };
22960366cfSKarsten Keil 
23960366cfSKarsten Keil extern int  mISDN_dsp_element_register(struct mISDN_dsp_element *elem);
24960366cfSKarsten Keil extern void mISDN_dsp_element_unregister(struct mISDN_dsp_element *elem);
25960366cfSKarsten Keil 
26960366cfSKarsten Keil struct dsp_features {
27960366cfSKarsten Keil 	int	hfc_id; /* unique id to identify the chip (or -1) */
28960366cfSKarsten Keil 	int	hfc_dtmf; /* set if HFCmulti card supports dtmf */
29db9bb63aSKarsten Keil 	int	hfc_conf; /* set if HFCmulti card supports conferences */
30960366cfSKarsten Keil 	int	hfc_loops; /* set if card supports tone loops */
31960366cfSKarsten Keil 	int	hfc_echocanhw; /* set if card supports echocancelation*/
32960366cfSKarsten Keil 	int	pcm_id; /* unique id to identify the pcm bus (or -1) */
33960366cfSKarsten Keil 	int	pcm_slots; /* number of slots on the pcm bus */
34960366cfSKarsten Keil 	int	pcm_banks; /* number of IO banks of pcm bus */
35960366cfSKarsten Keil 	int	unclocked; /* data is not clocked (has jitter/loss) */
36960366cfSKarsten Keil 	int	unordered; /* data is unordered (packets have index) */
37960366cfSKarsten Keil };
38960366cfSKarsten Keil 
39960366cfSKarsten Keil #endif
40960366cfSKarsten Keil 
41