cmireg.h revision 74994
1247738Sbapt/* 2247738Sbapt * Copyright (c) 2000 The NetBSD Foundation, Inc. 3247738Sbapt * All rights reserved. 4247738Sbapt * 5247738Sbapt * This code is derived from software contributed to The NetBSD Foundation 6247738Sbapt * by Takuya SHIOZAKI <AoiMoe@imou.to> . 7247738Sbapt * 8247738Sbapt * Redistribution and use in source and binary forms, with or without 9247738Sbapt * modification, are permitted provided that the following conditions 10247738Sbapt * are met: 11247738Sbapt * 1. Redistributions of source code must retain the above copyright 12247738Sbapt * notice, this list of conditions and the following disclaimer. 13247738Sbapt * 2. Redistributions in binary form must reproduce the above copyright 14247738Sbapt * notice, this list of conditions and the following disclaimer in the 15247738Sbapt * documentation and/or other materials provided with the distribution. 16247738Sbapt * 17247738Sbapt * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18247738Sbapt * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19247738Sbapt * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20247738Sbapt * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21247738Sbapt * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22247738Sbapt * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23247738Sbapt * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24247738Sbapt * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25247738Sbapt * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26247738Sbapt * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27247738Sbapt * SUCH DAMAGE. 28247738Sbapt * 29247738Sbapt * $FreeBSD: head/sys/dev/sound/pci/cmireg.h 74994 2001-03-29 15:36:31Z orion $ 30247738Sbapt */ 31247738Sbapt 32247738Sbapt/* C-Media CMI8x38 Audio Chip Support */ 33247738Sbapt 34247738Sbapt#ifndef _DEV_PCI_CMPCIREG_H_ 35247738Sbapt#define _DEV_PCI_CMPCIREG_H_ (1) 36247738Sbapt 37247738Sbapt/* 38247738Sbapt * PCI Configuration Registers 39247738Sbapt */ 40247738Sbapt 41247738Sbapt#define CMPCI_PCI_IOBASEREG (PCI_MAPREG_START) 42247738Sbapt 43247738Sbapt/* 44247738Sbapt * I/O Space 45247738Sbapt */ 46247738Sbapt 47247738Sbapt#define CMPCI_REG_FUNC_0 0x00 48247738Sbapt# define CMPCI_REG_CH0_DIR 0x00000001 49247738Sbapt# define CMPCI_REG_CH1_DIR 0x00000002 50247738Sbapt# define CMPCI_REG_CH0_PAUSE 0x00000004 51247738Sbapt# define CMPCI_REG_CH1_PAUSE 0x00000008 52247738Sbapt# define CMPCI_REG_CH0_ENABLE 0x00010000 53247738Sbapt# define CMPCI_REG_CH1_ENABLE 0x00020000 54247738Sbapt# define CMPCI_REG_CH0_RESET 0x00040000 55247738Sbapt# define CMPCI_REG_CH1_RESET 0x00080000 56247738Sbapt 57247738Sbapt#define CMPCI_REG_FUNC_1 0x04 58247738Sbapt# define CMPCI_REG_JOY_ENABLE 0x00000002 59247738Sbapt# define CMPCI_REG_UART_ENABLE 0x00000004 60247738Sbapt# define CMPCI_REG_LEGACY_ENABLE 0x00000008 61247738Sbapt# define CMPCI_REG_BREQ 0x00000010 62247738Sbapt# define CMPCI_REG_MCBINTR_ENABLE 0x00000020 63247738Sbapt# define CMPCI_REG_SPDIFOUT_DAC 0x00000040 64247738Sbapt# define CMPCI_REG_SPDIF_LOOP 0x00000080 65247738Sbapt# define CMPCI_REG_SPDIF0_ENABLE 0x00000100 66247738Sbapt# define CMPCI_REG_SPDIF1_ENABLE 0x00000200 67247738Sbapt# define CMPCI_REG_DAC_FS_SHIFT 10 68247738Sbapt# define CMPCI_REG_DAC_FS_MASK 0x00000007 69247738Sbapt# define CMPCI_REG_ADC_FS_SHIFT 13 70247738Sbapt# define CMPCI_REG_ADC_FS_MASK 0x00000007 71247738Sbapt 72247738Sbapt#define CMPCI_REG_CHANNEL_FORMAT 0x08 73247738Sbapt# define CMPCI_REG_CH0_FORMAT_SHIFT 0 74247738Sbapt# define CMPCI_REG_CH0_FORMAT_MASK 0x00000003 75247738Sbapt# define CMPCI_REG_CH1_FORMAT_SHIFT 2 76247738Sbapt# define CMPCI_REG_CH1_FORMAT_MASK 0x00000003 77247738Sbapt# define CMPCI_REG_FORMAT_MONO 0x00000000 78247738Sbapt# define CMPCI_REG_FORMAT_STEREO 0x00000001 79247738Sbapt# define CMPCI_REG_FORMAT_8BIT 0x00000000 80247738Sbapt# define CMPCI_REG_FORMAT_16BIT 0x00000002 81247738Sbapt 82247738Sbapt#define CMPCI_REG_INTR_CTRL 0x0c 83247738Sbapt# define CMPCI_REG_CH0_INTR_ENABLE 0x00010000 84247738Sbapt# define CMPCI_REG_CH1_INTR_ENABLE 0x00020000 85247738Sbapt# define CMPCI_REG_TDMA_INTR_ENABLE 0x00040000 86247738Sbapt 87247738Sbapt#define CMPCI_REG_INTR_STATUS 0x10 88247738Sbapt# define CMPCI_REG_CH0_INTR 0x00000001 89247738Sbapt# define CMPCI_REG_CH1_INTR 0x00000002 90247738Sbapt# define CMPCI_REG_CH0_BUSY 0x00000004 91247738Sbapt# define CMPCI_REG_CH1_BUSY 0x00000008 92247738Sbapt# define CMPCI_REG_LEGACY_STEREO 0x00000010 93247738Sbapt# define CMPCI_REG_LEGACY_HDMA 0x00000020 94247738Sbapt# define CMPCI_REG_DMASTAT 0x00000040 95247738Sbapt# define CMPCI_REG_XDO46 0x00000080 96247738Sbapt# define CMPCI_REG_HTDMA_INTR 0x00004000 97247738Sbapt# define CMPCI_REG_LTDMA_INTR 0x00008000 98247738Sbapt# define CMPCI_REG_UART_INTR 0x00010000 99247738Sbapt# define CMPCI_REG_MCB_INTR 0x04000000 100247738Sbapt# define CMPCI_REG_VCO 0x08000000 101247738Sbapt# define CMPCI_REG_ANY_INTR 0x80000000 102247738Sbapt 103247738Sbapt#define CMPCI_REG_LEGACY_CTRL 0x14 104247738Sbapt# define CMPCI_REG_LEGACY_SPDIF_ENABLE 0x00200000 105247738Sbapt# define CMPCI_REG_SPDIF_COPYRIGHT 0x00400000 106247738Sbapt# define CMPCI_REG_XSPDIF_ENABLE 0x00800000 107247738Sbapt# define CMPCI_REG_FMSEL_SHIFT 24 108247738Sbapt# define CMPCI_REG_FMSEL_MASK 0x00000003 109247738Sbapt# define CMPCI_REG_VSBSEL_SHIFT 26 110247738Sbapt# define CMPCI_REG_VSBSEL_MASK 0x00000003 111247738Sbapt# define CMPCI_REG_VMPUSEL_SHIFT 29 112247738Sbapt# define CMPCI_REG_VMPUSEL_MASK 0x00000003 113247738Sbapt 114247738Sbapt#define CMPCI_REG_MISC 0x18 115247738Sbapt# define CMPCI_REG_POWER_DOWN 0x80000000 116247738Sbapt# define CMPCI_REG_BUS_AND_DSP_RESET 0x40000000 117247738Sbapt# define CMPCI_REG_N4SPK3D 0x04000000 118247738Sbapt# define CMPCI_REG_W_SPDIF_48L 0x01000000 119247738Sbapt# define CMPCI_REG_XCHGDAC 0x00400000 120247738Sbapt# define CMPCI_REG_FM_ENABLE 0x00080000 121247738Sbapt# define CMPCI_REG_SPDIF_48K 0x00008000 122247738Sbapt 123247738Sbapt#define CMPCI_REG_SBDATA 0x22 124247738Sbapt#define CMPCI_REG_SBADDR 0x23 125247738Sbapt# define CMPCI_SB16_MIXER_RESET 0x00 126247738Sbapt# define CMPCI_SB16_MIXER_MASTER_L 0x30 127247738Sbapt# define CMPCI_SB16_MIXER_MASTER_R 0x31 128247738Sbapt# define CMPCI_SB16_MIXER_VOICE_L 0x32 129247738Sbapt# define CMPCI_SB16_MIXER_VOICE_R 0x33 130247738Sbapt# define CMPCI_SB16_MIXER_FM_L 0x34 131247738Sbapt# define CMPCI_SB16_MIXER_FM_R 0x35 132247738Sbapt# define CMPCI_SB16_MIXER_CDDA_L 0x36 133247738Sbapt# define CMPCI_SB16_MIXER_CDDA_R 0x37 134247738Sbapt# define CMPCI_SB16_MIXER_LINE_L 0x38 135247738Sbapt# define CMPCI_SB16_MIXER_LINE_R 0x39 136247738Sbapt# define CMPCI_SB16_MIXER_MIC 0x3A 137247738Sbapt# define CMPCI_SB16_MIXER_SPEAKER 0x3B 138247738Sbapt# define CMPCI_SB16_MIXER_OUTMIX 0x3C 139247738Sbapt# define CMPCI_SB16_SW_MIC 0x01 140247738Sbapt# define CMPCI_SB16_SW_CD_R 0x02 141247738Sbapt# define CMPCI_SB16_SW_CD_L 0x04 142247738Sbapt# define CMPCI_SB16_SW_CD (CMPCI_SB16_SW_CD_L|CMPCI_SB16_SW_CD_R) 143247738Sbapt# define CMPCI_SB16_SW_LINE_R 0x08 144247738Sbapt# define CMPCI_SB16_SW_LINE_L 0x10 145247738Sbapt# define CMPCI_SB16_SW_LINE (CMPCI_SB16_SW_LINE_L|CMPCI_SB16_SW_LINE_R) 146247738Sbapt# define CMPCI_SB16_SW_FM_R 0x20 147247738Sbapt# define CMPCI_SB16_SW_FM_L 0x40 148247738Sbapt# define CMPCI_SB16_SW_FM (CMPCI_SB16_SW_FM_L|CMPCI_SB16_SW_FM_R) 149247738Sbapt# define CMPCI_SB16_MIXER_ADCMIX_L 0x3D 150247738Sbapt# define CMPCI_SB16_MIXER_ADCMIX_R 0x3E 151247738Sbapt# define CMPCI_SB16_MIXER_FM_SRC_R 0x20 152247738Sbapt# define CMPCI_SB16_MIXER_LINE_SRC_R 0x08 153247738Sbapt# define CMPCI_SB16_MIXER_CD_SRC_R 0x02 154247738Sbapt# define CMPCI_SB16_MIXER_MIC_SRC 0x01 155247738Sbapt# define CMPCI_SB16_MIXER_SRC_R_TO_L(v) ((v) << 1) 156247738Sbapt 157247738Sbapt# define CMPCI_SB16_MIXER_INGAIN_L 0x3F 158247738Sbapt# define CMPCI_SB16_MIXER_INGAIN_R 0x40 159247738Sbapt# define CMPCI_SB16_MIXER_OUTGAIN_L 0x41 160247738Sbapt# define CMPCI_SB16_MIXER_OUTGAIN_R 0x42 161247738Sbapt# define CMPCI_SB16_MIXER_AGC 0x43 162247738Sbapt# define CMPCI_SB16_MIXER_TREBLE_L 0x44 163247738Sbapt# define CMPCI_SB16_MIXER_TREBLE_R 0x45 164247738Sbapt# define CMPCI_SB16_MIXER_BASS_L 0x46 165247738Sbapt# define CMPCI_SB16_MIXER_BASS_R 0x47 166247738Sbapt# define CMPCI_SB16_MIXER_L_TO_R(addr) ((addr)+1) 167247738Sbapt 168247738Sbapt# define CMPCI_ADJUST_MIC_GAIN(sc, x) cmpci_adjust((x), 0xf8) 169247738Sbapt# define CMPCI_ADJUST_GAIN(sc, x) cmpci_adjust((x), 0xf8) 170247738Sbapt# define CMPCI_ADJUST_2_GAIN(sc, x) cmpci_adjust((x), 0xc0) 171247738Sbapt 172247738Sbapt#define CMPCI_REG_MIXER1 0x24 173247738Sbapt# define CMPCI_SPK4 0x20 174247738Sbapt# define CMPCI_REAR2FRONT 0x10 175247738Sbapt# define CMPCI_X3DEN 0x02 176247738Sbapt 177247738Sbapt#define CMPCI_REG_MPU_BASE 0x40 178247738Sbapt#define CMPCI_REG_MPU_SIZE 0x10 179247738Sbapt#define CMPCI_REG_FM_BASE 0x50 180247738Sbapt#define CMPCI_REG_FM_SIZE 0x10 181247738Sbapt 182247738Sbapt#define CMPCI_REG_AUX_MIC 0x25 183247738Sbapt# define CMPCI_AUX_SELECT_R 0x80 184247738Sbapt# define CMPCI_AUX_SELECT_L 0x40 185247738Sbapt# define CMPCI_AUX_MUTE_R 0x20 186247738Sbapt# define CMPCI_AUX_MUTE_L 0x10 187247738Sbapt# define CMPCI_VAD_MIC 0x0e 188247738Sbapt# define CMPCI_MIC_QUIET 0x01 189247738Sbapt 190247738Sbapt#define CMPCI_REG_DMA0_BASE 0x80 191247738Sbapt#define CMPCI_REG_DMA0_BYTES 0x84 192247738Sbapt#define CMPCI_REG_DMA0_SAMPLES 0x86 193247738Sbapt#define CMPCI_REG_DMA1_BASE 0x88 194247738Sbapt#define CMPCI_REG_DMA1_BYTES 0x8C 195247738Sbapt#define CMPCI_REG_DMA1_SAMPLES 0x8E 196247738Sbapt 197247738Sbapt/* sample rate */ 198247738Sbapt#define CMPCI_REG_RATE_5512 0 199247738Sbapt#define CMPCI_REG_RATE_11025 1 200247738Sbapt#define CMPCI_REG_RATE_22050 2 201247738Sbapt#define CMPCI_REG_RATE_44100 3 202247738Sbapt#define CMPCI_REG_RATE_8000 4 203247738Sbapt#define CMPCI_REG_RATE_16000 5 204247738Sbapt#define CMPCI_REG_RATE_32000 6 205247738Sbapt#define CMPCI_REG_RATE_48000 7 206247738Sbapt#define CMPCI_REG_NUMRATE 8 207247738Sbapt 208247738Sbapt#endif /* _DEV_PCI_CMPCIREG_H_ */ 209247738Sbapt 210247738Sbapt/* end of file */ 211247738Sbapt