xref: /netbsd-src/sys/arch/mips/alchemy/dev/aupscreg.h (revision 3bd9bd2f64548ddd28da6dff96aa43c090c663c8)
1*3bd9bd2fSgdamore /* $NetBSD: aupscreg.h,v 1.3 2006/10/02 07:32:16 gdamore Exp $ */
2ac76a40eSshige 
3ac76a40eSshige /*-
4ac76a40eSshige  * Copyright (c) 2006 Shigeyuki Fukushima.
5ac76a40eSshige  * All rights reserved.
6ac76a40eSshige  *
7ac76a40eSshige  * Written by Shigeyuki Fukushima.
8ac76a40eSshige  *
9ac76a40eSshige  * Redistribution and use in source and binary forms, with or without
10ac76a40eSshige  * modification, are permitted provided that the following conditions
11ac76a40eSshige  * are met:
12ac76a40eSshige  * 1. Redistributions of source code must retain the above copyright
13ac76a40eSshige  *    notice, this list of conditions and the following disclaimer.
14ac76a40eSshige  * 2. Redistributions in binary form must reproduce the above
15ac76a40eSshige  *    copyright notice, this list of conditions and the following
16ac76a40eSshige  *    disclaimer in the documentation and/or other materials provided
17ac76a40eSshige  *    with the distribution.
18ac76a40eSshige  * 3. The name of the author may not be used to endorse or promote
19ac76a40eSshige  *    products derived from this software without specific prior
20ac76a40eSshige  *    written permission.
21ac76a40eSshige  *
22ac76a40eSshige  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
23ac76a40eSshige  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
24ac76a40eSshige  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25ac76a40eSshige  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
26ac76a40eSshige  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27ac76a40eSshige  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
28ac76a40eSshige  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29ac76a40eSshige  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
30ac76a40eSshige  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
31ac76a40eSshige  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
32ac76a40eSshige  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33ac76a40eSshige  */
34ac76a40eSshige 
35ac76a40eSshige #ifndef _MIPS_ALCHEMY_DEV_AUPSCREG_H_
36ac76a40eSshige #define	_MIPS_ALCHEMY_DEV_AUPSCREG_H_
37ac76a40eSshige 
38ac76a40eSshige /*
39ac76a40eSshige  * PSC registers (offset from PSCn_BASE).
40ac76a40eSshige  */
41ac76a40eSshige 
42ac76a40eSshige /* psc_sel: PSC clock and protocol select
43ac76a40eSshige  *   CLK [5:4]
44ac76a40eSshige  *     00 = pscn_intclk (for SPI, SMBus, I2S Master[PSC3 Only])
45ac76a40eSshige  *     01 = PSCn_EXTCLK (for SPI, SMBus, I2S Master)
46ac76a40eSshige  *     10 = PSCn_CLK    (for AC97, I2S Slave)
47ac76a40eSshige  *     11 = Reserved
48ac76a40eSshige  *   PS [2:0]
49ac76a40eSshige  *     000 = Protocol disable
50ac76a40eSshige  *     001 = Reserved
51ac76a40eSshige  *     010 = SPI mode
52ac76a40eSshige  *     011 = I2S mode
53ac76a40eSshige  *     100 = AC97 mode
54ac76a40eSshige  *     101 = SMBus mode
55ac76a40eSshige  *     11x = Reserved
56ac76a40eSshige  */
57ac76a40eSshige #define	AUPSC_SEL			0x00	/* R/W */
58ac76a40eSshige #  define	AUPSC_SEL_CLK(x)	((x & 0x03) << 4) /* CLK */
59ac76a40eSshige #  define	AUPSC_SEL_PS(x)		(x & 0x07)
60ac76a40eSshige #  define	AUPSC_SEL_DISABLE	0
61ac76a40eSshige #  define	AUPSC_SEL_SPI		2
62ac76a40eSshige #  define	AUPSC_SEL_I2S		3
63ac76a40eSshige #  define	AUPSC_SEL_AC97		4
64ac76a40eSshige #  define	AUPSC_SEL_SMBUS		5
65ac76a40eSshige 
66ac76a40eSshige /* psc_ctrl: PSC control
67ac76a40eSshige  *  ENA [1:0]
68ac76a40eSshige  *    00 = Disable/Reset
69ac76a40eSshige  *    01 = Reserved
70ac76a40eSshige  *    10 = Suspend
714990fa74Sshige  *    11 = Enable
72ac76a40eSshige  */
73ac76a40eSshige #define	AUPSC_CTRL			0x04	/* R/W */
74ac76a40eSshige #  define	AUPSC_CTRL_ENA(x)	(x & 0x03)
754990fa74Sshige #  define	AUPSC_CTRL_DISABLE	0
764990fa74Sshige #  define	AUPSC_CTRL_SUSPEND	2
774990fa74Sshige #  define	AUPSC_CTRL_ENABLE	3
78ac76a40eSshige 
79ac76a40eSshige /* 0x0008 - 0x002F: Protocol-specific registers */
80ac76a40eSshige 
81*3bd9bd2fSgdamore /* psc_stat: PSC status
82*3bd9bd2fSgdamore  *  DI [1]
83*3bd9bd2fSgdamore  *    1 = Device interrupt
84*3bd9bd2fSgdamore  *  DR [1]
85*3bd9bd2fSgdamore  *    1 = Device ready
86*3bd9bd2fSgdamore  *  SR [0]
87*3bd9bd2fSgdamore  *    1 = PSC ready
88*3bd9bd2fSgdamore  *  all other bits a are protocol specific
89*3bd9bd2fSgdamore  */
90*3bd9bd2fSgdamore #define AUPSC_STAT			0x14
91*3bd9bd2fSgdamore #  define	AUPSC_STAT_SR		1
92*3bd9bd2fSgdamore #  define	AUPSC_STAT_DR		2
93*3bd9bd2fSgdamore #  define	AUPSC_STAT_DI		4
94ac76a40eSshige /* PSC registers size */
95ac76a40eSshige #define	AUPSC_SIZE			0x2f
96ac76a40eSshige 
97ac76a40eSshige 
98ac76a40eSshige /*
99ac76a40eSshige  * SPI Protocol registers
100ac76a40eSshige  */
101ac76a40eSshige #define	AUPSC_SPICFG			0x08	/* R/W */
102ac76a40eSshige #define	AUPSC_SPIMSK			0x0c	/* R/W */
103ac76a40eSshige #define	AUPSC_SPIPCR			0x10	/* R/W */
104ac76a40eSshige #define	AUPSC_SPISTAT			0x14	/* Read only */
105ac76a40eSshige #define	AUPSC_SPIEVNT			0x18	/* R/W */
106ac76a40eSshige #define	AUPSC_SPITXRX			0x1c	/* R/W */
107ac76a40eSshige 
108ac76a40eSshige /*
109ac76a40eSshige  * I2S Protocol registers
110ac76a40eSshige  */
111ac76a40eSshige #define	AUPSC_I2SCFG			0x08	/* R/W */
112ac76a40eSshige #define	AUPSC_I2SMSK			0x0c	/* R/W */
113ac76a40eSshige #define	AUPSC_I2SPCR			0x10	/* R/W */
114ac76a40eSshige #define	AUPSC_I2SSTAT			0x14	/* Read only */
115ac76a40eSshige #define	AUPSC_I2SEVNT			0x18	/* R/W */
116ac76a40eSshige #define	AUPSC_I2STXRX			0x1c	/* R/W */
117ac76a40eSshige #define	AUPSC_I2SUDF			0x20	/* R/W */
118ac76a40eSshige 
119ac76a40eSshige /*
120ac76a40eSshige  * AC97 Protocol registers
121ac76a40eSshige  */
122ac76a40eSshige #define	AUPSC_AC97CFG			0x08	/* R/W */
123ac76a40eSshige #define	AUPSC_AC97MSK			0x0c	/* R/W */
124ac76a40eSshige #define	AUPSC_AC97PCR			0x10	/* R/W */
125ac76a40eSshige #define	AUPSC_AC97STAT			0x14	/* Read only */
126ac76a40eSshige #define	AUPSC_AC97EVNT			0x18	/* R/W */
127ac76a40eSshige #define	AUPSC_AC97TXRX			0x1c	/* R/W */
128ac76a40eSshige #define	AUPSC_AC97CDC			0x20	/* R/W */
129ac76a40eSshige #define	AUPSC_AC97RST			0x24	/* R/W */
130ac76a40eSshige #define	AUPSC_AC97GPO			0x28	/* R/W */
131ac76a40eSshige #define	AUPSC_AC97GPI			0x2c	/* Read only */
132ac76a40eSshige 
133ac76a40eSshige /*
134ac76a40eSshige  * SMBus Protocol registers
135ac76a40eSshige  */
136ac76a40eSshige #define	AUPSC_SMBCFG			0x08	/* R/W */
137ac76a40eSshige #define	AUPSC_SMBMSK			0x0c	/* R/W */
138ac76a40eSshige #define	AUPSC_SMBPCR			0x10	/* R/W */
139ac76a40eSshige #define	AUPSC_SMBSTAT			0x14	/* Read only */
140ac76a40eSshige #define	AUPSC_SMBEVNT			0x18	/* R/W */
141ac76a40eSshige #define	AUPSC_SMBTXRX			0x1c	/* R/W */
142ac76a40eSshige #define	AUPSC_SMBTMR			0x20	/* R/W */
143ac76a40eSshige 
144ac76a40eSshige #endif	/* _MIPS_ALCHEMY_DEV_AUPSCREG_H_ */
145