1*fabcfecbSjsg /* $OpenBSD: essvar.h,v 1.6 2024/10/22 21:50:02 jsg Exp $ */ 244e00086Sniklas /* $NetBSD: essvar.h,v 1.14 1999/03/18 06:03:31 mycroft Exp $ */ 344e00086Sniklas /* 444e00086Sniklas * Copyright 1997 544e00086Sniklas * Digital Equipment Corporation. All rights reserved. 644e00086Sniklas * 744e00086Sniklas * This software is furnished under license and may be used and 844e00086Sniklas * copied only in accordance with the following terms and conditions. 944e00086Sniklas * Subject to these conditions, you may download, copy, install, 1044e00086Sniklas * use, modify and distribute this software in source and/or binary 1144e00086Sniklas * form. No title or ownership is transferred hereby. 1244e00086Sniklas * 1344e00086Sniklas * 1) Any source code used, modified or distributed must reproduce 1444e00086Sniklas * and retain this copyright notice and list of conditions as 1544e00086Sniklas * they appear in the source file. 1644e00086Sniklas * 1744e00086Sniklas * 2) No right is granted to use any trade name, trademark, or logo of 1844e00086Sniklas * Digital Equipment Corporation. Neither the "Digital Equipment 1944e00086Sniklas * Corporation" name nor any trademark or logo of Digital Equipment 2044e00086Sniklas * Corporation may be used to endorse or promote products derived 2144e00086Sniklas * from this software without the prior written permission of 2244e00086Sniklas * Digital Equipment Corporation. 2344e00086Sniklas * 2444e00086Sniklas * 3) This software is provided "AS-IS" and any express or implied 2544e00086Sniklas * warranties, including but not limited to, any implied warranties 2644e00086Sniklas * of merchantability, fitness for a particular purpose, or 2744e00086Sniklas * non-infringement are disclaimed. In no event shall DIGITAL be 2844e00086Sniklas * liable for any damages whatsoever, and in particular, DIGITAL 2944e00086Sniklas * shall not be liable for special, indirect, consequential, or 3044e00086Sniklas * incidental damages or damages for lost profits, loss of 3144e00086Sniklas * revenue or loss of use, whether such damages arise in contract, 3244e00086Sniklas * negligence, tort, under statute, in equity, at law or otherwise, 3344e00086Sniklas * even if advised of the possibility of such damage. 3444e00086Sniklas */ 3544e00086Sniklas 3644e00086Sniklas /* 37*fabcfecbSjsg ** @(#) $RCSfile: essvar.h,v $ $Revision: 1.6 $ (SHARK) $Date: 2024/10/22 21:50:02 $ 3844e00086Sniklas ** 3944e00086Sniklas **++ 4044e00086Sniklas ** 4144e00086Sniklas ** essvar.h 4244e00086Sniklas ** 4344e00086Sniklas ** FACILITY: 4444e00086Sniklas ** 4544e00086Sniklas ** DIGITAL Network Appliance Reference Design (DNARD) 4644e00086Sniklas ** 4744e00086Sniklas ** MODULE DESCRIPTION: 4844e00086Sniklas ** 4944e00086Sniklas ** This module contains the structure definitions and function 5044e00086Sniklas ** prototypes for the ESS Technologies 1887/888 sound chip 5144e00086Sniklas ** driver. 5244e00086Sniklas ** 5344e00086Sniklas ** AUTHORS: 5444e00086Sniklas ** 5544e00086Sniklas ** Blair Fidler Software Engineering Australia 5644e00086Sniklas ** Gold Coast, Australia. 5744e00086Sniklas ** 5844e00086Sniklas ** CREATION DATE: 5944e00086Sniklas ** 6044e00086Sniklas ** May 12, 1997. 6144e00086Sniklas ** 6244e00086Sniklas ** MODIFICATION HISTORY: 6344e00086Sniklas ** 6444e00086Sniklas **-- 6544e00086Sniklas */ 6644e00086Sniklas #define ESS_DAC_PLAY_VOL 0 6744e00086Sniklas #define ESS_MIC_PLAY_VOL 1 6844e00086Sniklas #define ESS_LINE_PLAY_VOL 2 6944e00086Sniklas #define ESS_SYNTH_PLAY_VOL 3 7044e00086Sniklas #define ESS_CD_PLAY_VOL 4 7144e00086Sniklas #define ESS_AUXB_PLAY_VOL 5 7244e00086Sniklas #define ESS_INPUT_CLASS 6 7344e00086Sniklas 7444e00086Sniklas #define ESS_MASTER_VOL 7 7544e00086Sniklas #define ESS_PCSPEAKER_VOL 8 7644e00086Sniklas #define ESS_OUTPUT_CLASS 9 7744e00086Sniklas 7844e00086Sniklas #define ESS_RECORD_MONITOR 10 7944e00086Sniklas #define ESS_MONITOR_CLASS 11 8044e00086Sniklas 8144e00086Sniklas #define ESS_RECORD_VOL 12 8244e00086Sniklas #define ESS_RECORD_SOURCE 13 8344e00086Sniklas #define ESS_RECORD_CLASS 14 8444e00086Sniklas 8544e00086Sniklas #define ESS_1788_NDEVS 15 8644e00086Sniklas 8744e00086Sniklas #define ESS_DAC_REC_VOL 15 8844e00086Sniklas #define ESS_MIC_REC_VOL 16 8944e00086Sniklas #define ESS_LINE_REC_VOL 17 9044e00086Sniklas #define ESS_SYNTH_REC_VOL 18 9144e00086Sniklas #define ESS_CD_REC_VOL 19 9244e00086Sniklas #define ESS_AUXB_REC_VOL 20 9344e00086Sniklas #define ESS_MIC_PREAMP 21 9444e00086Sniklas 9544e00086Sniklas #define ESS_1888_NDEVS 22 9644e00086Sniklas #define ESS_MAX_NDEVS 22 9744e00086Sniklas 98*fabcfecbSjsg struct ess_audio_channel { 9944e00086Sniklas int drq; /* DMA channel */ 10044e00086Sniklas #define IS16BITDRQ(drq) ((drq) >= 4) 10144e00086Sniklas int irq; /* IRQ line for this DMA channel */ 10244e00086Sniklas int ist; 10344e00086Sniklas void *ih; /* interrupt vectoring */ 10444e00086Sniklas u_long nintr; /* number of interrupts taken */ 105c4071fd1Smillert void (*intr)(void *); /* ISR for DMA complete */ 10644e00086Sniklas void *arg; /* arg for intr() */ 10744e00086Sniklas 10844e00086Sniklas /* Status information */ 10944e00086Sniklas int active; /* boolean: channel in use? */ 11044e00086Sniklas 11144e00086Sniklas /* Polling state */ 11244e00086Sniklas int polled; /* 1 if channel is polled */ 11344e00086Sniklas int dmapos; /* last DMA pointer */ 11444e00086Sniklas int buffersize; /* size of DMA buffer */ 11544e00086Sniklas /* (The following is only needed due to the stupid block interface.) */ 11644e00086Sniklas int dmacount; /* leftover partial block */ 11744e00086Sniklas int blksize; /* current block size */ 11844e00086Sniklas }; 11944e00086Sniklas 120*fabcfecbSjsg struct ess_softc { 12144e00086Sniklas struct device sc_dev; /* base device */ 12244e00086Sniklas struct device *sc_isa; 12344e00086Sniklas isa_chipset_tag_t sc_ic; 12444e00086Sniklas bus_space_tag_t sc_iot; /* tag */ 12544e00086Sniklas bus_space_handle_t sc_ioh; /* handle */ 1261de445edSmickey struct timeout sc_tmo1, sc_tmo2; 12744e00086Sniklas 12844e00086Sniklas int sc_iobase; /* I/O port base address */ 12944e00086Sniklas 13044e00086Sniklas u_short sc_open; /* reference count of open calls */ 13144e00086Sniklas 13244e00086Sniklas int ndevs; 13344e00086Sniklas u_char gain[ESS_MAX_NDEVS][2]; /* kept in input levels */ 13444e00086Sniklas #define ESS_LEFT 0 13544e00086Sniklas #define ESS_RIGHT 1 13644e00086Sniklas 13744e00086Sniklas u_int out_port; /* output port */ 13844e00086Sniklas u_int in_mask; /* input ports */ 13944e00086Sniklas u_int in_port; /* XXX needed for MI interface */ 14044e00086Sniklas 14144e00086Sniklas u_int spkr_state; /* non-null is on */ 14244e00086Sniklas 14344e00086Sniklas struct ess_audio_channel sc_audio1; /* audio channel for record */ 14444e00086Sniklas struct ess_audio_channel sc_audio2; /* audio channel for playback */ 14544e00086Sniklas 14644e00086Sniklas u_int sc_model; 14744e00086Sniklas #define ESS_UNSUPPORTED 0 14844e00086Sniklas #define ESS_1888 1 14944e00086Sniklas #define ESS_1887 2 15044e00086Sniklas #define ESS_888 3 15144e00086Sniklas #define ESS_1788 4 152777cb93cSkstailey #define ESS_1869 5 153777cb93cSkstailey #define ESS_1879 6 154777cb93cSkstailey #define ESS_1868 7 155777cb93cSkstailey #define ESS_1878 8 15644e00086Sniklas 15744e00086Sniklas u_int sc_version; /* Legacy ES688/ES1688 ID */ 15844e00086Sniklas }; 15944e00086Sniklas 160c4071fd1Smillert int essmatch(struct ess_softc *); 161c4071fd1Smillert void essattach(struct ess_softc *); 16244e00086Sniklas 163