129 lines
2.7 KiB
C
129 lines
2.7 KiB
C
#define FEPCODESEG 0x0200L
|
|
#define FEPCODE 0x2000L
|
|
#define BIOSCODE 0xf800L
|
|
|
|
#define MISCGLOBAL 0x0C00L
|
|
#define NPORT 0x0C22L
|
|
#define MBOX 0x0C40L
|
|
#define PORTBASE 0x0C90L
|
|
|
|
#define FEPCLR 0x00
|
|
#define FEPMEM 0x02
|
|
#define FEPRST 0x04
|
|
#define FEPINT 0x08
|
|
#define FEPMASK 0x0e
|
|
#define FEPWIN 0x80
|
|
|
|
/* Maximum Number of Boards supported */
|
|
#define MAX_DIGI_BOARDS 4
|
|
|
|
#define PCXX_NUM_TYPES 4
|
|
|
|
#define PCXI 0
|
|
#define PCXE 1
|
|
#define PCXEVE 2
|
|
#define PCXEM 3
|
|
|
|
static char *board_desc[] = {
|
|
"PC/Xi",
|
|
"PC/Xe",
|
|
"PC/Xeve",
|
|
"PC/Xem",
|
|
};
|
|
|
|
static char *board_mem[] = {
|
|
"64k",
|
|
"64k",
|
|
"8k",
|
|
"32k",
|
|
};
|
|
#define STARTC 021
|
|
#define STOPC 023
|
|
#define IAIXON 0x2000
|
|
|
|
|
|
struct board_info {
|
|
unchar status;
|
|
unchar type;
|
|
unchar altpin;
|
|
ushort numports;
|
|
ushort port;
|
|
ulong membase;
|
|
ulong memsize;
|
|
ushort first_minor;
|
|
void *region;
|
|
};
|
|
|
|
|
|
#define TXSTOPPED 0x01
|
|
#define LOWWAIT 0x02
|
|
#define EMPTYWAIT 0x04
|
|
#define RXSTOPPED 0x08
|
|
#define TXBUSY 0x10
|
|
|
|
#define DISABLED 0
|
|
#define ENABLED 1
|
|
#define OFF 0
|
|
#define ON 1
|
|
|
|
#define FEPTIMEOUT 200000
|
|
#define SERIAL_TYPE_NORMAL 1
|
|
#define PCXE_EVENT_HANGUP 1
|
|
#define PCXX_MAGIC 0x5c6df104L
|
|
|
|
struct channel {
|
|
/* --------- Board/channel information ---------- */
|
|
long magic;
|
|
unchar boardnum;
|
|
unchar channelnum;
|
|
uint dev;
|
|
struct tty_struct *tty;
|
|
struct board_info *board;
|
|
volatile struct board_chan *brdchan;
|
|
volatile struct global_data *mailbox;
|
|
int asyncflags;
|
|
int count;
|
|
int blocked_open;
|
|
int close_delay;
|
|
unsigned long event;
|
|
wait_queue_head_t open_wait;
|
|
wait_queue_head_t close_wait;
|
|
struct work_struct tqueue;
|
|
/* ------------ Async control data ------------- */
|
|
unchar modemfake; /* Modem values to be forced */
|
|
unchar modem; /* Force values */
|
|
ulong statusflags;
|
|
unchar omodem; /* FEP output modem status */
|
|
unchar imodem; /* FEP input modem status */
|
|
unchar hflow;
|
|
unchar dsr;
|
|
unchar dcd;
|
|
unchar stopc;
|
|
unchar startc;
|
|
unchar stopca;
|
|
unchar startca;
|
|
unchar fepstopc;
|
|
unchar fepstartc;
|
|
unchar fepstopca;
|
|
unchar fepstartca;
|
|
ushort fepiflag;
|
|
ushort fepcflag;
|
|
ushort fepoflag;
|
|
/* ---------- Transmit/receive system ---------- */
|
|
unchar txwin;
|
|
unchar rxwin;
|
|
ushort txbufsize;
|
|
ushort rxbufsize;
|
|
unchar *txptr;
|
|
unchar *rxptr;
|
|
unchar *tmp_buf; /* Temp buffer */
|
|
struct semaphore tmp_buf_sem;
|
|
/* ---- Termios data ---- */
|
|
ulong c_iflag;
|
|
ulong c_cflag;
|
|
ulong c_lflag;
|
|
ulong c_oflag;
|
|
struct digi_struct digiext;
|
|
ulong dummy[8];
|
|
};
|