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

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

1.1       nbrk        1: /*     $OpenBSD: cs4280reg.h,v 1.1 2000/06/30 03:28:08 art Exp $       */
                      2: /*     $NetBSD: cs4280reg.h,v 1.3 2000/05/15 01:35:29 thorpej Exp $    */
                      3:
                      4: /*
                      5:  * Copyright (c) 1999, 2000 Tatoku Ogaito.  All rights reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
                     15:  * 3. All advertising materials mentioning features or use of this software
                     16:  *    must display the following acknowledgement:
                     17:  *      This product includes software developed by Tatoku Ogaito
                     18:  *     for the NetBSD Project.
                     19:  * 4. The name of the author may not be used to endorse or promote products
                     20:  *    derived from this software without specific prior written permission
                     21:  *
                     22:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     23:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     24:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     25:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     26:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     27:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     28:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     29:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     30:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     31:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     32:  */
                     33:
                     34:
                     35: #define CS4280_BA0_SIZE   0x2000
                     36: #define CS4280_BA1_SIZE   0x40000
                     37:
                     38: /* BA0 */
                     39:
                     40: /* Interrupt Reporting Registers */
                     41: #define CS4280_HISR        0x000       /* Host Interrupt Status Register */
                     42: #define  HISR_INTENA       0x80000000
                     43: #define  HISR_MIDI         0x00100000
                     44: #define  HISR_CINT         0x00000002
                     45: #define  HISR_PINT         0x00000001
                     46: #define CS4280_HICR        0x008       /* Host Interrupt Control Register */
                     47: #define  HICR_CHGM         0x00000002
                     48: #define  HICR_IEV          0x00000001
                     49:
                     50: /* Clock Control Registers */
                     51: #define CS4280_CLKCR1      0x400       /* Clock Control Register 1 */
                     52: #define  CLKCR1_PLLSS_SPBC 0x00000000
                     53: #define  CLKCR1_PLLSS_RSV  0x00000004
                     54: #define  CLKCR1_PLLSS_PCI  0x00000008
                     55: #define  CLKCR1_PLLSS_RSV2 0x0000000c
                     56: #define  CLKCR1_PLLP       0x00000010
                     57: #define  CLKCR1_SWCE       0x00000020
                     58:
                     59: #define CS4280_CLKCR2      0x404       /* Clock Control Register 2 */
                     60: #define  CLKCR2_PDIVS_RSV  0x00000002
                     61: #define  CLKCR2_PDIVS_8    0x00000008
                     62: #define  CLKCR2_PDIVS_16   0x00000000
                     63:
                     64: #define CS4280_PLLM        0x408       /* PLL Multiplier Register */
                     65: #define  PLLM_STATE        0x0000003a
                     66:
                     67: #define CS4280_PLLCC       0x40c       /* PLL Capacitor Coefficient Register */
                     68: #define  PLLCC_CDR_STATE   0x00000006
                     69: #define  PLLCC_LPF_STATE   0x00000078
                     70:
                     71: /* General Configuration Registers */
                     72: #define CS4280_SERMC1      0x420       /* Serial Port Master Control Register 1 */
                     73: #define  SERMC1_MSPE       0x00000001
                     74: #define  SERMC1_PTC_MASK   0x0000000e
                     75: #define  SERMC1_PTC_CS423X 0x00000000
                     76: #define  SERMC1_PTC_AC97   0x00000002
                     77: #define  SERMC1_PLB_EN     0x00000010
                     78: #define  SERMC1_XLB_EN     0x00000020
                     79: #define CS4280_SERC1       0x428       /* Serial Port Configuration Register 1 */
                     80: #define  SERC1_SO1EN       0x00000001
                     81: #define  SERC1_SO1F_MASK   0x0000000e
                     82: #define  SERC1_SO1F_CS423X 0x00000000
                     83: #define  SERC1_SO1F_AC97   0x00000002
                     84: #define  SERC1_SO1F_DAC    0x00000004
                     85: #define  SERC1_SO1F_SPDIF  0x00000006
                     86: #define CS4280_SERC2       0x42c       /* Serial Port Configuration Register 2 */
                     87: #define  SERC2_SI1EN       0x00000001
                     88: #define  SERC2_SI1F_MASK   0x0000000e
                     89: #define  SERC2_SI1F_CS423X 0x00000000
                     90: #define  SERC2_SI1F_AC97   0x00000002
                     91: #define  SERC2_SI1F_ADC    0x00000004
                     92: #define  SERC2_SI1F_SPDIF  0x00000006
                     93:
                     94: #define CS4280_SERBSP      0x43c
                     95: #define  SERBSP_FSP_MASK   0x0000000f
                     96:
                     97: #define CS4280_SERBST      0x440
                     98: #define  SERBST_RRDY       0x00000001
                     99: #define  SERBST_WBSY       0x00000002
                    100: #define CS4280_SERBCM      0x444
                    101: #define  SERBCM_RDC        0x000000001
                    102: #define  SERBCM_WRC        0x000000002
                    103: #define CS4280_SERBAD      0x448
                    104: #define CS4280_SERBWP      0x450
                    105: /* AC97 Registers */
                    106: #define CS4280_ACCTL       0x460       /* AC97 Control Register */
                    107: #define  ACCTL_RSTN        0x00000001
                    108: #define  ACCTL_ESYN        0x00000002
                    109: #define  ACCTL_VFRM        0x00000004
                    110: #define  ACCTL_DCV         0x00000008
                    111: #define  ACCTL_CRW         0x00000010
                    112: #define  ACCTL_ASYN        0x00000020
                    113: #define  ACCTL_TC          0x00000040
                    114: #define CS4280_ACSTS       0x464       /* AC97 Status Register */
                    115: #define  ACSTS_CRDY        0x00000001
                    116: #define  ACSTS_VSTS        0x00000002
                    117: #define  ACSTS_WKUP        0x00000004
                    118: #define CS4280_ACOSV       0x468       /* AC97 Output Slot Valid Register */
                    119: #define  ACOSV_SLV3        0x00000001
                    120: #define  ACOSV_SLV4        0x00000002
                    121: #define  ACOSV_SLV5        0x00000004
                    122: #define  ACOSV_SLV6        0x00000008
                    123: #define  ACOSV_SLV7        0x00000010
                    124: #define  ACOSV_SLV8        0x00000020
                    125: #define  ACOSV_SLV9        0x00000040
                    126: #define  ACOSV_SLV10       0x00000080
                    127: #define  ACOSV_SLV11       0x00000100
                    128: #define  ACOSV_SLV12       0x00000200
                    129:
                    130: #define CS4280_ACCAD       0x46c       /* AC97 Command Address Register */
                    131: #define CS4280_ACCDA       0x470       /* AC97 Command Data Register */
                    132: #define CS4280_ACISV       0x474       /* AC97 Input Slot Valid Register */
                    133: #define  ACISV_ISV3        0x00000001
                    134: #define  ACISV_ISV4        0x00000002
                    135: #define  ACISV_ISV5        0x00000004
                    136: #define  ACISV_ISV6        0x00000008
                    137: #define  ACISV_ISV7        0x00000010
                    138: #define  ACISV_ISV8        0x00000020
                    139: #define  ACISV_ISV9        0x00000040
                    140: #define  ACISV_ISV10       0x00000080
                    141: #define  ACISV_ISV11       0x00000100
                    142: #define  ACISV_ISV12       0x00000200
                    143: #define CS4280_ACSAD       0x478       /* AC97 Status Address Register */
                    144: #define CS4280_ACSDA       0x47c       /* AC97 Status Data Register */
                    145:
                    146: /* Host Access Methods */
                    147: #define CS4280_GPIOR      0x4b8        /* General Purpose I/O Register */
                    148: #define CS4280_EGPIODR    0x4bc        /* Extended GPIO Direction Register */
                    149: #define CS4280_EGPIOPTR    0x4c0        /* Extended GPIO Polarity/Type Register */
                    150: #define CS4280_EGPIOTR     0x4c4        /* Extended GPIO Sticky Register */
                    151: #define CS4280_EGPIOWR     0x4c8        /* Extended GPIO Wakeup Register */
                    152: #define CS4280_EGPIOSR     0x4cc        /* Extended GPIO Status Register */
                    153:
                    154: /* Control Register */
                    155: #define CS4280_CFGI       0x4b0        /* Configuration Interface Register */
                    156:
                    157: #define CS4280_SERACC      0x4d8
                    158: #define  SERACC_CTYPE_MASK 0x00000001
                    159: #define  SERACC_CTYPE_1_03 0x00000000
                    160: #define  SERACC_CTYPE_2_0  0x00000001
                    161: #define  SERACC_TWO_CODECS 0x00000002
                    162: #define  SERACC_MDM        0x00000004
                    163: #define  SERACC_HSP        0x00000008
                    164:
                    165: /* Midi Port */
                    166: #define CS4280_MIDCR       0x490        /* MIDI Control Register */
                    167: #define  MIDCR_TXE         0x00000001   /* MIDI Transmit Enable */
                    168: #define  MIDCR_RXE         0x00000002   /* MIDI Receive Enable */
                    169: #define  MIDCR_RIE         0x00000004   /* MIDI Receive Interrupt Enable */
                    170: #define  MIDCR_TIE         0x00000008   /* MIDI Transmit Interrupt Enable */
                    171: #define  MIDCR_MLB         0x00000010   /* MIDI Loop Back Enable */
                    172: #define  MIDCR_MRST        0x00000020   /* MIDI Reset */
                    173: #define  MIDCR_MASK        0x0000003f
                    174: #define CS4280_MIDSR       0x494        /* Host MIDI Status Register */
                    175: #define  MIDSR_TBF         0x00000001   /* Transmit Buffer Full */
                    176: #define  MIDSR_RBE         0x00000002   /* Receive Buffer Empty */
                    177: #define CS4280_MIDWP       0x498        /* MIDI Write Port */
                    178: #define  MIDWP_MASK        0x000000ff
                    179: #define CS4280_MIDRP       0x49c        /* MIDI Read Port */
                    180: #define  MIDRP_MASK        0x000000ff
                    181:
                    182: /* Joy Stick Port */
                    183: #define CS4280_JSPT        0x480        /* Joystick Poll/Trigger Register */
                    184: #define CS4280_JSCTL       0x484        /* Joystick Control Register */
                    185: #define CS4280_JSC1        0x488        /* Joystick Coordinate Register 1 */
                    186: #define CS4280_JSC2        0x48c        /* Joystick Coordinate Register 2 */
                    187:
                    188:
                    189: /* BA1 */
                    190:
                    191: /* Playback Parameters */
                    192: #define CS4280_PDTC       0x00c0       /* Playback DMA Transaction Count */
                    193: #define  PDTC_MASK        0x000003ff
                    194: #define  CS4280_MK_PDTC(x) ((x)/2 - 1)
                    195: #define CS4280_PFIE       0x00c4       /* Playback Format and Interrupt Enable */
                    196: #define  PFIE_UNSIGNED    0x00008000    /* Playback Format is unsigned */
                    197: #define  PFIE_SWAPPED     0x00004000    /* Playback Format is need swapped */
                    198: #define  PFIE_MONO        0x00002000    /* Playback Format is monoral */
                    199: #define  PFIE_8BIT        0x00001000    /* Playback Format is 8bit */
                    200: #define  PFIE_PI_ENABLE   0x00000000    /* Playback Interrupt Enabled */
                    201: #define  PFIE_PI_DISABLE  0x00000010    /* Playback Interrupt Disabled */
                    202: #define  PFIE_PI_MASK     0x0000003f
                    203: #define  PFIE_MASK        0x0000f03f
                    204: #define CS4280_PBA        0x00c8       /* Playback Buffer Address */
                    205: #define CS4280_PVOL       0x00f8       /* Playback Volume */
                    206: #define CS4280_PSRC       0x0288       /* Playback Sample Rate Correction */
                    207: #define  PSRC_MASK        0xffff0000
                    208: #define  CS4280_MK_PSRC(psrc, py) ((((psrc) << 16) & 0xffff0000) | ((py) & 0xffff))
                    209: #define CS4280_PCTL       0x02a4       /* Playback Control */
                    210: #define  PCTL_MASK        0xffff0000
                    211: #define CS4280_PPI        0x02b4       /* Playback Phase Increment */
                    212:
                    213: /* Capture Parameters */
                    214: #define CS4280_CCTL       0x0064       /* Capture Control */
                    215: #define  CCTL_MASK        0x0000ffff
                    216: #define CS4280_CDTC       0x0100       /* Capture DMA Transaction Count */
                    217: #define CS4280_CIE        0x0104       /* Capture Interrupt Enable */
                    218: #define  CIE_CI_ENABLE    0x00000001    /* Capture Interrupt enabled */
                    219: #define  CIE_CI_DISABLE   0x00000011    /* Capture Interrupt disabled */
                    220: #define  CIE_CI_MASK      0x0000003f
                    221: #define CS4280_CBA        0x010c       /* Capture Buffer Address */
                    222: #define CS4280_CSRC       0x02c8       /* Capture Sample Rate Correction */
                    223: #define  CSRC_MASK        0xffff0000
                    224: #define  CS4280_MK_CSRC(csrc, cy) ((((csrc) << 16) & 0xffff0000) | ((cy) & 0xffff))
                    225: #define CS4280_CCI        0x02d8       /* Capture Coefficient Increment */
                    226: #define  CCI_MASK         0xffff0000
                    227: #define CS4280_CD         0x02e0       /* Capture Delay */
                    228: #define  CD_MASK          0xfffc000
                    229: #define CS4280_CPI        0x02f4       /* Capture Phase Incremnt */
                    230: #define CS4280_CGL        0x0134       /* Capture Group Length */
                    231: #define  CGL_MASK         0x0000ffff
                    232: #define CS4280_CNT        0x0340       /* Capture Number of Triplets */
                    233: #define CS4280_CGC        0x0138       /* Capture Group Count */
                    234: #define  CGC_MASK         0x0000ffff
                    235: #define CS4280_CVOL       0x02f8       /* Capture Volume */
                    236:
                    237: /* Processor Registers */
                    238: #define CS4280_SPCR       0x30000      /* Processor Control Register */
                    239: #define  SPCR_RUN         0x00000001
                    240: #define  SPCR_STPFR       0x00000002
                    241: #define  SPCR_RUNFR       0x00000004
                    242: #define  SPCR_DRQEN       0x00000020
                    243: #define  SPCR_RSTSP       0x00000040
                    244: #define CS4280_DREG       0x30004
                    245: #define CS4280_DSRWP      0x30008
                    246: #define CS4280_TWPR       0x3000c      /* Trap Write Port Register */
                    247: #define CS4280_SPWR       0x30010
                    248: #define CS4280_SPCS       0x30028      /* Processor Clock Status Register */
                    249: #define  SPCS_SPRUN       0x00000100
                    250: #define CS4280_FRMT       0x30030      /* Frame Timer Register */
                    251: #define  FRMT_FTV         0x00000adf
                    252:
                    253:
                    254: #define CF_MONO           0x01
                    255: #define CF_8BIT           0x02
                    256:
                    257: #define CF_16BIT_STEREO   0x00
                    258: #define CF_16BIT_MONO     0x01
                    259: #define CF_8BIT_STEREO    0x02
                    260: #define CF_8BIT_MONO      0x03
                    261:
                    262: #define MIDI_BUSY_WAIT         100
                    263: #define MIDI_BUSY_DELAY                100     /* Delay when UART is busy */
                    264:
                    265: /* 3*1024 parameter, 3.5*1024 sample, 2*3.5*1024 code */
                    266: #define BA1_DWORD_SIZE         (13 * 1024 + 512)
                    267: #define BA1_MEMORY_COUNT       3
                    268:
                    269: struct BA1struct {
                    270:        struct {
                    271:                u_int32_t offset;
                    272:                u_int32_t size;
                    273:        } memory[BA1_MEMORY_COUNT];
                    274:        u_int32_t map[BA1_DWORD_SIZE];
                    275: };
                    276:
                    277: #define CS4280_ICHUNK  2048    /* Bytes between interrupts */
                    278: #define CS4280_DCHUNK  4096    /* Bytes of DMA memory */
                    279: #define CS4280_DALIGN  4096    /* Alignment of DMA memory */
                    280:
                    281: /* AC97 Registers */
                    282: #define CS4280_SAVE_REG_MAX  0x10
                    283:
                    284: /* for AC97_REG_POWER */
                    285: #define   CS4280_POWER_DOWN_ALL       0x7f0f

CVSweb