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