xref: /openbsd/sys/dev/ic/apcdmareg.h (revision 9cf0b362)
1 /*	$OpenBSD: apcdmareg.h,v 1.2 2003/06/02 18:53:18 jason Exp $	*/
2 
3 /*
4  * Copyright (c) 2001 Jason L. Wright (jason@thought.net)
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
24  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
25  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26  * POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 /*
30  * Definitions for Sun APC DMA controller.
31  */
32 
33 /* APC DMA registers */
34 #define	APC_CSR		0x0010		/* control/status */
35 #define	APC_CVA		0x0020		/* capture virtual address */
36 #define	APC_CC		0x0024		/* capture count */
37 #define	APC_CNVA	0x0028		/* capture next virtual address */
38 #define	APC_CNC		0x002c		/* capture next count */
39 #define	APC_PVA		0x0030		/* playback virtual address */
40 #define	APC_PC		0x0034		/* playback count */
41 #define	APC_PNVA	0x0038		/* playback next virtual address */
42 #define	APC_PNC		0x003c		/* playback next count */
43 
44 /*
45  * APC DMA Register definitions
46  */
47 #define	APC_CSR_RESET		0x00000001	/* reset */
48 #define	APC_CSR_CDMA_GO		0x00000004	/* capture dma go */
49 #define	APC_CSR_PDMA_GO		0x00000008	/* playback dma go */
50 #define	APC_CSR_CODEC_RESET	0x00000020	/* codec reset */
51 #define	APC_CSR_CPAUSE		0x00000040	/* capture dma pause */
52 #define	APC_CSR_PPAUSE		0x00000080	/* playback dma pause */
53 #define	APC_CSR_CMIE		0x00000100	/* capture pipe empty enb */
54 #define	APC_CSR_CMI		0x00000200	/* capture pipe empty intr */
55 #define	APC_CSR_CD		0x00000400	/* capture nva dirty */
56 #define	APC_CSR_CM		0x00000800	/* capture data lost */
57 #define	APC_CSR_PMIE		0x00001000	/* pb pipe empty intr enable */
58 #define	APC_CSR_PD		0x00002000	/* pb nva dirty */
59 #define	APC_CSR_PM		0x00004000	/* pb pipe empty */
60 #define	APC_CSR_PMI		0x00008000	/* pb pipe empty interrupt */
61 #define	APC_CSR_EIE		0x00010000	/* error interrupt enable */
62 #define	APC_CSR_CIE		0x00020000	/* capture intr enable */
63 #define	APC_CSR_PIE		0x00040000	/* playback intr enable */
64 #define	APC_CSR_GIE		0x00080000	/* general intr enable */
65 #define	APC_CSR_EI		0x00100000	/* error interrupt */
66 #define	APC_CSR_CI		0x00200000	/* capture interrupt */
67 #define	APC_CSR_PI		0x00400000	/* playback interrupt */
68 #define	APC_CSR_GI		0x00800000	/* general interrupt */
69 
70 #define	APC_CSR_PLAY			( \
71 		APC_CSR_EI		| \
72 	 	APC_CSR_GIE		| \
73 		APC_CSR_PIE		| \
74 		APC_CSR_EIE		| \
75 		APC_CSR_PDMA_GO		| \
76 		APC_CSR_PMIE		)
77 
78 #define	APC_CSR_CAPTURE			( \
79 		APC_CSR_EI		| \
80 	 	APC_CSR_GIE		| \
81 		APC_CSR_CIE		| \
82 		APC_CSR_EIE		| \
83 		APC_CSR_CDMA_GO	)
84 
85 #define	APC_CSR_PLAY_PAUSE		(~( \
86 		APC_CSR_PPAUSE		| \
87 		APC_CSR_GI		| \
88 		APC_CSR_PI		| \
89 		APC_CSR_CI		| \
90 		APC_CSR_EI		| \
91 		APC_CSR_PMI		| \
92 		APC_CSR_PMIE		| \
93 		APC_CSR_CMI		| \
94 		APC_CSR_CMIE		) )
95 
96 #define	APC_CSR_CAPTURE_PAUSE		(~( \
97 		APC_CSR_PPAUSE		| \
98 		APC_CSR_GI		| \
99 		APC_CSR_PI		| \
100 		APC_CSR_CI		| \
101 		APC_CSR_EI		| \
102 		APC_CSR_PMI		| \
103 		APC_CSR_PMIE		| \
104 		APC_CSR_CMI		| \
105 		APC_CSR_CMIE		) )
106 
107 #define	APC_CSR_INTR_MASK		( \
108 		APC_CSR_GI		| \
109 		APC_CSR_PI		| \
110 		APC_CSR_CI		| \
111 		APC_CSR_EI		| \
112 		APC_CSR_PMI		| \
113 		APC_CSR_CMI		)
114