Plan 9 from Bell Labs’s /usr/web/sources/extra/9hist/gnot/isdn.h

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


## diffname gnot/isdn.h 1992/0609
## diff -e /dev/null /n/bootesdump/1992/0609/sys/src/9/gnot/isdn.h
0a
typedef struct Isdn	Isdn;
typedef struct Unite	Unite;
typedef struct Hifi	Hifi;

/*
struct Isdndev {
	uchar	asr;
	uchar	data;
};
*/

#define	ISDNDEV0	((uchar *)&PORT[52])	/* the first one */

#define	Bit(n)		(1<<(n))

#define	Bits(m,n)	(((1<<((n)-(m)+1))-1)<<(m))

enum Isdn_asr {		/* Board status */
	Uint	= Bit(0),
	Hint0	= Bit(1),
	Hint1	= Bit(2),
	DRCODEC = Bit(6),	/* enable codec receiver */
	DXCODEC = Bit(7)	/* enable codec transmitter */
};

/*
 * Board addresses
 */

#define	unite	((Unite *)(0*Bit(4)))
#define	hifi0	((Hifi *) (2*Bit(4)))
#define	hifi1	((Hifi *) (3*Bit(4)))

struct Unite {
	uchar	config;	/* Chip/Hardware Configuration Register */
	uchar	listat;	/* Line Interface Status */
	uchar	tctl;	/* Transmitter Control Register */
	uchar	data;	/* D-channel data register */
	uchar	hcr;	/* Hardware Configuration Register */
	uchar	rstat;	/* HDLC Receiver Status */
	uchar	itl;	/* Interrupt Trigger Levels for D-Channel Queues */
	uchar	mfstat;	/* Multiframe Status and S-Channel Queues */
	uchar	stictl;	/* S/T Interface control */
	uchar	imask;	/* Interrupt masks */
	uchar	istat;	/* Interrupt Status */
	uchar	qstat;	/* Q-Channel Data and Status */
	uchar	lctl;	/* Loopback and Transmit 1's Control */
	uchar	timctl;	/* Timer Configuration Control */
	uchar	tstat;	/* Transmitter Queue Status */
	uchar	reset;	/* Software Resets */
};

struct Hifi {
	uchar	config;	/* Chip Configuration Register */
	uchar	tctl;	/* Transmitter Control Register */
	uchar	tstat;	/* Transmitter Status Register */
	uchar	data;	/* r3 is the Data Byte Register. */
	uchar	rstat;	/* Receiver Status Register */
	uchar	rctl;	/* Receiver Control Register */
	uchar	opreg;	/* Operation Register */
	uchar	ttsctl;	/* Transmitter Time Slot Control Register */
	uchar	rtsctl;	/* Receiver Time Slot Control Register */
	uchar	bofctl;	/* Bit Offset Control Register */
	uchar	tofctl;	/* Transmitter Time Slot Offset Control Register */
	uchar	rof_tm;	/* Rcvr Time Slot Offset/Trans. Mode Control Register */
	uchar	rmask;	/* Receiver Mask/Character Register. */
	uchar	tmask;	/* Transmitter Mask/Idle Char. Register. */
	uchar	imask;	/* Interrupt Mask Register */
	uchar	istat;	/* Interrupt Status Register */
};

/*
 *	usage: SET(unite->chcr, C2pol);
 */

#define	SETADDR(addr)	(*(ip->asr) = ip->venval | ((int)(addr)))

#define	GET(lval)	(SETADDR(&(lval)), *(ip->data))

#define	SET(lval, rval)	(SETADDR(&(lval)), *(ip->data)=(rval))

#define	NBMASK	0x0f
#define	NB	(NBMASK+1)
#define	NEXT(a)	(((a)+1)&NBMASK)

struct Isdn
{
	QLock;			/* access to struct */
	QLock	kctl;		/* kproc start/stop */
	Rendez	kctlr;
	int	kstart;		/* set if kernel process started */
	Rendez	kr;		/* kernel process sleep/wakeup */
	Rendez	ar;		/* wait for active link (INFO 4) */

	int	pri;		/* priority at time of lock(&dev) */
	Lock	dev;		/* access to device */
	uchar	venval;
	uchar *	asr;
	uchar *	data;
	uchar	listat;		/* previous line interface status */
	uchar	tctl;		/* transmitter control */
	uchar	imask;		/* interrupt mask */
	uchar	lctl;		/* loopback control */
	uchar	devaddr;	/* debug access */

	Block *	inb[NB];	/* input buffer */
	int	ri;		/* input read pointer */
	int	wi;		/* input write pointer */
	Queue *	rq;		/* read queue */

	QLock	wlock;		/* write's are atomic */
	Block *	outb[NB];	/* output buffer */
	int	so;		/* output scavenge pointer */
	int	ro;		/* output read pointer */
	int	wo;		/* output write pointer */
	Block *	out;		/* current output block */
	Rendez	tr;		/* if transmitter must wait */

	/* statistics */

	ulong	inchars;
	ulong	badcrc;
	ulong	abort;
	ulong	overrun;
	ulong	badcount;
	ulong	overflow;
	ulong	toolong;
	ulong	underrun;
	ulong	outchars;
};

extern Isdn *	isdndev;
extern void	isdnlock(Isdn*);
extern int	isdnpeek(Isdn*, void*);
extern void	isdnpoke(Isdn*, void*, int);
extern void	isdnunlock(Isdn*);
extern int	spl2(void);
.
## diffname gnot/isdn.h 1992/1204
## diff -e /n/bootesdump/1992/0609/sys/src/9/gnot/isdn.h /n/bootesdump/1992/1204/sys/src/9/gnot/isdn.h
102a
	uchar	stictl;		/* S/T interface control and b1xb2 bit */
.
99a
	int	hangup;		/* hangup pending */
.
## diffname gnot/isdn.h 1993/0501 # deleted
## diff -e /n/bootesdump/1992/1204/sys/src/9/gnot/isdn.h /n/fornaxdump/1993/0501/sys/src/brazil/gnot/isdn.h
1,139d

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.