1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 /* 26 * Purpose: Definitions for the Creative/Ensoniq AudioPCI97 driver. 27 */ 28 /* 29 * This file is part of Open Sound System 30 * 31 * Copyright (C) 4Front Technologies 1996-2008. 32 * 33 * This software is released under CDDL 1.0 source license. 34 * See the COPYING file included in the main directory of this source 35 * distribution for the license terms and conditions. 36 */ 37 38 #ifndef _AUDIOPCI_H 39 #define _AUDIOPCI_H 40 41 /* CONCERT PCI-SIG defines */ 42 #define CONC_PCI_VENDID 0x1274U 43 #define CONC_PCI_DEVID 0x5000U 44 45 /* used for the development board only!! */ 46 #define CONC_DEV_PCI_VENDID 0x1274U 47 #define CONC_DEV_PCI_DEVID 0x5000U 48 49 50 /* 51 * CONCERT Registers 52 */ 53 54 #define DAC_CLOCK_DIVIDE 22579200UL /* DAC2 (CODEC) clock divide */ 55 56 /* Concert direct register offset defines */ 57 58 #define CONC_bDEVCTL_OFF 0x00 /* Device control/enable */ 59 #define CONC_bMISCCTL_OFF 0x01 /* Miscellaneous control */ 60 #define CONC_wDACRATE_OFF 0x02 /* CODEC clock divider for PLL */ 61 #define CONC_dSTATUS_OFF 0x04 /* long status register */ 62 #define CONC_bCODECSTAT_OFF 0x05 /* CODEC interface status */ 63 #define CONC_bUARTDATA_OFF 0x08 /* UART data R/W - read clears RX int */ 64 #define CONC_bUARTCSTAT_OFF 0x09 /* UART control and status */ 65 #define CONC_bMEMPAGE_OFF 0x0c /* Memory page select */ 66 #define CONC_wCODECCTL_OFF 0x10 /* CODEC control - word-write-only */ 67 #define CONC_wNMISTAT_OFF 0x18 /* Legacy NMI status */ 68 #define CONC_bNMIENA_OFF 0x1a /* Legacy NMI enable */ 69 #define CONC_bNMICTL_OFF 0x1b /* Legacy control */ 70 #define CONC_bSERFMT_OFF 0x20 /* Serial device control */ 71 #define CONC_bSERCTL_OFF 0x21 /* Serial device format */ 72 #define CONC_bSKIPC_OFF 0x22 /* Skip counts for DAC (wave) */ 73 #define CONC_wSYNIC_OFF 0x24 /* Synth int count in sample frames */ 74 #define CONC_wSYNCIC_OFF 0x26 /* Synth current int count */ 75 #define CONC_wDACIC_OFF 0x28 /* DAC int count in sample frames */ 76 #define CONC_wDACCIC_OFF 0x2a /* DAC current int count */ 77 #define CONC_wADCIC_OFF 0x2c /* ADC int count in sample frames */ 78 #define CONC_wADCCIC_OFF 0x2e /* ADC current int count */ 79 #define CONC_MEMBASE_OFF 0x30 /* Memory window base - 16 bytes */ 80 81 /* Device Control defines */ 82 #define CONC_DEVCTL_SERR_DIS 0x01 /* internal PCI serr bus enable */ 83 #define CONC_DEVCTL_CODEC_EN 0x02 /* CoDec Enable */ 84 #define CONC_DEVCTL_JSTICK_EN 0x04 /* Joystick Enable */ 85 #define CONC_DEVCTL_UART_EN 0x08 /* UART Enable */ 86 #define CONC_DEVCTL_ADC_EN 0x10 /* ADC Enable (record) */ 87 #define CONC_DEVCTL_DAC_EN 0x20 /* DAC Enable (playback) */ 88 #define CONC_DEVCTL_SYN_EN 0x40 /* Synth Enable */ 89 #define CONC_DEVCTL_MICBIAS 0x4000L /* mic bias switch */ 90 91 /* Misc Control defines */ 92 #define CONC_MISCCTL_MUTE 0x01 /* XTL0 wired to mute */ 93 #define CONC_MISCCTL_CCB_INTRM 0x04 /* CCB interrupt mask */ 94 #define CONC_MISCCTL_SYN_5KHZ 0x00 /* synth: 5512 Hz */ 95 #define CONC_MISCCTL_SYN_11KHZ 0x10 /* synth: 11025 Hz */ 96 #define CONC_MISCCTL_SYN_22KHZ 0x20 /* synth: 22050 Hz */ 97 #define CONC_MISCCTL_SYN_44KHZ 0x30 /* synth: 44100 Hz */ 98 99 /* Interrupt Status defines */ 100 #define CONC_INTSTAT_ADCINT 0x01 /* A/D interrupt pending bit */ 101 #define CONC_INTSTAT_DACINT 0x02 /* DAC interrupt pending bit */ 102 #define CONC_INTSTAT_SYNINT 0x04 /* synth interrupt pending bit */ 103 #define CONC_INTSTAT_UARTINT 0x08 /* UART interrupt pending bit */ 104 #define CONC_INTSTAT_PENDING 0x80000000 105 /* this bit set high while'st we have an interrupt */ 106 107 /* Codec Status defines */ 108 #define CONC_CSTAT_CSTAT 0x4 109 #define CONC_CSTAT_CBUSY 0x2 110 #define CONC_CSTAT_CWRIP 0x1 111 112 /* SERFMT PCM format defines */ 113 #define CONC_PCM_SYN_STEREO 0x01 114 #define CONC_PCM_SYN_16BIT 0x02 115 #define CONC_PCM_DAC_STEREO 0x04 116 #define CONC_PCM_DAC_16BIT 0x08 117 #define CONC_PCM_ADC_STEREO 0x10 118 #define CONC_PCM_ADC_16BIT 0x20 119 120 /* Serial Control defines */ 121 #define CONC_SERCTL_SYNIE 0x01 /* synth int enable */ 122 #define CONC_SERCTL_DACIE 0x02 /* playback interrupt enable */ 123 #define CONC_SERCTL_ADCIE 0x04 /* record interrupt enable */ 124 #define CONC_SERCTL_SYNPAUSE 0x10 /* playback pause */ 125 126 /* Concert memory page-banked register offset defines */ 127 #define CONC_dSYNPADDR_OFF 0x30 /* Synth host frame PCI phys addr */ 128 #define CONC_wSYNFC_OFF 0x34 /* Synth host frame count in DWORDS */ 129 #define CONC_wSYNCFC_OFF 0x36 /* Synth host current frame count */ 130 #define CONC_dDACPADDR_OFF 0x38 /* DAC host frame PCI phys addr */ 131 #define CONC_wDACFC_OFF 0x3c /* DAC host frame count in DWORDS */ 132 #define CONC_wDACCFC_OFF 0x3e /* DAC host current frame count */ 133 #define CONC_dADCPADDR_OFF 0x30 /* ADC host frame PCI phys addr */ 134 #define CONC_wADCFC_OFF 0x34 /* ADC host frame count in DWORDS */ 135 #define CONC_wADCCFC_OFF 0x36 /* ADC host current frame count */ 136 137 /* Concert memory page number defines */ 138 #define CONC_SYNRAM_PAGE 0x00 /* Synth host/serial I/F RAM */ 139 #define CONC_DACRAM_PAGE 0x04 /* DAC host/serial I/F RAM */ 140 #define CONC_ADCRAM_PAGE 0x08 /* ADC host/serial I/F RAM */ 141 #define CONC_SYNCTL_PAGE 0x0c /* Page bank for synth host control */ 142 #define CONC_DACCTL_PAGE 0x0c /* Page bank for DAC host control */ 143 #define CONC_ADCCTL_PAGE 0x0d /* Page bank for ADC host control */ 144 #define CONC_FIFO0_PAGE 0x0e /* page 0 of UART "FIFO" (rx stash) */ 145 #define CONC_FIFO1_PAGE 0x0f /* page 1 of UART "FIFO" (rx stash) */ 146 147 /* UARTCSTAT register masks */ 148 #define CONC_UART_RXRDY 0x01 149 #define CONC_UART_TXRDY 0x02 150 #define CONC_UART_TXINT 0x04 151 #define CONC_UART_RXINT 0x80 152 153 #define CONC_UART_CTL 0x03 154 #define CONC_UART_TXINTEN 0x20 155 #define CONC_UART_RXINTEN 0x80 156 157 /* 158 * CODEC register map 159 */ 160 #define NUMREGS 32 /* total number of registers */ 161 #define NUMVOLS 16 /* number of vol regs */ 162 163 /* Source and output volume control defines */ 164 #define CODEC_VOL_MASTER_L 0x00U /* Master out, left */ 165 #define CODEC_VOL_MASTER_R 0x01U /* Master out, right */ 166 #define CODEC_VOL_WAVE_L 0x02U /* Wave DAC, left */ 167 #define CODEC_VOL_WAVE_R 0x03U /* Wave DAC, right */ 168 #define CODEC_VOL_SYNTH_L 0x04U /* Synth DAC, left */ 169 #define CODEC_VOL_SYNTH_R 0x05U /* Synth DAC, right */ 170 #define CODEC_VOL_CD_L 0x06U /* CD audio, left */ 171 #define CODEC_VOL_CD_R 0x07U /* CD audio, right */ 172 #define CODEC_VOL_AUX_L 0x08U /* Aux line source, left */ 173 #define CODEC_VOL_AUX_R 0x09U /* Aux line source, right */ 174 #define CODEC_VOL_TV_L 0x0aU /* TV Tuner, left */ 175 #define CODEC_VOL_TV_R 0x0bU /* TV Tuner, right */ 176 #define CODEC_VOL_TAD 0x0cU /* TAD monitor, mono */ 177 #define CODEC_VOL_MONO2 0x0dU /* Unused MONO2 */ 178 #define CODEC_VOL_MIC 0x0eU /* Mic, mono */ 179 #define CODEC_VOL_MONO 0x0fU /* Mono out volume */ 180 181 /* Input bus enable defines -SW1 */ 182 #define CODEC_IN_ENABLE_MIC 0x01U /* Mic enable, mono */ 183 #define CODEC_IN_ENABLE_CD_R 0x02U /* CD audio enable, right */ 184 #define CODEC_IN_ENABLE_CD_L 0x04U /* CD audio enable, left */ 185 #define CODEC_IN_ENABLE_AUX_R 0x08U /* Aux line source enable, right */ 186 #define CODEC_IN_ENABLE_AUX_L 0x10U /* Aux line source enable, left */ 187 #define CODEC_IN_ENABLE_SYNTH_R 0x20U /* Synth DAC enable, right */ 188 #define CODEC_IN_ENABLE_SYNTH_L 0x40U /* Synth DAC enable, left */ 189 190 /* Input bus enable defines - SW2 */ 191 #define CODEC_IN_ENABLE_TAD 0x01U /* TAD monitor enable, mono */ 192 #define CODEC_IN_ENABLE_MONO2 0x02U /* Unused MONO2 enable, mono */ 193 #define CODEC_IN_ENABLE_WAVE 0x04U /* Wave DAC enable */ 194 #define CODEC_IN_ENABLE_TV_R 0x08U /* TV Tuner enable, right */ 195 #define CODEC_IN_ENABLE_TV_L 0x10U /* TV Tuner enable, left */ 196 #define CODEC_IN_ENABLE_TMONO2 0x20U /* unboosted MONO2 */ 197 #define CODEC_IN_ENABLE_TMONO1 0x40U /* unboosted MONO1 */ 198 #define CODEC_IN_ENABLE_TMIC 0x80U /* unboosted MONO3 (mic) */ 199 200 /* Output bus enable defines - SW1 */ 201 #define CODEC_OUT_ENABLE_MIC 0x01U /* Mic enable, mono */ 202 #define CODEC_OUT_ENABLE_CD 0x06U /* CD audio enable, stereo */ 203 #define CODEC_OUT_ENABLE_AUX 0x18U /* Aux line source enable, stereo */ 204 #define CODEC_OUT_ENABLE_SYNTH 0x60U /* Synth DAC enable, stereo */ 205 206 /* Output bus enable defines - SW2 */ 207 #define CODEC_OUT_ENABLE_TAD 0x01U /* TAD monitor enable, mono */ 208 #define CODEC_OUT_ENABLE_MONO2 0x02U /* Unused MONO2 enable, mono */ 209 #define CODEC_OUT_ENABLE_WAVE 0x0cU /* Wave DAC enable, stereo */ 210 #define CODEC_OUT_ENABLE_TV 0x30U /* TV Tuner enable, stereo */ 211 212 /* Volume setting constants */ 213 #define CODEC_ATT_MUTE 0x80U 214 #define CODEC_ATT_MAX 0x1fU 215 #define CODEC_ATT_MONO 0x07U 216 217 /* Control function defines */ 218 #define CODEC_CTL_4SPKR 0x00U /* 4-spkr output mode enable */ 219 #define CODEC_CTL_MICBOOST 0x01U /* Mic boost (+30 dB) enable */ 220 221 /* Miscellaneous CODEC defines for internal use */ 222 #define CODEC_OUT_SW1 0x10U 223 #define CODEC_OUT_SW2 0x11U 224 #define CODEC_LIN_SW1 0x12U 225 #define CODEC_RIN_SW1 0x13U 226 #define CODEC_LIN_SW2 0x14U 227 #define CODEC_RIN_SW2 0x15U 228 #define CODEC_RESET_PWRD 0x16U 229 #define CODEC_CLKSELECT 0x17U 230 #define CODEC_ADSELECT 0x18U 231 #define CODEC_MICBOOST 0x19U 232 233 #endif /* _AUDIOPCI_H */ 234