1136944Syongari/*	$FreeBSD: releng/11.0/sys/dev/sound/sbus/apcdmareg.h 139749 2005-01-06 01:43:34Z imp $	*/
2136944Syongari/*	$OpenBSD: apcdmareg.h,v 1.2 2003/06/02 18:53:18 jason Exp $	*/
3136944Syongari
4139749Simp/*-
5136944Syongari * Copyright (c) 2001 Jason L. Wright (jason@thought.net)
6136944Syongari * All rights reserved.
7136944Syongari *
8136944Syongari * Redistribution and use in source and binary forms, with or without
9136944Syongari * modification, are permitted provided that the following conditions
10136944Syongari * are met:
11136944Syongari * 1. Redistributions of source code must retain the above copyright
12136944Syongari *    notice, this list of conditions and the following disclaimer.
13136944Syongari * 2. Redistributions in binary form must reproduce the above copyright
14136944Syongari *    notice, this list of conditions and the following disclaimer in the
15136944Syongari *    documentation and/or other materials provided with the distribution.
16136944Syongari *
17136944Syongari * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18136944Syongari * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19136944Syongari * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20136944Syongari * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
21136944Syongari * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22136944Syongari * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23136944Syongari * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24136944Syongari * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
25136944Syongari * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26136944Syongari * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27136944Syongari * POSSIBILITY OF SUCH DAMAGE.
28136944Syongari */
29136944Syongari
30136944Syongari/*
31136944Syongari * Definitions for Sun APC DMA controller.
32136944Syongari */
33136944Syongari
34136944Syongari/* APC DMA registers */
35136944Syongari#define	APC_CSR		0x0010		/* control/status */
36136944Syongari#define	APC_CVA		0x0020		/* capture virtual address */
37136944Syongari#define	APC_CC		0x0024		/* capture count */
38136944Syongari#define	APC_CNVA	0x0028		/* capture next virtual address */
39136944Syongari#define	APC_CNC		0x002c		/* capture next count */
40136944Syongari#define	APC_PVA		0x0030		/* playback virtual address */
41136944Syongari#define	APC_PC		0x0034		/* playback count */
42136944Syongari#define	APC_PNVA	0x0038		/* playback next virtual address */
43136944Syongari#define	APC_PNC		0x003c		/* playback next count */
44136944Syongari
45136944Syongari/*
46136944Syongari * APC DMA Register definitions
47136944Syongari */
48136944Syongari#define	APC_CSR_RESET		0x00000001	/* reset */
49136944Syongari#define	APC_CSR_CDMA_GO		0x00000004	/* capture dma go */
50136944Syongari#define	APC_CSR_PDMA_GO		0x00000008	/* playback dma go */
51136944Syongari#define	APC_CSR_CODEC_RESET	0x00000020	/* codec reset */
52136944Syongari#define	APC_CSR_CPAUSE		0x00000040	/* capture dma pause */
53136944Syongari#define	APC_CSR_PPAUSE		0x00000080	/* playback dma pause */
54136944Syongari#define	APC_CSR_CMIE		0x00000100	/* capture pipe empty enb */
55136944Syongari#define	APC_CSR_CMI		0x00000200	/* capture pipe empty intr */
56136944Syongari#define	APC_CSR_CD		0x00000400	/* capture nva dirty */
57136944Syongari#define	APC_CSR_CM		0x00000800	/* capture data lost */
58136944Syongari#define	APC_CSR_PMIE		0x00001000	/* pb pipe empty intr enable */
59136944Syongari#define	APC_CSR_PD		0x00002000	/* pb nva dirty */
60136944Syongari#define	APC_CSR_PM		0x00004000	/* pb pipe empty */
61136944Syongari#define	APC_CSR_PMI		0x00008000	/* pb pipe empty interrupt */
62136944Syongari#define	APC_CSR_EIE		0x00010000	/* error interrupt enable */
63136944Syongari#define	APC_CSR_CIE		0x00020000	/* capture intr enable */
64136944Syongari#define	APC_CSR_PIE		0x00040000	/* playback intr enable */
65136944Syongari#define	APC_CSR_GIE		0x00080000	/* general intr enable */
66136944Syongari#define	APC_CSR_EI		0x00100000	/* error interrupt */
67136944Syongari#define	APC_CSR_CI		0x00200000	/* capture interrupt */
68136944Syongari#define	APC_CSR_PI		0x00400000	/* playback interrupt */
69136944Syongari#define	APC_CSR_GI		0x00800000	/* general interrupt */
70136944Syongari
71136944Syongari#define	APC_CSR_PLAY			( \
72136944Syongari		APC_CSR_EI		| \
73136944Syongari	 	APC_CSR_GIE		| \
74136944Syongari		APC_CSR_PIE		| \
75136944Syongari		APC_CSR_EIE		| \
76136944Syongari		APC_CSR_PDMA_GO		| \
77136944Syongari		APC_CSR_PMIE		)
78136944Syongari
79136944Syongari#define	APC_CSR_CAPTURE			( \
80136944Syongari		APC_CSR_EI		| \
81136944Syongari	 	APC_CSR_GIE		| \
82136944Syongari		APC_CSR_CIE		| \
83136944Syongari		APC_CSR_EIE		| \
84136944Syongari		APC_CSR_CDMA_GO	)
85136944Syongari
86136944Syongari#define	APC_CSR_PLAY_PAUSE		(~( \
87136944Syongari		APC_CSR_PPAUSE		| \
88136944Syongari		APC_CSR_GI		| \
89136944Syongari		APC_CSR_PI		| \
90136944Syongari		APC_CSR_CI		| \
91136944Syongari		APC_CSR_EI		| \
92136944Syongari		APC_CSR_PMI		| \
93136944Syongari		APC_CSR_PMIE		| \
94136944Syongari		APC_CSR_CMI		| \
95136944Syongari		APC_CSR_CMIE		) )
96136944Syongari
97136944Syongari#define	APC_CSR_CAPTURE_PAUSE		(~( \
98136944Syongari		APC_CSR_PPAUSE		| \
99136944Syongari		APC_CSR_GI		| \
100136944Syongari		APC_CSR_PI		| \
101136944Syongari		APC_CSR_CI		| \
102136944Syongari		APC_CSR_EI		| \
103136944Syongari		APC_CSR_PMI		| \
104136944Syongari		APC_CSR_PMIE		| \
105136944Syongari		APC_CSR_CMI		| \
106136944Syongari		APC_CSR_CMIE		) )
107136944Syongari
108136944Syongari#define	APC_CSR_INTR_MASK		( \
109136944Syongari		APC_CSR_GI		| \
110136944Syongari		APC_CSR_PI		| \
111136944Syongari		APC_CSR_CI		| \
112136944Syongari		APC_CSR_EI		| \
113136944Syongari		APC_CSR_PMI		| \
114136944Syongari		APC_CSR_CMI		)
115