Home | History | Annotate | Line # | Download | only in pci
esoreg.h revision 1.3
      1  1.3  kleink /*	$NetBSD: esoreg.h,v 1.3 1999/09/23 11:50:19 kleink Exp $	*/
      2  1.1  kleink 
      3  1.1  kleink /*
      4  1.1  kleink  * Copyright (c) 1999 Klaus J. Klein
      5  1.1  kleink  * All rights reserved.
      6  1.1  kleink  *
      7  1.1  kleink  * Redistribution and use in source and binary forms, with or without
      8  1.1  kleink  * modification, are permitted provided that the following conditions
      9  1.1  kleink  * are met:
     10  1.1  kleink  * 1. Redistributions of source code must retain the above copyright
     11  1.1  kleink  *    notice, this list of conditions and the following disclaimer.
     12  1.1  kleink  * 2. Redistributions in binary form must reproduce the above copyright
     13  1.1  kleink  *    notice, this list of conditions and the following disclaimer in the
     14  1.1  kleink  *    documentation and/or other materials provided with the distribution.
     15  1.1  kleink  * 3. The name of the author may not be used to endorse or promote products
     16  1.1  kleink  *    derived from this software without specific prior written permission.
     17  1.1  kleink  *
     18  1.1  kleink  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     19  1.1  kleink  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     20  1.1  kleink  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     21  1.1  kleink  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     22  1.1  kleink  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
     23  1.1  kleink  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     24  1.1  kleink  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
     25  1.1  kleink  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
     26  1.1  kleink  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     27  1.1  kleink  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     28  1.1  kleink  * SUCH DAMAGE.
     29  1.1  kleink  */
     30  1.1  kleink 
     31  1.1  kleink #ifndef _DEV_PCI_ESOREG_H_
     32  1.1  kleink #define _DEV_PCI_ESOREG_H_
     33  1.1  kleink 
     34  1.1  kleink /*
     35  1.1  kleink  * PCI Configuration Registers
     36  1.1  kleink  */
     37  1.1  kleink #define ESO_PCI_BAR_IO		0x10	/* I/O space base address */
     38  1.1  kleink #define ESO_PCI_BAR_SB		0x14	/* SB I/O space base address */
     39  1.1  kleink #define ESO_PCI_BAR_VC		0x18	/* VC I/O space base address */
     40  1.1  kleink #define ESO_PCI_BAR_MPU		0x1c	/* MPU-401 I/O space base address */
     41  1.1  kleink #define ESO_PCI_BAR_GAME	0x20	/* Game port I/O space base address */
     42  1.1  kleink #define ESO_PCI_S1C		0x50	/* Solo-1 Configuration */
     43  1.1  kleink #define  ESO_PCI_S1C_IRQP_MASK	0x0006000 /* ISA IRQ emulation policy */
     44  1.1  kleink #define  ESO_PCI_S1C_DMAP_MASK	0x0000700 /* DMA policy */
     45  1.1  kleink #define ESO_PCI_DDMAC		0x60	/* DDMA Control base address */
     46  1.1  kleink #define  ESO_PCI_DDMAC_DE	0x01	 /* Distributed DMA enable */
     47  1.1  kleink 
     48  1.1  kleink /* PCI Revision IDs of the Solo-1 PCI AudioDrive family */
     49  1.1  kleink #define ESO_PCI_REVISION_ES1938	0x00	/* ES1938 */
     50  1.1  kleink #define ESO_PCI_REVISION_ES1946	0x01	/* ES1946 */
     51  1.1  kleink 
     52  1.1  kleink /*
     53  1.1  kleink  * Check the validity of a PCI I/O space base address for use in
     54  1.1  kleink  * ESO_PCI_DDMAC; see the relevant comment in the attach function.
     55  1.1  kleink  */
     56  1.1  kleink #define ESO_VALID_DDMAC_BASE(addr) \
     57  1.1  kleink     (((addr) & 0x03ff) != 0)
     58  1.1  kleink 
     59  1.1  kleink /*
     60  1.1  kleink  * I/O Port offsets
     61  1.1  kleink  */
     62  1.1  kleink /* I/O Device ports */
     63  1.1  kleink #define ESO_IO_A2DMAA		0x00	/* [RW] Audio 2 b/c DMA address */
     64  1.1  kleink #define ESO_IO_A2DMAC		0x04	/* [RW] Audio 2 b/c DMA count */
     65  1.1  kleink #define ESO_IO_A2DMAM		0x06	/* [RW] Solo-1 mode register */
     66  1.1  kleink #define  ESO_IO_A2DMAM_DMAENB	0x02	 /* DMA enable */
     67  1.1  kleink #define  ESO_IO_A2DMAM_AUTO	0x08	 /* Auto-Initialize DMA enable */
     68  1.1  kleink #define ESO_IO_IRQCTL		0x07	/* [RW] IRQ control register */
     69  1.1  kleink #define  ESO_IO_IRQCTL_A1IRQ	0x10	 /* Audio 1 IRQ */
     70  1.1  kleink #define  ESO_IO_IRQCTL_A2IRQ	0x20	 /* Audio 2 IRQ */
     71  1.1  kleink #define  ESO_IO_IRQCTL_HVIRQ	0x40	 /* Hardware volume IRQ */
     72  1.1  kleink #define  ESO_IO_IRQCTL_MPUIRQ	0x80	 /* MPU-401 IRQ */
     73  1.1  kleink #define  ESO_IO_IRQCTL_MASK	0xf0	 /* all of the above */
     74  1.1  kleink 
     75  1.1  kleink /* Audio/FM Device ports */
     76  1.1  kleink #define ESO_SB_STATUS		0x00	/* [R]  FM Status */
     77  1.1  kleink #define ESO_SB_LBA		0x00	/* [W]  FM Low Bank Address */
     78  1.1  kleink #define ESO_SB_LBDW		0x01	/* [W]  FM Low Bank Data Write */
     79  1.1  kleink #define ESO_SB_HBA		0x02	/* [W]  FM High Bank Address */
     80  1.1  kleink #define ESO_SB_HBDW		0x03	/* [W]  FM High Bank Data Write */
     81  1.1  kleink #define ESO_SB_MIXERADDR	0x04	/* [RW] Mixer Address Register */
     82  1.1  kleink #define ESO_SB_MIXERDATA	0x05	/* [RW] Mixer Data Register */
     83  1.1  kleink #define ESO_SB_RESET		0x06	/* [W]  Reset */
     84  1.1  kleink #define  ESO_SB_RESET_SW	0x01	 /* SW Reset */
     85  1.1  kleink #define  ESO_SB_RESET_FIFO	0x02	 /* FIFO Reset */
     86  1.1  kleink #define ESO_SB_STATUSFLAGS	0x06	/* [R]  Status Flags */
     87  1.1  kleink #define ESO_SB_PMR		0x07	/* [RW] Power Management Register */
     88  1.1  kleink #define ESO_SB_RDR		0x0a	/* [R]  Read Data Register */
     89  1.1  kleink #define  ESO_SB_RDR_RESETMAGIC	0xaa	 /* Indicates SW reset completion */
     90  1.1  kleink #define ESO_SB_WDR		0x0c	/* [W]  Write Data Register */
     91  1.1  kleink #define ESO_SB_RSR		0x0c	/* [R]  Read Status Register */
     92  1.1  kleink #define  ESO_SB_RSR_BUSY	0x80	 /* WDR not available or Solo-1 busy */
     93  1.1  kleink #define ESO_SB_RBSR		0x0e	/* [R]  Read Buffer Status Register */
     94  1.1  kleink #define  ESO_SB_RBSR_RDAV	0x80	 /* Data available in RDR */
     95  1.1  kleink #define ESO_SB_PIOAFR		0x0f	/* [RW] PIO Access to FIFO Register */
     96  1.3  kleink 
     97  1.3  kleink /* Game Port Device ports */
     98  1.3  kleink #define ESO_GAME_JSTK_OFFSET	0x01	/* Offset from base address */
     99  1.3  kleink #define ESO_GAME_JSTK_SIZE	0x01	/* Size of region */
    100  1.1  kleink 
    101  1.1  kleink /* (Audio 1) DMAC Device ports */
    102  1.1  kleink #define ESO_DMAC_DMAA		0x00	/* [RW] DMA Current/Base Address */
    103  1.1  kleink #define ESO_DMAC_DMAC		0x04	/* [RW] DMA Current/Base Count */
    104  1.1  kleink #define ESO_DMAC_COMMAND	0x08	/* [W]  DMA Command */
    105  1.1  kleink #define  ESO_DMAC_COMMAND_ENB	0x04	 /* Controller enable */
    106  1.1  kleink #define  ESO_DMAC_COMMAND_DREQPOL 0x40	 /* DREQ signal polarity */
    107  1.1  kleink #define  ESO_DMAC_COMMAND_DACKPOL 0x80	 /* DACK signal polarity */
    108  1.1  kleink #define ESO_DMAC_STATUS		0x08	/* [R]  DMA Status */
    109  1.1  kleink #define ESO_DMAC_MODE		0x0b	/* [W]  DMA Mode */
    110  1.1  kleink #define ESO_DMAC_CLEAR		0x0d	/* [W]  DMA Master Clear */
    111  1.1  kleink #define ESO_DMAC_MASK		0x0f	/* [RW] DMA Mask */
    112  1.1  kleink #define  ESO_DMAC_MASK_MASK	0x01	/*  Mask DREQ */
    113  1.1  kleink 
    114  1.1  kleink /* Controller commands */
    115  1.1  kleink #define ESO_CMD_RCR		0xc0	/* Read ext. controller registers */
    116  1.1  kleink #define ESO_CMD_EXTENB		0xc6	/* Enable Solo-1 Extension commands */
    117  1.1  kleink #define ESO_CMD_EXTDIS		0xc7	/* Disable Solo-1 Extension commands */
    118  1.1  kleink 
    119  1.1  kleink /* Mixer registers */
    120  1.1  kleink #define ESO_MIXREG_RESET	0x00	/* Reset mixer registers */
    121  1.1  kleink #define  ESO_MIXREG_RESET_RESET	0x00	 /* Any value will do */
    122  1.1  kleink #define ESO_MIXREG_PVR_MIC	0x1a	/* Playback mixer: Microphone */
    123  1.1  kleink #define ESO_MIXREG_ERS		0x1c	/* Extended record source */
    124  1.1  kleink #define  ESO_MIXREG_ERS_MIC	0x00	 /* Microphone */
    125  1.1  kleink #define  ESO_MIXREG_ERS_CD	0x02	 /* CD */
    126  1.1  kleink #define  ESO_MIXREG_ERS_MIC2	0x04	 /* Microphone (again?) */
    127  1.1  kleink #define  ESO_MIXREG_ERS_MIXER	0x05	 /* Record mixer */
    128  1.1  kleink #define  ESO_MIXREG_ERS_LINE	0x06	 /* Line */
    129  1.1  kleink #define  ESO_MIXREG_ERS_MUTE	0x10	 /* Mutes input to filters for rec */
    130  1.1  kleink #define ESO_MIXREG_PCSVR	0x3c	/* PC Speaker Volume Register */
    131  1.1  kleink #define ESO_MIXREG_PCSVR_RESV	0xf8	 /* Reserved */
    132  1.1  kleink #define ESO_MIXREG_PVR_SYNTH	0x36	/* Playback mixer: FM/Synth */
    133  1.1  kleink #define ESO_MIXREG_PVR_CD	0x38	/* Playback mixer: AuxA/CD */
    134  1.1  kleink #define ESO_MIXREG_PVR_AUXB	0x3a	/* Playback mixer: AuxB */
    135  1.1  kleink #define ESO_MIXREG_PCSPKR_VOL	0x3c	/* PC speaker volume */
    136  1.1  kleink #define ESO_MIXREG_PVR_LINE	0x3e	/* Playback mixer: Line */
    137  1.1  kleink #define ESO_MIXREG_SPAT		0x50	/* Spatializer Enable and Mode */
    138  1.1  kleink #define  ESO_MIXREG_SPAT_MONO	0x02	/* 0 = Stereo in, 1 = Mono in */
    139  1.1  kleink #define  ESO_MIXREG_SPAT_RSTREL	0x04	/* 0 = reset, 1 = release from reset */
    140  1.1  kleink #define  ESO_MIXREG_SPAT_ENB	0x08	/* Spatializer Enable */
    141  1.1  kleink #define ESO_MIXREG_SPATLVL	0x52	/* Spatializer Level */
    142  1.1  kleink #define ESO_MIXREG_LMVM		0x60	/* Left Master Volume and Mute */
    143  1.1  kleink #define  ESO_MIXREG_LMVM_MUTE	0x40	 /* Mute enable */
    144  1.1  kleink #define ESO_MIXREG_RMVM		0x62	/* Right Master Volume and Mute */
    145  1.1  kleink #define  ESO_MIXREG_RMVM_MUTE	0x40	 /* Mute enable */
    146  1.1  kleink #define ESO_MIXREG_MVCTL	0x64	/* Master Volume Control */
    147  1.2  kleink #define  ESO_MIXREG_MVCTL_MPUIRQM 0x40	 /* MPU-401 interrupt unmask */
    148  1.1  kleink #define ESO_MIXREG_RVR_MIC	0x68	/* Record mixer: Microphone */
    149  1.1  kleink #define ESO_MIXREG_RVR_A2	0x69	/* Record mixer: Audio 2 */
    150  1.1  kleink #define ESO_MIXREG_RVR_CD	0x6a	/* Record mixer: AuxA/CD */
    151  1.1  kleink #define ESO_MIXREG_RVR_SYNTH	0x6b	/* Record mixer: FM/Synth */
    152  1.1  kleink #define ESO_MIXREG_RVR_AUXB	0x6c	/* Record mixer: AuxB */
    153  1.1  kleink #define ESO_MIXREG_PVR_MONO	0x6d	/* Playback mixer: Mono In */
    154  1.1  kleink #define ESO_MIXREG_RVR_LINE	0x6e	/* Record mixer: Line */
    155  1.1  kleink #define ESO_MIXREG_RVR_MONO	0x6f	/* Record mixer: Mono In */
    156  1.1  kleink #define ESO_MIXREG_A2SRG	0x70	/* Audio 2 Sample Rate Generator */
    157  1.1  kleink #define ESO_MIXREG_A2MODE	0x71	/* Audio 2 Mode */
    158  1.1  kleink #define  ESO_MIXREG_A2MODE_ASYNC 0x02	 /* A2 SRG and FLTDIV async wrt A1 */
    159  1.1  kleink #define  ESO_MIXREG_A2MODE_NEWA1 0x20	 /* New-style SRG for Audio 1 */
    160  1.1  kleink #define ESO_MIXREG_A2FLTDIV	0x72	/* Audio 2 Filter Rate Divider */
    161  1.1  kleink #define ESO_MIXREG_A2TCRLO	0x74	/* Audio 2 Transfer Count Reload LO */
    162  1.1  kleink #define ESO_MIXREG_A2TCRHI	0x76	/* Audio 2 Transfer Count Reload HI */
    163  1.1  kleink #define ESO_MIXREG_A2C1		0x78	/* Audio 2 Control 1 */
    164  1.1  kleink #define  ESO_MIXREG_A2C1_FIFOENB 0x01	 /* FIFO enable */
    165  1.1  kleink #define  ESO_MIXREG_A2C1_DMAENB	0x02	 /* DMA enable */
    166  1.1  kleink #define  ESO_MIXREG_A2C1_RESV0	0xcc	 /* Reserved, always write 0 XXXb5? */
    167  1.1  kleink #define  ESO_MIXREG_A2C1_AUTO	0x10	 /* Auto-initialize mode */
    168  1.1  kleink #define ESO_MIXREG_A2C2		0x7a	/* Audio 2 Control 2 */
    169  1.1  kleink #define  ESO_MIXREG_A2C2_16BIT	0x01	 /* 1 = 16-bit, 0 = 8-bit */
    170  1.1  kleink #define  ESO_MIXREG_A2C2_STEREO	0x02	 /* 1 = Stereo, 0 = Mono */
    171  1.1  kleink #define  ESO_MIXREG_A2C2_SIGNED	0x04	 /* 1 = Signed data, 0 = unsigned */
    172  1.1  kleink #define  ESO_MIXREG_A2C2_RESV0	0x38	 /* Reserved, always write 0 */
    173  1.1  kleink #define  ESO_MIXREG_A2C2_IRQM	0x40	 /* IRQ mask */
    174  1.1  kleink #define  ESO_MIXREG_A2C2_IRQ	0x80	 /* IRQ latch */
    175  1.1  kleink #define ESO_MIXREG_PVR_A2	0x7c	/* Playback mixer: Audio 2 */
    176  1.1  kleink #define ESO_MIXREG_MPM		0x7d	/* Microphone Preamp, Mono In/Out */
    177  1.1  kleink #define  ESO_MIXREG_MPM_MOMASK  0x03	 /* MONO_OUT value mask */
    178  1.1  kleink #define  ESO_MIXREG_MPM_MOMUTE  0x00	 /* MONO_OUT mute */
    179  1.1  kleink #define  ESO_MIXREG_MPM_MOCINR  0x01	 /* MONO_OUT source CIN_R */
    180  1.1  kleink #define  ESO_MIXREG_MPM_MOA2R	0x02	 /* MONO_OUT source Audio 2 Right */
    181  1.1  kleink #define  ESO_MIXREG_MPM_MOREC	0x03	 /* MONO_OUT source record stage */
    182  1.1  kleink #define  ESO_MIXREG_MPM_PREAMP	0x08	 /* Preamp enable */
    183  1.1  kleink #define  ESO_MIXREG_MPM_RESV0	0xf0	 /* Reserved, always write 0 */
    184  1.1  kleink 
    185  1.1  kleink /* Controller registers */
    186  1.1  kleink #define ESO_CTLREG_SRG		0xa1	/* Sample Rate Generator */
    187  1.1  kleink #define ESO_CTLREG_FLTDIV	0xa2	/* Filter Rate Divider */
    188  1.1  kleink #define ESO_CTLREG_A1TCRLO	0xa4	/* Audio 1 Transfer Count Reload LO */
    189  1.1  kleink #define ESO_CTLREG_A1TCRHI	0xa5	/* Audio 1 Transfer Count Reload HI */
    190  1.1  kleink #define ESO_CTLREG_ACTL		0xa8	/* Analog Control */
    191  1.1  kleink #define  ESO_CTLREG_ACTL_STEREO	0x01	 /* DMA converters stereo */
    192  1.1  kleink #define  ESO_CTLREG_ACTL_MONO	0x02	 /* DMA converters mono */
    193  1.1  kleink #define  ESO_CTLREG_ACTL_RESV1	0x10	 /* Reserved, always write 1 */
    194  1.1  kleink #define  ESO_CTLREG_ACTL_RESV0	0xe4	 /* Reserved, always write 0 */
    195  1.1  kleink #define  ESO_CTLREG_ACTL_RECMON	0x08	 /* Record Monitor enable */
    196  1.1  kleink #define ESO_CTLREG_LAIC		0xb1	/* Legacy Audio Interrupt Control */
    197  1.1  kleink #define  ESO_CTLREG_LAIC_PINENB	0x10	 /* Interrupt pin enable */
    198  1.1  kleink #define  ESO_CTLREG_LAIC_EXTENB	0x40	 /* Extended mode IRQ enable */
    199  1.1  kleink #define ESO_CTLREG_DRQCTL	0xb2	/* DRQ Control */
    200  1.1  kleink #define  ESO_CTLREG_DRQCTL_ENB1	0x10	 /* Supposedly no function, but ... */
    201  1.1  kleink #define  ESO_CTLREG_DRQCTL_EXTENB 0x40	 /* Extended mode DRQ enable */
    202  1.1  kleink #define ESO_CTLREG_RECLVL	0xb4	/* Record Level */
    203  1.1  kleink #define ESO_CTLREG_A1C1		0xb7	/* Audio 1 Control 1 */
    204  1.1  kleink #define  ESO_CTLREG_A1C1_LOAD	0x01	 /* Generate load signal */
    205  1.1  kleink #define  ESO_CTLREG_A1C1_RESV0	0x02	 /* Reserved, always write 0 */
    206  1.1  kleink #define  ESO_CTLREG_A1C1_16BIT	0x04	 /* 1 = 16-bit, 0 = 8-bit */
    207  1.1  kleink #define  ESO_CTLREG_A1C1_STEREO	0x08	 /* DMA FIFO Stereo */
    208  1.1  kleink #define  ESO_CTLREG_A1C1_RESV1	0x10	 /* Reserved, always write 1 */
    209  1.1  kleink #define  ESO_CTLREG_A1C1_SIGNED	0x20	 /* 1 = Signed data, 0 = unsigned */
    210  1.1  kleink #define  ESO_CTLREG_A1C1_MONO	0x40	 /* DMA FIFO Mono */
    211  1.1  kleink #define  ESO_CTLREG_A1C1_FIFOENB 0x80	 /* DMA FIFO enable */
    212  1.1  kleink #define ESO_CTLREG_A1C2		0xb8	/* Audio 1 Control 2 */
    213  1.1  kleink #define  ESO_CTLREG_A1C2_DMAENB	0x01	 /* DMA enable */
    214  1.1  kleink #define  ESO_CTLREG_A1C2_READ	0x02	 /* 1 = DMA read/ADC, 0 = write/DAC */
    215  1.1  kleink #define  ESO_CTLREG_A1C2_AUTO	0x04	 /* Auto-initialize DMA enable */
    216  1.1  kleink #define  ESO_CTLREG_A1C2_ADC	0x08	 /* 1 = ADC mode, 0 = DAC mode */
    217  1.1  kleink #define ESO_CTLREG_A1TT		0xb9	/* Audio 1 Transfer Type */
    218  1.1  kleink #define  ESO_CTLREG_A1TT_SINGLE	0x00	 /* Single-Transfer */
    219  1.1  kleink #define  ESO_CTLREG_A1TT_DEMAND2 0x01	 /* Demand-Transfer, 2 bytes/DREQ */
    220  1.1  kleink #define  ESO_CTLREG_A1TT_DEMAND4 0x02	 /* Demand-Transfer, 4 bytes/DREQ */
    221  1.1  kleink 
    222  1.1  kleink /*
    223  1.1  kleink  * Sample rate related constants.
    224  1.1  kleink  * Note: the use of these clock sources must be explicitly enabled for Audio 1.
    225  1.1  kleink  */
    226  1.1  kleink #define ESO_MINRATE		6000
    227  1.1  kleink #define ESO_MAXRATE		48000
    228  1.1  kleink #define ESO_CLK0		793800L	/* Clock source 0 frequency */
    229  1.1  kleink #define ESO_CLK1		768000L	/* Clock source 1 frequency */
    230  1.1  kleink #define ESO_CLK1_SELECT		0x80	/* MSb of divider selects clock src */
    231  1.1  kleink 
    232  1.1  kleink /*
    233  1.1  kleink  * Upper bounds on several polling loop iterations.
    234  1.1  kleink  */
    235  1.1  kleink #define ESO_RESET_TIMEOUT	5000
    236  1.1  kleink #define ESO_RDR_TIMEOUT		5000
    237  1.1  kleink #define ESO_WDR_TIMEOUT		5000
    238  1.1  kleink 
    239  1.1  kleink /*
    240  1.1  kleink  * Mixer state data conversions.
    241  1.1  kleink  */
    242  1.1  kleink /* Truncate MI 8-bit precision gain values to the width of chip registers. */
    243  1.1  kleink #define ESO_GAIN_TO_3BIT(x)		((x) & 0xe0)
    244  1.1  kleink #define ESO_GAIN_TO_4BIT(x)		((x) & 0xf0)
    245  1.1  kleink #define ESO_GAIN_TO_6BIT(x)		((x) & 0xfc)
    246  1.1  kleink /* Convert two 4-bit gain values to standard mixer stereo register layout. */
    247  1.1  kleink #define ESO_4BIT_GAIN_TO_STEREO(l,r)	((l) | ((r) >> 4))
    248  1.1  kleink 
    249  1.1  kleink #endif /* !_DEV_PCI_ESOREG_H_ */
    250