summaryrefslogtreecommitdiff
path: root/sys/dev/ic/am7930reg.h
blob: 96a223082f9dee0943564d65ea4067e90c22d827 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
/*	$OpenBSD: am7930reg.h,v 1.6 2011/09/03 20:03:29 miod Exp $	*/
/* $NetBSD: am7930reg.h,v 1.7 2005/12/11 12:21:25 christos Exp $ */

/*
 * Copyright (c) 1992, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * This software was developed by the Computer Systems Engineering group
 * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
 * contributed to Berkeley.
 *
 * All advertising materials mentioning features or use of this software
 * must display the following acknowledgement:
 *	This product includes software developed by the University of
 *	California, Lawrence Berkeley Laboratory.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)bsd_audioreg.h	8.1 (Berkeley) 6/11/93
 */

/*
 * Am79C30A direct registers
 */

#define AM7930_DREG_CR		0	/* command register (wo) */
#define AM7930_DREG_IR		0	/* interrupt register (ro) */
#define		AM7930_IR_DTTHRSH	0x01	/* D-channel TX empty */
#define		AM7930_IR_DRTHRSH	0x02	/* D-channel RX avail */
#define		AM7930_IR_DSRI		0x04	/* D-channel packet status */
#define		AM7930_IR_DERI		0x08	/* D-channel error */
#define		AM7930_IR_BBUFF		0x10	/* Bb or Bc byte avail/empty */
#define		AM7930_IR_LSRI		0x20	/* LIU status */
#define		AM7930_IR_DSR2I		0x40	/* D-channel buffer status */
#define		AM7930_IR_PPMF		0x80	/* Multiframe or PP */
#define AM7930_DREG_DR		1	/* data register (rw) */
#define AM7930_DREG_DSR1	2	/* D-channel status register 1 (ro) */
#define AM7930_DREG_DER		3	/* D-channel error register (ro) */
#define AM7930_DREG_DCTB	4	/* D-channel transmit register (wo) */
#define AM7930_DREG_DCRB	4	/* D-channel receive register (ro) */
#define AM7930_DREG_BBTB	5	/* Bb-channel transmit register (wo) */
#define AM7930_DREG_BBRB	5	/* Bb-channel receive register (ro) */
#define AM7930_DREG_BCTB	6	/* Bc-channel transmit register (wo) */
#define AM7930_DREG_BCRB	6	/* Bc-channel receive register (ro) */
#define AM7930_DREG_DSR2	7	/* D-channel status register 2 (ro) */

#define	AM7930_DREG_SIZE	8

/*
 * Am79C30A indirect registers
 */

/* Initialisation registers */

#define AM7930_IREG_INIT	0x21
#define AM7930_IREG_INIT2	0x20
/* power mode selection */
#define		AM7930_INIT_PMS_IDLE		0x00
#define		AM7930_INIT_PMS_ACTIVE		0x01
#define		AM7930_INIT_PMS_ACTIVE_DATA	0x02
#define		AM7930_INIT_PMS_MASK		0x03
/* interrupt selection */
#define		AM7930_INIT_INT_ENABLE		0x00
#define		AM7930_INIT_INT_DISABLE		0x04
#define		AM7930_INIT_INT_MASK		0x04
/* clock divider selection */
#define		AM7930_INIT_CDS_DIV2		0x00
#define		AM7930_INIT_CDS_DIV1		0x08
#define		AM7930_INIT_CDS_DIV4		0x10
#define		AM7930_INIT_CDS_DIV3		0x20
#define		AM7930_INIT_CDS_MASK		0x38
/* abort selection */
#define		AM7930_INIT_AS_RX		0x40
#define		AM7930_INIT_AS_NRX		0x00
#define		AM7930_INIT_AS_TX		0x80
#define		AM7930_INIT_AS_NTX		0x00
#define		AM7930_INIT_AS_MASK		0xc0

/* Line Interface Unit registers */

#define AM7930_IREG_LIU_LSR	0xa1	/* LIU status (ro) */
#define AM7930_IREG_LIU_LPR	0xa2	/* LIU priority (rw) */
#define AM7930_IREG_LIU_LMR1	0xa3	/* LIU mode register 1 (rw) */
#define AM7930_IREG_LIU_LMR2	0xa4	/* LIU mode register 2 (rw) */
#define AM7930_IREG_LIU_2_4	0xa5
#define AM7930_IREG_LIU_MF	0xa6	/* Multiframe (rw) */
#define AM7930_IREG_LIU_MFSB	0xa7	/* Multiframe S-bit/status (ro) */
#define AM7930_IREG_LIU_MFQB	0xa8	/* Multiframe Q-bit buffer (wo) */

/* Multiplexer registers */

#define AM7930_IREG_MUX_MCR1	0x41	/* MUX command register 1 (rw) */
#define AM7930_IREG_MUX_MCR2	0x42	/* MUX command register 2 (rw) */
#define AM7930_IREG_MUX_MCR3	0x43	/* MUX command register 3 (rw) */
#define		AM7930_MCRCHAN_NC		0x00
#define		AM7930_MCRCHAN_B1		0x01
#define		AM7930_MCRCHAN_B2		0x02
#define		AM7930_MCRCHAN_BA		0x03
#define		AM7930_MCRCHAN_BB		0x04
#define		AM7930_MCRCHAN_BC		0x05
#define		AM7930_MCRCHAN_BD		0x06
#define		AM7930_MCRCHAN_BE		0x07
#define		AM7930_MCRCHAN_BF		0x08
#define AM7930_IREG_MUX_MCR4	0x44	/* MUX command register 4 (rw) */
#define		AM7930_MCR4_INT_ENABLE		(1 << 3)
#define		AM7930_MCR4_SWAPBB		(1 << 4)
#define		AM7930_MCR4_SWAPBC		(1 << 5)
#define AM7930_IREG_MUX_1_4	0x45

/* Main Audio Processor registers */

#define AM7930_IREG_MAP_X	0x61	/* X filter coefficient (rw) */
#define AM7930_IREG_MAP_R	0x62	/* R filter coefficient (rw) */
#define AM7930_IREG_MAP_GX	0x63	/* GX gain coefficient (rw) */
#define AM7930_IREG_MAP_GR	0x64	/* GR gain coefficient (rw) */
#define AM7930_IREG_MAP_GER	0x65	/* GER gain coefficient (rw) */
#define AM7930_IREG_MAP_STG	0x66	/* Sidetone gain coefficient (rw) */
#define AM7930_IREG_MAP_FTGR	0x67	/* Frequency tone generator 1,2 (rw) */
#define AM7930_IREG_MAP_ATGR	0x68	/* Amplitude tone generator 1,2 (rw) */
#define AM7930_IREG_MAP_MMR1	0x69	/* MAP mode register 1 (rw) */
#define		AM7930_MMR1_ALAW	0x01
#define		AM7930_MMR1_GX		0x02
#define		AM7930_MMR1_GR		0x04
#define		AM7930_MMR1_GER		0x08
#define		AM7930_MMR1_X		0x10
#define		AM7930_MMR1_R		0x20
#define		AM7930_MMR1_STG		0x40
#define		AM7930_MMR1_LOOP	0x80
#define AM7930_IREG_MAP_MMR2	0x6a	/* MAP mode register 2 (rw) */
#define		AM7930_MMR2_AINB	0x01
#define		AM7930_MMR2_LS		0x02
#define		AM7930_MMR2_DTMF	0x04
#define		AM7930_MMR2_GEN		0x08
#define		AM7930_MMR2_RNG		0x10
#define		AM7930_MMR2_DIS_HPF	0x20
#define		AM7930_MMR2_DIS_AZ	0x40
#define AM7930_IREG_MAP_1_10	0x6b
#define AM7930_IREG_MAP_MMR3	0x6c	/* MAP mode register 3 (rw) */
#define		AM7930_MMR3_BOTH	0x02
#define		AM7930_MMR3_MBZ		0x01
#define		AM7930_MMR3_GA		0x70
#define		AM7930_MMR3_GA0		0x00
#define		AM7930_MMR3_GA6		0x10
#define		AM7930_MMR3_GA12	0x20
#define		AM7930_MMR3_GA18	0x30
#define		AM7930_MMR3_GA24	0x40
#define		AM7930_MMR3_MUTE	0x08
#define		AM7930_MMR3_STR		0x01
#define AM7930_IREG_MAP_STRA	0x6d	/* Second tone ringer amplitude (rw) */
#define AM7930_IREG_MAP_STRF	0x6e	/* Second tone ringer frequency (rw) */

/* Data Link Controller registers */

#define AM7930_IREG_DLC_FRAR123	0x81	/* First rcvd byte address 123 (rw) */
#define AM7930_IREG_DLC_SRAR123 0x82	/* Second rcvd byte address 123 (rw) */
#define AM7930_IREG_DLC_TAR	0x83	/* Transmit address (rw) */
#define AM7930_IREG_DLC_DRLR	0x84	/* D-channel receive byte limit (rw) */
#define AM7930_IREG_DLC_DTCR	0x85	/* D-channel transmit byte count (rw)*/
#define AM7930_IREG_DLC_DMR1	0x86	/* D-channel mode register 1 (rw) */
#define AM7930_IREG_DLC_DMR2	0x87	/* D-channel mode register 2 (rw) */
#define AM7930_IREG_DLC_1_7	0x88
#define AM7930_IREG_DLC_DRCR	0x89	/* D-channel receive byte count (ro) */
#define AM7930_IREG_DLC_RNGR1	0x8a	/* Random number generator LSB (rw) */
#define AM7930_IREG_DLC_RNGR2	0x8b	/* Random number generator MSB (rw) */
#define AM7930_IREG_DLC_FRAR4	0x8c	/* First rcvd byte address 4 (rw) */
#define AM7930_IREG_DLC_SRAR4	0x8d	/* Second rcvd byte address 4 (rw) */
#define AM7930_IREG_DLC_DMR3	0x8e	/* D-channel mode register 3 (rw) */
#define AM7930_IREG_DLC_DMR4	0x8f	/* D-channel mode register 4 (rw) */
#define AM7930_IREG_DLC_12_15	0x90
#define AM7930_IREG_DLC_ASR	0x91	/* Address status register (ro) */
#define AM7930_IREG_DLC_EFCR	0x92	/* Extended FIFO control (rw) */

/* Peripheral Port registers */

#define AM7930_IREG_PP_PPCR1	0xc0	/* Peripheral port control 1 (rw) */
#define		AM7930_PPCR1_DISABLE	0x00
#define		AM7930_PPCR1_SBP	0x01
#define		AM7930_PPCR1_IOM2SL	0x10
#define		AM7930_PPCR1_IOM2MA	0x11
#define AM7930_IREG_PP_PPSR	0xc1	/* Peripheral port control 2 (ro) */
#define AM7930_IREG_PP_PPIER	0xc2	/* Peripheral port intr enable (rw) */
#define AM7930_IREG_PP_MTDR	0xc3	/* monitor transmit data (wo) */
#define AM7930_IREG_PP_MRDR	0xc3	/* monitor receive data (ro) */
#define AM7930_IREG_PP_CITDR0	0xc4	/* C/I transmit data register 0 (wo) */
#define AM7930_IREG_PP_CIRDR0	0xc4	/* C/I receive data register 0 (ro) */
#define AM7930_IREG_PP_CITDR1	0xc5	/* C/I transmit data register 1 (wo) */
#define AM7930_IREG_PP_CIRDR1	0xc5	/* C/I receive data register 1 (ro) */
#define AM7930_IREG_PP_PPCR2	0xc8	/* Peripheral port control 2 (rw) */