1 /* 2 * The Linux soundcard driver for 1200 baud and 9600 baud packet radio 3 * (C) 1996-1998 by Thomas Sailer, HB9JNX/AE4WA 4 */ 5 6 #ifndef _SOUNDMODEM_H 7 #define _SOUNDMODEM_H 8 9 /* -------------------------------------------------------------------- */ 10 /* 11 * structs for the IOCTL commands 12 */ 13 14 struct sm_debug_data { 15 unsigned int int_rate; 16 unsigned int mod_cycles; 17 unsigned int demod_cycles; 18 unsigned int dma_residue; 19 }; 20 21 struct sm_diag_data { 22 unsigned int mode; 23 unsigned int flags; 24 unsigned int samplesperbit; 25 unsigned int datalen; 26 short *data; 27 }; 28 29 struct sm_mixer_data { 30 unsigned int mixer_type; 31 unsigned int sample_rate; 32 unsigned int bit_rate; 33 unsigned int reg; 34 unsigned int data; 35 }; 36 37 struct sm_config { 38 int hardware; 39 int mode; 40 }; 41 42 struct sm_ioctl { 43 int cmd; 44 union { 45 struct sm_config cfg; 46 struct sm_diag_data diag; 47 struct sm_mixer_data mix; 48 struct sm_debug_data dbg; 49 } data; 50 }; 51 52 /* -------------------------------------------------------------------- */ 53 54 /* 55 * diagnose modes 56 */ 57 #define SM_DIAGMODE_OFF 0 58 #define SM_DIAGMODE_INPUT 1 59 #define SM_DIAGMODE_DEMOD 2 60 #define SM_DIAGMODE_CONSTELLATION 3 61 62 /* 63 * diagnose flags 64 */ 65 #define SM_DIAGFLAG_DCDGATE (1<<0) 66 #define SM_DIAGFLAG_VALID (1<<1) 67 68 /* 69 * mixer types 70 */ 71 #define SM_MIXER_INVALID 0 72 #define SM_MIXER_AD1848 0x10 73 #define SM_MIXER_CRYSTAL 0x11 74 #define SM_MIXER_CT1335 0x20 75 #define SM_MIXER_CT1345 0x21 76 #define SM_MIXER_CT1745 0x22 77 78 /* 79 * ioctl values 80 */ 81 #define SMCTL_DIAGNOSE 0x82 82 #define SMCTL_GETMIXER 0x83 83 #define SMCTL_SETMIXER 0x84 84 #define SMCTL_GETDEBUG 0x85 85 86 /* -------------------------------------------------------------------- */ 87 88 #endif /* _SOUNDMODEM_H */ 89 90 /* --------------------------------------------------------------------- */ 91