Coherent4.2.10/include/sys/asy.h
/* (-lgl
* Coherent 386 release 4.2
* Copyright (c) 1982, 1993 by Mark Williams Company.
* All rights reserved. May not be copied without permission.
* For copying permission and licensing info, write licensing@mwc.com
-lgl) */
#ifndef __SYS_ASY_H__
#define __SYS_ASY_H__
#include <sys/silo.h>
extern int ASY_NUM; /* patched to number of ports */
extern int ASYGP_NUM; /* patched to number of port groups */
#define MAX_ASY 32 /* maximum number of ports per driver */
#define MAX_ASYGP 4 /* maximum number of port groups */
#define MAX_SLOTS 16 /* maximum number of ports per group */
#define ASY_VERSION 4 /* driver and asypatch check this */
#define NO_ASYGP 99
#define NO_CHANNEL 99
#define PT_SIMPLE 0
#define PT_COMTROL 1
#define PT_ARNET 2
#define PT_GTEK 3
#define PT_DIGI 4
#define PT_MAX 5 /* one more than highest PT value used */
/*
* Fields that need to be patched during installation.
* These structs must be static.
*/
typedef struct asy0 {
short a_port; /* i/o address of uart */
char a_irqno; /* irq number, if any */
char a_speed; /* default baud, from sgtty.h/termio.h */
char a_outs; /* settings for MC_OUT1/2 when open */
char a_asy_gp; /* group number, or NO_ASYGP if none */
char a_ixc; /* if 1, needs excl use of irq (COM1-4) */
char a_nms; /* if 1, no modem status interrupts */
} asy0_t;
typedef struct asy_gp {
short stat_port;
char gp_type;
char irq;
char chan_list[MAX_SLOTS];
} asy_gp_t;
/*
* Fields that do not require patched initial values.
* This struct can be dynamically allocated.
*/
typedef struct asy1 {
silo_t a_in; /* raw input fifo */
silo_t a_out; /* raw output fifo */
TTY a_tty; /* stuff for line discipline */
short a_in_use; /* increment with each open attempt */
char a_ut; /* uart type */
char a_lcr; /* lcr readback */
char a_clto; /* timed out during close */
int a_irq:1; /* true when open or hanging with irq's */
int a_has_irq:1; /* irq vector is usable */
int a_hopn:1; /* doing first open */
int a_hcls:1; /* doing last close */
int a_ohlt:1; /* CTS flow control has halted output */
int a_modc:1; /* open with modem control */
int a_poll:1; /* open in polled mode */
int a_flc:1; /* open with RTS/CTS flow control */
int a_brk:1; /* sending 2.5-second break */
} asy1_t;
/*
* Each irq number has a linked list.
* There is one node for each i/o port triggering the given irq number.
*/
struct irqnode {
struct irqnode *next;
struct irqnode *next_actv;
int (*func)();
int arg;
};
#endif /* ! defined (__SYS_ASY_H__) */