xref: /csrg-svn/sys/news3400/sio/scc.h (revision 53905)
1*53905Smckusick /*
2*53905Smckusick  * Copyright (c) 1992 The Regents of the University of California.
3*53905Smckusick  * All rights reserved.
4*53905Smckusick  *
5*53905Smckusick  * This code is derived from software contributed to Berkeley by
6*53905Smckusick  * Sony Corp. and Kazumasa Utashiro of Software Research Associates, Inc.
7*53905Smckusick  *
8*53905Smckusick  * %sccs.include.redist.c%
9*53905Smckusick  *
10*53905Smckusick  * from: $Hdr: scc.h,v 4.300 91/06/09 06:44:56 root Rel41 $ SONY
11*53905Smckusick  *
12*53905Smckusick  *	@(#)scc.h	7.1 (Berkeley) 06/04/92
13*53905Smckusick  */
14*53905Smckusick 
15*53905Smckusick #ifdef news700
16*53905Smckusick #define splscc		spl4
17*53905Smckusick #endif
18*53905Smckusick 
19*53905Smckusick #if defined(news1200) || defined(news1700)
20*53905Smckusick #define splscc		spl5
21*53905Smckusick #endif
22*53905Smckusick 
23*53905Smckusick #ifdef news3400
24*53905Smckusick #ifdef PMAXSPL
25*53905Smckusick #define	splscc		Mach_spl1
26*53905Smckusick #else
27*53905Smckusick #define	splscc		spl4
28*53905Smckusick #endif /* PMAXSPL */
29*53905Smckusick #endif /* news3400 */
30*53905Smckusick 
31*53905Smckusick #define	SCCWAIT		DELAY(2)
32*53905Smckusick #define	SCCWAIT		_delay(5)
33*53905Smckusick 
34*53905Smckusick #define SCC_REMOTE0	0
35*53905Smckusick #define SCC_REMOTE1	1
36*53905Smckusick #define SCC_REMOTE2	2
37*53905Smckusick #define SCC_REMOTE3	3
38*53905Smckusick #define SCC_REMOTE4	4
39*53905Smckusick #define SCC_REMOTE5	5
40*53905Smckusick #define SCC_REMOTE6	6
41*53905Smckusick #define SCC_REMOTE7	7
42*53905Smckusick #define SCC_REMOTE8	8
43*53905Smckusick #define SCC_REMOTE9	9
44*53905Smckusick 
45*53905Smckusick #define	SCCVEC0		64
46*53905Smckusick #define	SCCVEC1		(SCCVEC0+16)
47*53905Smckusick #define SCCVEC2		(SCCVEC0+32)
48*53905Smckusick #define SCCVEC3		(SCCVEC0+48)
49*53905Smckusick #define SCCVEC4		(SCCVEC0+64)
50*53905Smckusick 
51*53905Smckusick /*
52*53905Smckusick  *	SCC channel control block
53*53905Smckusick  */
54*53905Smckusick typedef struct scc_dma {
55*53905Smckusick 	char	*dma_addr;
56*53905Smckusick 	int	dma_count;
57*53905Smckusick } Scc_dma;
58*53905Smckusick 
59*53905Smckusick typedef struct scc_channel {
60*53905Smckusick 	int	scc_status;		/* channel status		*/
61*53905Smckusick 	int	scc_param;		/* channel parameter		*/
62*53905Smckusick 	struct	scc_reg	*scc_port;	/* port address			*/
63*53905Smckusick 	char	*scc_init;		/* initialize data		*/
64*53905Smckusick 	int	scc_vec;		/* interrupt vector		*/
65*53905Smckusick 	Scc_dma	x_dma;
66*53905Smckusick 	Scc_dma	r_dma;
67*53905Smckusick } Scc_channel;
68*53905Smckusick 
69*53905Smckusick /*
70*53905Smckusick  *	SCC channel status
71*53905Smckusick  */
72*53905Smckusick #define	OACTIVE		0x00000001	/* transmit in progress	*/
73*53905Smckusick #define	OSTOP		0x00000002	/* output stop request	*/
74*53905Smckusick #define	OFLUSH		0x00000004	/* output flush request	*/
75*53905Smckusick #define	OBUSY		0x00000008	/* output in use	*/
76*53905Smckusick #define LINE_BREAK	0x00000010	/* line break interrupt	*/
77*53905Smckusick #define	ENABLE		0x00000020	/* receiver enable	*/
78*53905Smckusick #define	CHAN_ACTIVE	0x80000000	/* channel active	*/
79*53905Smckusick 
80*53905Smckusick /*
81*53905Smckusick  *	SCC channel usage
82*53905Smckusick  */
83*53905Smckusick #define	SCC_MOUSE	0
84*53905Smckusick #define	SCC_KEYBOARD	1
85