blob: 00758f45fddc6a7af0291b049f2aea95cdb7f68b [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Karsten Keil960366c2008-07-27 01:56:38 +02002#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);
Andreas Eversberg7cfa1532009-05-22 11:04:46 +000016 void (*process_rx)(void *p, unsigned char *data, int len,
17 unsigned int txlen);
Karsten Keil960366c2008-07-27 01:56:38 +020018 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 */
Karsten Keildb9bb632009-05-22 11:04:53 +000029 int hfc_conf; /* set if HFCmulti card supports conferences */
Karsten Keil960366c2008-07-27 01:56:38 +020030 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