[BACK]Return to cmpcireg.h CVS log [TXT][DIR] Up to [local] / sys / dev / pci

Annotation of sys/dev/pci/cmpcireg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: cmpcireg.h,v 1.2 2006/07/27 00:45:59 brad Exp $       */
                      2: /*     $NetBSD: cmpcireg.h,v 1.7 2005/12/11 12:22:48 christos Exp $    */
                      3:
                      4: /*
                      5:  * Copyright (c) 2000, 2001 The NetBSD Foundation, Inc.
                      6:  * All rights reserved.
                      7:  *
                      8:  * This code is derived from software contributed to The NetBSD Foundation
                      9:  * by Takuya SHIOZAKI <tshiozak@NetBSD.org> .
                     10:  *
                     11:  * This code is derived from software contributed to The NetBSD Foundation
                     12:  * by ITOH Yasufumi.
                     13:  *
                     14:  * Redistribution and use in source and binary forms, with or without
                     15:  * modification, are permitted provided that the following conditions
                     16:  * are met:
                     17:  * 1. Redistributions of source code must retain the above copyright
                     18:  *    notice, this list of conditions and the following disclaimer.
                     19:  * 2. Redistributions in binary form must reproduce the above copyright
                     20:  *    notice, this list of conditions and the following disclaimer in the
                     21:  *    documentation and/or other materials provided with the distribution.
                     22:  *
                     23:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
                     24:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     25:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     26:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
                     27:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     28:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     29:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     30:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     31:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     32:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     33:  * SUCH DAMAGE.
                     34:  *
                     35:  */
                     36:
                     37: /* C-Media CMI8x38 Audio Chip Support */
                     38:
                     39: #ifndef _DEV_PCI_CMPCIREG_H_
                     40: #define _DEV_PCI_CMPCIREG_H_
                     41:
                     42: /*
                     43:  * PCI Configuration Registers
                     44:  */
                     45:
                     46: #define CMPCI_PCI_IOBASEREG    (PCI_MAPREG_START)
                     47:
                     48:
                     49: /*
                     50:  * I/O Space
                     51:  */
                     52:
                     53: #define CMPCI_REG_FUNC_0               0x00
                     54: #  define CMPCI_REG_CH0_DIR            0x00000001
                     55: #  define CMPCI_REG_CH1_DIR            0x00000002
                     56: #  define CMPCI_REG_CH0_PAUSE          0x00000004
                     57: #  define CMPCI_REG_CH1_PAUSE          0x00000008
                     58: #  define CMPCI_REG_CH0_ENABLE         0x00010000
                     59: #  define CMPCI_REG_CH1_ENABLE         0x00020000
                     60: #  define CMPCI_REG_CH0_RESET          0x00040000
                     61: #  define CMPCI_REG_CH1_RESET          0x00080000
                     62:
                     63: #define CMPCI_REG_FUNC_1               0x04
                     64: #  define CMPCI_REG_JOY_ENABLE         0x00000002
                     65: #  define CMPCI_REG_UART_ENABLE                0x00000004
                     66: #  define CMPCI_REG_LEGACY_ENABLE      0x00000008
                     67: #  define CMPCI_REG_BREQ               0x00000010
                     68: #  define CMPCI_REG_MCBINTR_ENABLE     0x00000020
                     69: #  define CMPCI_REG_SPDIFOUT_DAC       0x00000040
                     70: #  define CMPCI_REG_SPDIF_LOOP         0x00000080
                     71: #  define CMPCI_REG_SPDIF0_ENABLE      0x00000100
                     72: #  define CMPCI_REG_SPDIF1_ENABLE      0x00000200
                     73: #  define CMPCI_REG_DAC_FS_SHIFT       10
                     74: #  define CMPCI_REG_DAC_FS_MASK                0x00000007
                     75: #  define CMPCI_REG_ADC_FS_SHIFT       13
                     76: #  define CMPCI_REG_ADC_FS_MASK                0x00000007
                     77:
                     78: #define CMPCI_REG_CHANNEL_FORMAT       0x08
                     79: #  define CMPCI_REG_SPDIN_PHASE                0x80
                     80: #  define CMPCI_REG_CH0_FORMAT_SHIFT   0
                     81: #  define CMPCI_REG_CH0_FORMAT_MASK    0x00000003
                     82: #  define CMPCI_REG_CH1_FORMAT_SHIFT   2
                     83: #  define CMPCI_REG_CH1_FORMAT_MASK    0x00000003
                     84: #  define CMPCI_REG_FORMAT_MONO                0x00000000
                     85: #  define CMPCI_REG_FORMAT_STEREO      0x00000001
                     86: #  define CMPCI_REG_FORMAT_8BIT                0x00000000
                     87: #  define CMPCI_REG_FORMAT_16BIT       0x00000002
                     88:
                     89: #define CMPCI_REG_INTR_CTRL            0x0c
                     90: #  define CMPCI_REG_CH0_INTR_ENABLE    0x00010000
                     91: #  define CMPCI_REG_CH1_INTR_ENABLE    0x00020000
                     92: #  define CMPCI_REG_TDMA_INTR_ENABLE   0x00040000
                     93:
                     94: #define CMPCI_REG_INTR_STATUS          0x10
                     95: #  define CMPCI_REG_CH0_INTR           0x00000001
                     96: #  define CMPCI_REG_CH1_INTR           0x00000002
                     97: #  define CMPCI_REG_CH0_BUSY           0x00000004
                     98: #  define CMPCI_REG_CH1_BUSY           0x00000008
                     99: #  define CMPCI_REG_LEGACY_STEREO      0x00000010
                    100: #  define CMPCI_REG_LEGACY_HDMA                0x00000020
                    101: #  define CMPCI_REG_DMASTAT            0x00000040
                    102: #  define CMPCI_REG_XDO46              0x00000080
                    103: #  define CMPCI_REG_HTDMA_INTR         0x00004000
                    104: #  define CMPCI_REG_LTDMA_INTR         0x00008000
                    105: #  define CMPCI_REG_UART_INTR          0x00010000
                    106: #  define CMPCI_REG_MCB_INTR           0x04000000
                    107: #  define CMPCI_REG_VCO                        0x08000000
                    108: #  define CMPCI_REG_ANY_INTR           0x80000000
                    109:
                    110: #define CMPCI_REG_LEGACY_CTRL          0x14
                    111: #  define CMPCI_REG_LEGACY_SPDIF_ENABLE        0x00200000
                    112: #  define CMPCI_REG_SPDIF_COPYRIGHT    0x00400000
                    113: #  define CMPCI_REG_XSPDIF_ENABLE      0x00800000
                    114: #  define CMPCI_REG_FMSEL_SHIFT                24
                    115: #  define CMPCI_REG_FMSEL_MASK         0x00000003
                    116: #  define CMPCI_REG_VSBSEL_SHIFT       26
                    117: #  define CMPCI_REG_VSBSEL_MASK                0x00000003
                    118: #  define CMPCI_REG_VMPUSEL_SHIFT      29
                    119: #  define CMPCI_REG_VMPUSEL_MASK       0x00000003
                    120:
                    121: #define CMPCI_REG_MISC                 0x18
                    122: #  define CMPCI_REG_2ND_SPDIFIN                0x00000100
                    123: #  define CMPCI_REG_SPDIFOUT_48K       0x00008000
                    124: #  define CMPCI_REG_FM_ENABLE          0x00080000
                    125: #  define CMPCI_REG_SPDFLOOPI          0x00100000
                    126: #  define CMPCI_REG_SPDIF48K           0x01000000
                    127: #  define CMPCI_REG_5V                 0x02000000
                    128: #  define CMPCI_REG_N4SPK3D            0x04000000
                    129:
                    130:
                    131: #define CMPCI_REG_SBDATA               0x22
                    132: #define CMPCI_REG_SBADDR               0x23
                    133: #  define CMPCI_SB16_MIXER_RESET       0x00
                    134: #  define CMPCI_SB16_MIXER_MASTER_L    0x30
                    135: #  define CMPCI_SB16_MIXER_MASTER_R    0x31
                    136: #  define CMPCI_SB16_MIXER_VOICE_L     0x32
                    137: #  define CMPCI_SB16_MIXER_VOICE_R     0x33
                    138: #  define CMPCI_SB16_MIXER_FM_L                0x34
                    139: #  define CMPCI_SB16_MIXER_FM_R                0x35
                    140: #  define CMPCI_SB16_MIXER_CDDA_L      0x36
                    141: #  define CMPCI_SB16_MIXER_CDDA_R      0x37
                    142: #  define CMPCI_SB16_MIXER_LINE_L      0x38
                    143: #  define CMPCI_SB16_MIXER_LINE_R      0x39
                    144: #  define CMPCI_SB16_MIXER_MIC         0x3A
                    145: #    define CMPCI_SB16_MIXER_VALBITS           5
                    146: #  define CMPCI_SB16_MIXER_SPEAKER     0x3B
                    147: #    define CMPCI_SB16_MIXER_SPEAKER_VALBITS   2
                    148: #  define CMPCI_SB16_MIXER_OUTMIX      0x3C
                    149: #    define CMPCI_SB16_SW_MIC          0x01
                    150: #    define CMPCI_SB16_SW_CD_R         0x02
                    151: #    define CMPCI_SB16_SW_CD_L         0x04
                    152: #    define CMPCI_SB16_SW_CD           (CMPCI_SB16_SW_CD_L|CMPCI_SB16_SW_CD_R)
                    153: #    define CMPCI_SB16_SW_LINE_R       0x08
                    154: #    define CMPCI_SB16_SW_LINE_L       0x10
                    155: #    define CMPCI_SB16_SW_LINE (CMPCI_SB16_SW_LINE_L|CMPCI_SB16_SW_LINE_R)
                    156: #    define CMPCI_SB16_SW_FM_R         0x20
                    157: #    define CMPCI_SB16_SW_FM_L         0x40
                    158: #    define CMPCI_SB16_SW_FM           (CMPCI_SB16_SW_FM_L|CMPCI_SB16_SW_FM_R)
                    159: #  define CMPCI_SB16_MIXER_ADCMIX_L    0x3D
                    160: #  define CMPCI_SB16_MIXER_ADCMIX_R    0x3E
                    161: #    define CMPCI_SB16_MIXER_FM_SRC_R  0x20
                    162: #    define CMPCI_SB16_MIXER_LINE_SRC_R        0x08
                    163: #    define CMPCI_SB16_MIXER_CD_SRC_R  0x02
                    164: #    define CMPCI_SB16_MIXER_MIC_SRC   0x01
                    165: #    define CMPCI_SB16_MIXER_SRC_R_TO_L(v)     ((v) << 1)
                    166:
                    167: #  define CMPCI_SB16_MIXER_L_TO_R(addr) ((addr)+1)
                    168:
                    169: #  define CMPCI_ADJUST_MIC_GAIN(sc, x) cmpci_adjust((x), 0xf8)
                    170: #  define CMPCI_ADJUST_GAIN(sc, x)     cmpci_adjust((x), 0xf8)
                    171: #  define CMPCI_ADJUST_2_GAIN(sc, x)   cmpci_adjust((x), 0xc0)
                    172:
                    173: #define CMPCI_REG_MIXER24              0x24
                    174: #  define CMPCI_REG_SPDIN_MONITOR      0x01
                    175: #  define CMPCI_REG_SURROUND           0x02
                    176: #  define CMPCI_REG_INDIVIDUAL         0x20
                    177: #  define CMPCI_REG_REVERSE_FR         0x10
                    178: #  define CMPCI_REG_FMMUTE             0x80
                    179: #  define CMPCI_REG_WSMUTE             0x40
                    180: #  define CMPCI_REG_WAVEINL            0x08
                    181: #  define CMPCI_REG_WAVEINR            0x04
                    182:
                    183: #define CMPCI_REG_MIXER25              0x25
                    184: #  define CMPCI_REG_RAUXREN            0x80
                    185: #  define CMPCI_REG_RAUXLEN            0x40
                    186: #  define CMPCI_REG_VAUXRM             0x20    /* 0: mute, 1: unmute */
                    187: #  define CMPCI_REG_VAUXLM             0x10
                    188: #  define CMPCI_REG_VADMIC             0x0E
                    189: #  define CMPCI_REG_MICGAINZ           0x01    /* 1: disable preamp */
                    190:
                    191: #  define CMPCI_ADJUST_ADMIC_GAIN(sc, x)       (cmpci_adjust((x), 0xe0) >> 5)
                    192: #  define CMPCI_REG_ADMIC_VALBITS      3
                    193: #  define CMPCI_REG_ADMIC_MASK         0x07
                    194: #  define CMPCI_REG_ADMIC_SHIFT                0x01
                    195:
                    196: /* Note that the doc tells a lie */
                    197: #define CMPCI_REG_MIXER_AUX            0x26
                    198: #  define CMPCI_ADJUST_AUX_GAIN(sc, l, r)      \
                    199:        (cmpci_adjust((l), 0xc0) >> 4 | cmpci_adjust((r), 0xc0))
                    200: #  define CMPCI_REG_AUX_VALBITS        4
                    201:
                    202: #define CMPCI_REG_MPU_BASE             0x40
                    203: #define CMPCI_REG_MPU_SIZE             0x10
                    204: #define CMPCI_REG_FM_BASE              0x50
                    205: #define CMPCI_REG_FM_SIZE              0x10
                    206:
                    207: #define CMPCI_REG_DMA0_BASE            0x80
                    208: #define CMPCI_REG_DMA0_BYTES           0x84
                    209: #define CMPCI_REG_DMA0_SAMPLES         0x86
                    210: #define CMPCI_REG_DMA1_BASE            0x88
                    211: #define CMPCI_REG_DMA1_BYTES           0x8C
                    212: #define CMPCI_REG_DMA1_SAMPLES         0x8E
                    213:
                    214:
                    215: /* sample rate */
                    216: #define CMPCI_REG_RATE_5512            0
                    217: #define CMPCI_REG_RATE_11025           1
                    218: #define CMPCI_REG_RATE_22050           2
                    219: #define CMPCI_REG_RATE_44100           3
                    220: #define CMPCI_REG_RATE_8000            4
                    221: #define CMPCI_REG_RATE_16000           5
                    222: #define CMPCI_REG_RATE_32000           6
                    223: #define CMPCI_REG_RATE_48000           7
                    224: #define CMPCI_REG_NUMRATE              8
                    225:
                    226: #endif /* _DEV_PCI_CMPCIREG_H_ */
                    227:
                    228: /* end of file */

CVSweb