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