xref: /openbsd-src/sys/dev/ic/am7930reg.h (revision d98f46d72cda82c9e3983a12b45a6d4050ace6f3)
1*d98f46d7Smiod /*	$OpenBSD: am7930reg.h,v 1.6 2011/09/03 20:03:29 miod Exp $	*/
2*d98f46d7Smiod /* $NetBSD: am7930reg.h,v 1.7 2005/12/11 12:21:25 christos Exp $ */
3df930be7Sderaadt 
4df930be7Sderaadt /*
5df930be7Sderaadt  * Copyright (c) 1992, 1993
6df930be7Sderaadt  *	The Regents of the University of California.  All rights reserved.
7df930be7Sderaadt  *
8df930be7Sderaadt  * This software was developed by the Computer Systems Engineering group
9df930be7Sderaadt  * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
10df930be7Sderaadt  * contributed to Berkeley.
11df930be7Sderaadt  *
12df930be7Sderaadt  * All advertising materials mentioning features or use of this software
13df930be7Sderaadt  * must display the following acknowledgement:
14df930be7Sderaadt  *	This product includes software developed by the University of
15df930be7Sderaadt  *	California, Lawrence Berkeley Laboratory.
16df930be7Sderaadt  *
17df930be7Sderaadt  * Redistribution and use in source and binary forms, with or without
18df930be7Sderaadt  * modification, are permitted provided that the following conditions
19df930be7Sderaadt  * are met:
20df930be7Sderaadt  * 1. Redistributions of source code must retain the above copyright
21df930be7Sderaadt  *    notice, this list of conditions and the following disclaimer.
22df930be7Sderaadt  * 2. Redistributions in binary form must reproduce the above copyright
23df930be7Sderaadt  *    notice, this list of conditions and the following disclaimer in the
24df930be7Sderaadt  *    documentation and/or other materials provided with the distribution.
2529295d1cSmillert  * 3. Neither the name of the University nor the names of its contributors
26df930be7Sderaadt  *    may be used to endorse or promote products derived from this software
27df930be7Sderaadt  *    without specific prior written permission.
28df930be7Sderaadt  *
29df930be7Sderaadt  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
30df930be7Sderaadt  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31df930be7Sderaadt  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32df930be7Sderaadt  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
33df930be7Sderaadt  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34df930be7Sderaadt  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
35df930be7Sderaadt  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36df930be7Sderaadt  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37df930be7Sderaadt  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
38df930be7Sderaadt  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
39df930be7Sderaadt  * SUCH DAMAGE.
40df930be7Sderaadt  *
41df930be7Sderaadt  *	@(#)bsd_audioreg.h	8.1 (Berkeley) 6/11/93
42df930be7Sderaadt  */
43df930be7Sderaadt 
44df930be7Sderaadt /*
45*d98f46d7Smiod  * Am79C30A direct registers
4607c262c1Sjmc  */
4707c262c1Sjmc 
48*d98f46d7Smiod #define AM7930_DREG_CR		0	/* command register (wo) */
49*d98f46d7Smiod #define AM7930_DREG_IR		0	/* interrupt register (ro) */
50*d98f46d7Smiod #define		AM7930_IR_DTTHRSH	0x01	/* D-channel TX empty */
51*d98f46d7Smiod #define		AM7930_IR_DRTHRSH	0x02	/* D-channel RX avail */
52*d98f46d7Smiod #define		AM7930_IR_DSRI		0x04	/* D-channel packet status */
53*d98f46d7Smiod #define		AM7930_IR_DERI		0x08	/* D-channel error */
54*d98f46d7Smiod #define		AM7930_IR_BBUFF		0x10	/* Bb or Bc byte avail/empty */
55*d98f46d7Smiod #define		AM7930_IR_LSRI		0x20	/* LIU status */
56*d98f46d7Smiod #define		AM7930_IR_DSR2I		0x40	/* D-channel buffer status */
57*d98f46d7Smiod #define		AM7930_IR_PPMF		0x80	/* Multiframe or PP */
58*d98f46d7Smiod #define AM7930_DREG_DR		1	/* data register (rw) */
59*d98f46d7Smiod #define AM7930_DREG_DSR1	2	/* D-channel status register 1 (ro) */
60*d98f46d7Smiod #define AM7930_DREG_DER		3	/* D-channel error register (ro) */
61*d98f46d7Smiod #define AM7930_DREG_DCTB	4	/* D-channel transmit register (wo) */
62*d98f46d7Smiod #define AM7930_DREG_DCRB	4	/* D-channel receive register (ro) */
63*d98f46d7Smiod #define AM7930_DREG_BBTB	5	/* Bb-channel transmit register (wo) */
64*d98f46d7Smiod #define AM7930_DREG_BBRB	5	/* Bb-channel receive register (ro) */
65*d98f46d7Smiod #define AM7930_DREG_BCTB	6	/* Bc-channel transmit register (wo) */
66*d98f46d7Smiod #define AM7930_DREG_BCRB	6	/* Bc-channel receive register (ro) */
67*d98f46d7Smiod #define AM7930_DREG_DSR2	7	/* D-channel status register 2 (ro) */
68*d98f46d7Smiod 
69*d98f46d7Smiod #define	AM7930_DREG_SIZE	8
70*d98f46d7Smiod 
7107c262c1Sjmc /*
72*d98f46d7Smiod  * Am79C30A indirect registers
73df930be7Sderaadt  */
74df930be7Sderaadt 
75*d98f46d7Smiod /* Initialisation registers */
76df930be7Sderaadt 
77*d98f46d7Smiod #define AM7930_IREG_INIT	0x21
78*d98f46d7Smiod #define AM7930_IREG_INIT2	0x20
79*d98f46d7Smiod /* power mode selection */
80*d98f46d7Smiod #define		AM7930_INIT_PMS_IDLE		0x00
81*d98f46d7Smiod #define		AM7930_INIT_PMS_ACTIVE		0x01
82*d98f46d7Smiod #define		AM7930_INIT_PMS_ACTIVE_DATA	0x02
83*d98f46d7Smiod #define		AM7930_INIT_PMS_MASK		0x03
84*d98f46d7Smiod /* interrupt selection */
85*d98f46d7Smiod #define		AM7930_INIT_INT_ENABLE		0x00
86*d98f46d7Smiod #define		AM7930_INIT_INT_DISABLE		0x04
87*d98f46d7Smiod #define		AM7930_INIT_INT_MASK		0x04
88*d98f46d7Smiod /* clock divider selection */
89*d98f46d7Smiod #define		AM7930_INIT_CDS_DIV2		0x00
90*d98f46d7Smiod #define		AM7930_INIT_CDS_DIV1		0x08
91*d98f46d7Smiod #define		AM7930_INIT_CDS_DIV4		0x10
92*d98f46d7Smiod #define		AM7930_INIT_CDS_DIV3		0x20
93*d98f46d7Smiod #define		AM7930_INIT_CDS_MASK		0x38
94*d98f46d7Smiod /* abort selection */
95*d98f46d7Smiod #define		AM7930_INIT_AS_RX		0x40
96*d98f46d7Smiod #define		AM7930_INIT_AS_NRX		0x00
97*d98f46d7Smiod #define		AM7930_INIT_AS_TX		0x80
98*d98f46d7Smiod #define		AM7930_INIT_AS_NTX		0x00
99*d98f46d7Smiod #define		AM7930_INIT_AS_MASK		0xc0
100df930be7Sderaadt 
101*d98f46d7Smiod /* Line Interface Unit registers */
102df930be7Sderaadt 
103*d98f46d7Smiod #define AM7930_IREG_LIU_LSR	0xa1	/* LIU status (ro) */
104*d98f46d7Smiod #define AM7930_IREG_LIU_LPR	0xa2	/* LIU priority (rw) */
105*d98f46d7Smiod #define AM7930_IREG_LIU_LMR1	0xa3	/* LIU mode register 1 (rw) */
106*d98f46d7Smiod #define AM7930_IREG_LIU_LMR2	0xa4	/* LIU mode register 2 (rw) */
107*d98f46d7Smiod #define AM7930_IREG_LIU_2_4	0xa5
108*d98f46d7Smiod #define AM7930_IREG_LIU_MF	0xa6	/* Multiframe (rw) */
109*d98f46d7Smiod #define AM7930_IREG_LIU_MFSB	0xa7	/* Multiframe S-bit/status (ro) */
110*d98f46d7Smiod #define AM7930_IREG_LIU_MFQB	0xa8	/* Multiframe Q-bit buffer (wo) */
111df930be7Sderaadt 
112*d98f46d7Smiod /* Multiplexer registers */
113df930be7Sderaadt 
114*d98f46d7Smiod #define AM7930_IREG_MUX_MCR1	0x41	/* MUX command register 1 (rw) */
115*d98f46d7Smiod #define AM7930_IREG_MUX_MCR2	0x42	/* MUX command register 2 (rw) */
116*d98f46d7Smiod #define AM7930_IREG_MUX_MCR3	0x43	/* MUX command register 3 (rw) */
117*d98f46d7Smiod #define		AM7930_MCRCHAN_NC		0x00
118*d98f46d7Smiod #define		AM7930_MCRCHAN_B1		0x01
119*d98f46d7Smiod #define		AM7930_MCRCHAN_B2		0x02
120*d98f46d7Smiod #define		AM7930_MCRCHAN_BA		0x03
121*d98f46d7Smiod #define		AM7930_MCRCHAN_BB		0x04
122*d98f46d7Smiod #define		AM7930_MCRCHAN_BC		0x05
123*d98f46d7Smiod #define		AM7930_MCRCHAN_BD		0x06
124*d98f46d7Smiod #define		AM7930_MCRCHAN_BE		0x07
125*d98f46d7Smiod #define		AM7930_MCRCHAN_BF		0x08
126*d98f46d7Smiod #define AM7930_IREG_MUX_MCR4	0x44	/* MUX command register 4 (rw) */
127*d98f46d7Smiod #define		AM7930_MCR4_INT_ENABLE		(1 << 3)
128*d98f46d7Smiod #define		AM7930_MCR4_SWAPBB		(1 << 4)
129*d98f46d7Smiod #define		AM7930_MCR4_SWAPBC		(1 << 5)
130*d98f46d7Smiod #define AM7930_IREG_MUX_1_4	0x45
131df930be7Sderaadt 
132*d98f46d7Smiod /* Main Audio Processor registers */
133*d98f46d7Smiod 
134*d98f46d7Smiod #define AM7930_IREG_MAP_X	0x61	/* X filter coefficient (rw) */
135*d98f46d7Smiod #define AM7930_IREG_MAP_R	0x62	/* R filter coefficient (rw) */
136*d98f46d7Smiod #define AM7930_IREG_MAP_GX	0x63	/* GX gain coefficient (rw) */
137*d98f46d7Smiod #define AM7930_IREG_MAP_GR	0x64	/* GR gain coefficient (rw) */
138*d98f46d7Smiod #define AM7930_IREG_MAP_GER	0x65	/* GER gain coefficient (rw) */
139*d98f46d7Smiod #define AM7930_IREG_MAP_STG	0x66	/* Sidetone gain coefficient (rw) */
140*d98f46d7Smiod #define AM7930_IREG_MAP_FTGR	0x67	/* Frequency tone generator 1,2 (rw) */
141*d98f46d7Smiod #define AM7930_IREG_MAP_ATGR	0x68	/* Amplitude tone generator 1,2 (rw) */
142*d98f46d7Smiod #define AM7930_IREG_MAP_MMR1	0x69	/* MAP mode register 1 (rw) */
143*d98f46d7Smiod #define		AM7930_MMR1_ALAW	0x01
144*d98f46d7Smiod #define		AM7930_MMR1_GX		0x02
145*d98f46d7Smiod #define		AM7930_MMR1_GR		0x04
146*d98f46d7Smiod #define		AM7930_MMR1_GER		0x08
147*d98f46d7Smiod #define		AM7930_MMR1_X		0x10
148*d98f46d7Smiod #define		AM7930_MMR1_R		0x20
149*d98f46d7Smiod #define		AM7930_MMR1_STG		0x40
150*d98f46d7Smiod #define		AM7930_MMR1_LOOP	0x80
151*d98f46d7Smiod #define AM7930_IREG_MAP_MMR2	0x6a	/* MAP mode register 2 (rw) */
152*d98f46d7Smiod #define		AM7930_MMR2_AINB	0x01
153*d98f46d7Smiod #define		AM7930_MMR2_LS		0x02
154*d98f46d7Smiod #define		AM7930_MMR2_DTMF	0x04
155*d98f46d7Smiod #define		AM7930_MMR2_GEN		0x08
156*d98f46d7Smiod #define		AM7930_MMR2_RNG		0x10
157*d98f46d7Smiod #define		AM7930_MMR2_DIS_HPF	0x20
158*d98f46d7Smiod #define		AM7930_MMR2_DIS_AZ	0x40
159*d98f46d7Smiod #define AM7930_IREG_MAP_1_10	0x6b
160*d98f46d7Smiod #define AM7930_IREG_MAP_MMR3	0x6c	/* MAP mode register 3 (rw) */
161*d98f46d7Smiod #define		AM7930_MMR3_BOTH	0x02
162*d98f46d7Smiod #define		AM7930_MMR3_MBZ		0x01
163*d98f46d7Smiod #define		AM7930_MMR3_GA		0x70
164*d98f46d7Smiod #define		AM7930_MMR3_GA0		0x00
165*d98f46d7Smiod #define		AM7930_MMR3_GA6		0x10
166*d98f46d7Smiod #define		AM7930_MMR3_GA12	0x20
167*d98f46d7Smiod #define		AM7930_MMR3_GA18	0x30
168*d98f46d7Smiod #define		AM7930_MMR3_GA24	0x40
169*d98f46d7Smiod #define		AM7930_MMR3_MUTE	0x08
170*d98f46d7Smiod #define		AM7930_MMR3_STR		0x01
171*d98f46d7Smiod #define AM7930_IREG_MAP_STRA	0x6d	/* Second tone ringer amplitude (rw) */
172*d98f46d7Smiod #define AM7930_IREG_MAP_STRF	0x6e	/* Second tone ringer frequency (rw) */
173*d98f46d7Smiod 
174*d98f46d7Smiod /* Data Link Controller registers */
175*d98f46d7Smiod 
176*d98f46d7Smiod #define AM7930_IREG_DLC_FRAR123	0x81	/* First rcvd byte address 123 (rw) */
177*d98f46d7Smiod #define AM7930_IREG_DLC_SRAR123 0x82	/* Second rcvd byte address 123 (rw) */
178*d98f46d7Smiod #define AM7930_IREG_DLC_TAR	0x83	/* Transmit address (rw) */
179*d98f46d7Smiod #define AM7930_IREG_DLC_DRLR	0x84	/* D-channel receive byte limit (rw) */
180*d98f46d7Smiod #define AM7930_IREG_DLC_DTCR	0x85	/* D-channel transmit byte count (rw)*/
181*d98f46d7Smiod #define AM7930_IREG_DLC_DMR1	0x86	/* D-channel mode register 1 (rw) */
182*d98f46d7Smiod #define AM7930_IREG_DLC_DMR2	0x87	/* D-channel mode register 2 (rw) */
183*d98f46d7Smiod #define AM7930_IREG_DLC_1_7	0x88
184*d98f46d7Smiod #define AM7930_IREG_DLC_DRCR	0x89	/* D-channel receive byte count (ro) */
185*d98f46d7Smiod #define AM7930_IREG_DLC_RNGR1	0x8a	/* Random number generator LSB (rw) */
186*d98f46d7Smiod #define AM7930_IREG_DLC_RNGR2	0x8b	/* Random number generator MSB (rw) */
187*d98f46d7Smiod #define AM7930_IREG_DLC_FRAR4	0x8c	/* First rcvd byte address 4 (rw) */
188*d98f46d7Smiod #define AM7930_IREG_DLC_SRAR4	0x8d	/* Second rcvd byte address 4 (rw) */
189*d98f46d7Smiod #define AM7930_IREG_DLC_DMR3	0x8e	/* D-channel mode register 3 (rw) */
190*d98f46d7Smiod #define AM7930_IREG_DLC_DMR4	0x8f	/* D-channel mode register 4 (rw) */
191*d98f46d7Smiod #define AM7930_IREG_DLC_12_15	0x90
192*d98f46d7Smiod #define AM7930_IREG_DLC_ASR	0x91	/* Address status register (ro) */
193*d98f46d7Smiod #define AM7930_IREG_DLC_EFCR	0x92	/* Extended FIFO control (rw) */
194*d98f46d7Smiod 
195*d98f46d7Smiod /* Peripheral Port registers */
196*d98f46d7Smiod 
197*d98f46d7Smiod #define AM7930_IREG_PP_PPCR1	0xc0	/* Peripheral port control 1 (rw) */
198*d98f46d7Smiod #define		AM7930_PPCR1_DISABLE	0x00
199*d98f46d7Smiod #define		AM7930_PPCR1_SBP	0x01
200*d98f46d7Smiod #define		AM7930_PPCR1_IOM2SL	0x10
201*d98f46d7Smiod #define		AM7930_PPCR1_IOM2MA	0x11
202*d98f46d7Smiod #define AM7930_IREG_PP_PPSR	0xc1	/* Peripheral port control 2 (ro) */
203*d98f46d7Smiod #define AM7930_IREG_PP_PPIER	0xc2	/* Peripheral port intr enable (rw) */
204*d98f46d7Smiod #define AM7930_IREG_PP_MTDR	0xc3	/* monitor transmit data (wo) */
205*d98f46d7Smiod #define AM7930_IREG_PP_MRDR	0xc3	/* monitor receive data (ro) */
206*d98f46d7Smiod #define AM7930_IREG_PP_CITDR0	0xc4	/* C/I transmit data register 0 (wo) */
207*d98f46d7Smiod #define AM7930_IREG_PP_CIRDR0	0xc4	/* C/I receive data register 0 (ro) */
208*d98f46d7Smiod #define AM7930_IREG_PP_CITDR1	0xc5	/* C/I transmit data register 1 (wo) */
209*d98f46d7Smiod #define AM7930_IREG_PP_CIRDR1	0xc5	/* C/I receive data register 1 (ro) */
210*d98f46d7Smiod #define AM7930_IREG_PP_PPCR2	0xc8	/* Peripheral port control 2 (rw) */
211