185 lines
5.0 KiB
C
185 lines
5.0 KiB
C
/* $NetBSD: essvar.h,v 1.27 2014/08/16 13:01:33 nakayama Exp $ */
|
|
/*
|
|
* Copyright 1997
|
|
* Digital Equipment Corporation. All rights reserved.
|
|
*
|
|
* This software is furnished under license and may be used and
|
|
* copied only in accordance with the following terms and conditions.
|
|
* Subject to these conditions, you may download, copy, install,
|
|
* use, modify and distribute this software in source and/or binary
|
|
* form. No title or ownership is transferred hereby.
|
|
*
|
|
* 1) Any source code used, modified or distributed must reproduce
|
|
* and retain this copyright notice and list of conditions as
|
|
* they appear in the source file.
|
|
*
|
|
* 2) No right is granted to use any trade name, trademark, or logo of
|
|
* Digital Equipment Corporation. Neither the "Digital Equipment
|
|
* Corporation" name nor any trademark or logo of Digital Equipment
|
|
* Corporation may be used to endorse or promote products derived
|
|
* from this software without the prior written permission of
|
|
* Digital Equipment Corporation.
|
|
*
|
|
* 3) This software is provided "AS-IS" and any express or implied
|
|
* warranties, including but not limited to, any implied warranties
|
|
* of merchantability, fitness for a particular purpose, or
|
|
* non-infringement are disclaimed. In no event shall DIGITAL be
|
|
* liable for any damages whatsoever, and in particular, DIGITAL
|
|
* shall not be liable for special, indirect, consequential, or
|
|
* incidental damages or damages for lost profits, loss of
|
|
* revenue or loss of use, whether such damages arise in contract,
|
|
* negligence, tort, under statute, in equity, at law or otherwise,
|
|
* even if advised of the possibility of such damage.
|
|
*/
|
|
|
|
/*
|
|
** @(#) $RCSfile: essvar.h,v $ $Revision: 1.27 $ (SHARK) $Date: 2014/08/16 13:01:33 $
|
|
**
|
|
**++
|
|
**
|
|
** essvar.h
|
|
**
|
|
** FACILITY:
|
|
**
|
|
** DIGITAL Network Appliance Reference Design (DNARD)
|
|
**
|
|
** MODULE DESCRIPTION:
|
|
**
|
|
** This module contains the structure definitions and function
|
|
** prototypes for the ESS Technologies 1887/888 sound chip
|
|
** driver.
|
|
**
|
|
** AUTHORS:
|
|
**
|
|
** Blair Fidler Software Engineering Australia
|
|
** Gold Coast, Australia.
|
|
**
|
|
** CREATION DATE:
|
|
**
|
|
** May 12, 1997.
|
|
**
|
|
** MODIFICATION HISTORY:
|
|
**
|
|
**--
|
|
*/
|
|
|
|
#include <sys/callout.h>
|
|
|
|
#define ESS_DAC_PLAY_VOL 0
|
|
#define ESS_MIC_PLAY_VOL 1
|
|
#define ESS_LINE_PLAY_VOL 2
|
|
#define ESS_SYNTH_PLAY_VOL 3
|
|
#define ESS_CD_PLAY_VOL 4
|
|
#define ESS_AUXB_PLAY_VOL 5
|
|
#define ESS_INPUT_CLASS 6
|
|
|
|
#define ESS_MASTER_VOL 7
|
|
#define ESS_PCSPEAKER_VOL 8
|
|
#define ESS_OUTPUT_CLASS 9
|
|
|
|
#define ESS_RECORD_MONITOR 10
|
|
#define ESS_MONITOR_CLASS 11
|
|
|
|
#define ESS_RECORD_VOL 12
|
|
#define ESS_RECORD_SOURCE 13
|
|
#define ESS_RECORD_CLASS 14
|
|
|
|
#define ESS_1788_NDEVS 15
|
|
|
|
#define ESS_SPATIALIZER 15
|
|
#define ESS_SPATIALIZER_ENABLE 16
|
|
|
|
#define ESS_18X9_NDEVS 17
|
|
|
|
#define ESS_DAC_REC_VOL 15
|
|
#define ESS_MIC_REC_VOL 16
|
|
#define ESS_LINE_REC_VOL 17
|
|
#define ESS_SYNTH_REC_VOL 18
|
|
#define ESS_CD_REC_VOL 19
|
|
#define ESS_AUXB_REC_VOL 20
|
|
#define ESS_MIC_PREAMP 21
|
|
|
|
#define ESS_1888_NDEVS 22
|
|
#define ESS_MAX_NDEVS 22
|
|
|
|
struct ess_audio_channel
|
|
{
|
|
int drq; /* DMA channel */
|
|
bus_size_t maxsize; /* max size for DMA channel */
|
|
#define IS16BITDRQ(drq) ((drq) >= 4)
|
|
int irq; /* IRQ line for this DMA channel */
|
|
int ist;
|
|
void *ih; /* interrupt vectoring */
|
|
u_long nintr; /* number of interrupts taken */
|
|
void (*intr)(void*); /* ISR for DMA complete */
|
|
void *arg; /* arg for intr() */
|
|
|
|
/* Status information */
|
|
int active; /* boolean: channel in use? */
|
|
|
|
/* Polling state */
|
|
int polled; /* 1 if channel is polled */
|
|
int dmapos; /* last DMA pointer */
|
|
int buffersize; /* size of DMA buffer */
|
|
/* (The following is only needed due to the stupid block interface.) */
|
|
int dmacount; /* leftover partial block */
|
|
int blksize; /* current block size */
|
|
};
|
|
|
|
struct ess_softc
|
|
{
|
|
device_t sc_dev; /* base device */
|
|
isa_chipset_tag_t sc_ic;
|
|
bus_space_tag_t sc_iot; /* tag */
|
|
bus_space_handle_t sc_ioh; /* handle */
|
|
kmutex_t sc_lock;
|
|
kmutex_t sc_intr_lock;
|
|
|
|
callout_t sc_poll1_ch; /* audio1 poll */
|
|
callout_t sc_poll2_ch; /* audio2 poll */
|
|
|
|
int sc_iobase; /* I/O port base address */
|
|
|
|
u_short sc_open; /* reference count of open calls */
|
|
|
|
int ndevs;
|
|
u_char gain[ESS_MAX_NDEVS][2]; /* kept in input levels */
|
|
#define ESS_LEFT 0
|
|
#define ESS_RIGHT 1
|
|
|
|
u_int out_port; /* output port */
|
|
u_int in_mask; /* input ports */
|
|
u_int in_port; /* XXX needed for MI interface */
|
|
|
|
u_int spkr_state; /* non-null is on */
|
|
|
|
struct ess_audio_channel sc_audio1; /* audio channel for record */
|
|
struct ess_audio_channel sc_audio2; /* audio channel for playback */
|
|
|
|
u_int sc_model;
|
|
#define ESS_UNSUPPORTED 0
|
|
#define ESS_688 1
|
|
#define ESS_1688 2
|
|
#define ESS_1788 3
|
|
#define ESS_1868 4
|
|
#define ESS_1869 5
|
|
#define ESS_1878 6
|
|
#define ESS_1879 7
|
|
#define ESS_888 8
|
|
#define ESS_1887 9
|
|
#define ESS_1888 10
|
|
|
|
u_int sc_version; /* Legacy ES688/ES1688 ID */
|
|
|
|
u_int sc_spatializer; /* spatializer enable */
|
|
|
|
/* game port on es1888 */
|
|
bus_space_tag_t sc_joy_iot;
|
|
bus_space_handle_t sc_joy_ioh;
|
|
};
|
|
|
|
int essmatch(struct ess_softc *);
|
|
void essattach(struct ess_softc *, int);
|
|
int ess_config_addr(struct ess_softc *);
|
|
|