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

Annotation of sys/dev/ic/oplreg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: oplreg.h,v 1.1 1999/01/02 00:02:40 niklas Exp $       */
                      2: /*     $NetBSD: oplreg.h,v 1.3 1998/11/25 22:17:06 augustss Exp $      */
                      3:
                      4: /*
                      5:  * Copyright (c) 1997 The NetBSD Foundation, Inc.
                      6:  * All rights reserved.
                      7:  *
                      8:  * This code is derived from software contributed to The NetBSD Foundation
                      9:  * by Lennart Augustsson (augustss@netbsd.org).
                     10:  *
                     11:  * Redistribution and use in source and binary forms, with or without
                     12:  * modification, are permitted provided that the following conditions
                     13:  * are met:
                     14:  * 1. Redistributions of source code must retain the above copyright
                     15:  *    notice, this list of conditions and the following disclaimer.
                     16:  * 2. Redistributions in binary form must reproduce the above copyright
                     17:  *    notice, this list of conditions and the following disclaimer in the
                     18:  *    documentation and/or other materials provided with the distribution.
                     19:  * 3. All advertising materials mentioning features or use of this software
                     20:  *    must display the following acknowledgement:
                     21:  *        This product includes software developed by the NetBSD
                     22:  *        Foundation, Inc. and its contributors.
                     23:  * 4. Neither the name of The NetBSD Foundation nor the names of its
                     24:  *    contributors may be used to endorse or promote products derived
                     25:  *    from this software without specific prior written permission.
                     26:  *
                     27:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
                     28:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     29:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     30:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
                     31:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     32:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     33:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     34:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     35:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     36:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     37:  * POSSIBILITY OF SUCH DAMAGE.
                     38:  */
                     39:
                     40: /* Offsets from base address */
                     41: #define OPL_L                          0
                     42: #define OPL_R                          2
                     43:
                     44: /* Offsets from base+[OPL_L|OPL_R] */
                     45: #define OPL_STATUS                     0
                     46: #define   OPL_STATUS_IRQ               0x80
                     47: #define   OPL_STATUS_FT1               0x40
                     48: #define   OPL_STATUS_FT2               0x20
                     49: #define   OPL_STATUS_MASK              0xE0
                     50: #define OPL_ADDR                       0
                     51: #define OPL_DATA                       1
                     52:
                     53: #define OPL_TEST                       0x01
                     54: #define   OPL_ENABLE_WAVE_SELECT       0x20
                     55:
                     56: #define OPL_TIMER1                     0x02
                     57: #define OPL_TIMER2                     0x03
                     58:
                     59: #define OPL_TIMER_CONTROL              0x04    /* Left */
                     60: #define   OPL_TIMER1_START             0x01
                     61: #define   OPL_TIMER2_START             0x02
                     62: #define   OPL_TIMER2_MASK              0x20
                     63: #define   OPL_TIMER1_MASK              0x40
                     64: #define   OPL_IRQ_RESET                        0x80
                     65:
                     66: #define OPL_CONNECTION_SELECT          0x04    /* Right */
                     67: #define   OPL_NOCONNECTION             0x00
                     68: #define   OPL_R_4OP_0                  0x01
                     69: #define   OPL_R_4OP_1                  0x02
                     70: #define   OPL_R_4OP_2                  0x04
                     71: #define   OPL_L_4OP_0                  0x08
                     72: #define   OPL_L_4OP_1                  0x10
                     73: #define   OPL_L_4OP_2                  0x20
                     74:
                     75: #define OPL_MODE                       0x05    /* Right */
                     76: #define   OPL3_ENABLE                  0x01
                     77: #define   OPL4_ENABLE                  0x02
                     78:
                     79: #define OPL_KBD_SPLIT                  0x08    /* Left */
                     80: #define   OPL_KEYBOARD_SPLIT           0x40
                     81: #define   OPL_COMPOSITE_SINE_WAVE_MODE 0x80
                     82:
                     83: #define OPL_PERCUSSION                 0xbd    /* Left */
                     84: #define   OPL_NOPERCUSSION             0x00
                     85: #define   OPL_HIHAT                    0x01
                     86: #define   OPL_CYMBAL                   0x02
                     87: #define   OPL_TOMTOM                   0x04
                     88: #define   OPL_SNAREDRUM                        0x08
                     89: #define   OPL_BASSDRUM                 0x10
                     90: #define          OPL_PERCUSSION_ENABLE         0x20
                     91: #define   OPL_VIBRATO_DEPTH            0x40
                     92: #define   OPL_TREMOLO_DEPTH            0x80
                     93:
                     94: /*
                     95:  * Offsets to the register banks for operators.
                     96:  */
                     97: /* AM/VIB/EG/KSR/Multiple (0x20 to 0x35) */
                     98: #define OPL_AM_VIB                     0x20
                     99: #define   OPL_KSR                      0x10
                    100: #define   OPL_SUSTAIN                  0x20
                    101: #define   OPL_VIBRATO                  0x40
                    102: #define   OPL_TREMOLO                  0x80
                    103: #define   OPL_MULTIPLE_MASK            0x0f
                    104:
                    105: /* KSL/Total level (0x40 to 0x55) */
                    106: #define OPL_KSL_LEVEL                  0x40
                    107: #define   OPL_KSL_MASK                 0xc0    /* Envelope scaling bits */
                    108: #define   OPL_TOTAL_LEVEL_MASK         0x3f    /* Strength (volume) of OP */
                    109:
                    110: /* Attack / Decay rate (0x60 to 0x75) */
                    111: #define OPL_ATTACK_DECAY               0x60
                    112: #define   OPL_ATTACK_MASK              0xf0
                    113: #define   DECAY_MASK                   0x0f
                    114:
                    115: /* Sustain level / Release rate (0x80 to 0x95) */
                    116: #define OPL_SUSTAIN_RELEASE            0x80
                    117: #define   OPL_SUSTAIN_MASK             0xf0
                    118: #define   OPL_RELEASE_MASK             0x0f
                    119:
                    120: /* Wave select (0xE0 to 0xF5) */
                    121: #define OPL_WAVE_SELECT                        0xe0
                    122:
                    123: #define OPL_MAXREG                     0xf5
                    124:
                    125: /*
                    126:  * Offsets to the register banks for voices.
                    127:  */
                    128: /* F-Number low bits (0xA0 to 0xA8). */
                    129: #define OPL_FNUM_LOW                   0xa0
                    130:
                    131: /* F-number high bits / Key on / Block (octave) (0xB0 to 0xB8) */
                    132: #define OPL_KEYON_BLOCK                        0xb0
                    133: #define          OPL_KEYON_BIT                 0x20
                    134: #define          OPL_BLOCKNUM_MASK             0x1c
                    135: #define   OPL_FNUM_HIGH_MASK           0x03
                    136:
                    137: /* Feedback / Connection (0xc0 to 0xc8) */
                    138: #define OPL_FEEDBACK_CONNECTION                0xc0
                    139: #define   OPL_FEEDBACK_MASK            0x0e
                    140: #define   OPL_CONNECTION_BIT           0x01
                    141: #define   OPL_STEREO_BITS              0x30    /* OPL-3 only */
                    142: #define     OPL_VOICE_TO_LEFT          0x10
                    143: #define     OPL_VOICE_TO_RIGHT         0x20
                    144:
                    145: #define OPL2_NVOICE 9
                    146: #define OPL3_NVOICE 18

CVSweb