master
  1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
  2/*
  3 * hdlcdrv.h  -- HDLC packet radio network driver.
  4 * The Linux soundcard driver for 1200 baud and 9600 baud packet radio
  5 * (C) 1996-1998 by Thomas Sailer, HB9JNX/AE4WA
  6 */
  7
  8#ifndef _HDLCDRV_H
  9#define _HDLCDRV_H
 10
 11/* -------------------------------------------------------------------- */
 12/*
 13 * structs for the IOCTL commands
 14 */
 15
 16struct hdlcdrv_params {
 17	int iobase;
 18	int irq;
 19	int dma;
 20	int dma2;
 21	int seriobase;
 22	int pariobase;
 23	int midiiobase;
 24};	
 25
 26struct hdlcdrv_channel_params {
 27	int tx_delay;  /* the transmitter keyup delay in 10ms units */
 28	int tx_tail;   /* the transmitter keyoff delay in 10ms units */
 29	int slottime;  /* the slottime in 10ms; usually 10 = 100ms */
 30	int ppersist;  /* the p-persistence 0..255 */
 31	int fulldup;   /* some driver do not support full duplex, setting */
 32	               /* this just makes them send even if DCD is on */
 33};	
 34
 35struct hdlcdrv_old_channel_state {
 36  	int ptt;
 37  	int dcd;
 38  	int ptt_keyed;
 39};
 40
 41struct hdlcdrv_channel_state {
 42 	int ptt;
 43 	int dcd;
 44 	int ptt_keyed;
 45 	unsigned long tx_packets;
 46 	unsigned long tx_errors;
 47 	unsigned long rx_packets;
 48 	unsigned long rx_errors;
 49};
 50
 51struct hdlcdrv_ioctl {
 52	int cmd;
 53	union {
 54		struct hdlcdrv_params mp;
 55		struct hdlcdrv_channel_params cp;
 56		struct hdlcdrv_channel_state cs;
 57		struct hdlcdrv_old_channel_state ocs;
 58		unsigned int calibrate;
 59		unsigned char bits;
 60		char modename[128];
 61		char drivername[32];
 62	} data;
 63};
 64
 65/* -------------------------------------------------------------------- */
 66
 67/*
 68 * ioctl values
 69 */
 70#define HDLCDRVCTL_GETMODEMPAR       0
 71#define HDLCDRVCTL_SETMODEMPAR       1
 72#define HDLCDRVCTL_MODEMPARMASK      2  /* not handled by hdlcdrv */
 73#define HDLCDRVCTL_GETCHANNELPAR    10
 74#define HDLCDRVCTL_SETCHANNELPAR    11
 75#define HDLCDRVCTL_OLDGETSTAT       20
 76#define HDLCDRVCTL_CALIBRATE        21
 77#define HDLCDRVCTL_GETSTAT          22
 78
 79/*
 80 * these are mainly for debugging purposes
 81 */
 82#define HDLCDRVCTL_GETSAMPLES       30
 83#define HDLCDRVCTL_GETBITS          31
 84
 85/*
 86 * not handled by hdlcdrv, but by its depending drivers
 87 */
 88#define HDLCDRVCTL_GETMODE          40
 89#define HDLCDRVCTL_SETMODE          41
 90#define HDLCDRVCTL_MODELIST         42
 91#define HDLCDRVCTL_DRIVERNAME       43
 92
 93/*
 94 * mask of needed modem parameters, returned by HDLCDRVCTL_MODEMPARMASK
 95 */
 96#define HDLCDRV_PARMASK_IOBASE      (1<<0)
 97#define HDLCDRV_PARMASK_IRQ         (1<<1)
 98#define HDLCDRV_PARMASK_DMA         (1<<2)
 99#define HDLCDRV_PARMASK_DMA2        (1<<3)
100#define HDLCDRV_PARMASK_SERIOBASE   (1<<4)
101#define HDLCDRV_PARMASK_PARIOBASE   (1<<5)
102#define HDLCDRV_PARMASK_MIDIIOBASE  (1<<6)
103
104/* -------------------------------------------------------------------- */
105
106
107/* -------------------------------------------------------------------- */
108
109#endif /* _HDLCDRV_H */
110
111/* -------------------------------------------------------------------- */