1 /* $OpenBSD: envyvar.h,v 1.5 2008/03/22 11:23:11 ratchov Exp $ */ 2 /* 3 * Copyright (c) 2007 Alexandre Ratchov <alex@caoua.org> 4 * 5 * Permission to use, copy, modify, and distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18 #ifndef SYS_DEV_PCI_ENVYVAR_H 19 #define SYS_DEV_PCI_ENVYVAR_H 20 21 #include <sys/types.h> 22 #include <sys/device.h> 23 #include <dev/audio_if.h> 24 25 struct envy_buf { 26 bus_dma_segment_t seg; 27 bus_dmamap_t map; 28 caddr_t addr; 29 size_t size; 30 }; 31 32 /* 33 * ak4524 codecs 34 */ 35 struct envy_ak { 36 unsigned char reg[8]; /* shadow for ak4524 registers */ 37 }; 38 39 struct envy_softc { 40 struct device dev; 41 struct device *audio; 42 struct envy_buf ibuf, obuf; 43 pcitag_t pci_tag; 44 pci_chipset_tag_t pci_pc; 45 pci_intr_handle_t *pci_ih; 46 bus_dma_tag_t pci_dmat; 47 bus_space_tag_t ccs_iot; 48 bus_space_handle_t ccs_ioh; 49 bus_size_t ccs_iosz; 50 bus_space_tag_t mt_iot; 51 bus_space_handle_t mt_ioh; 52 bus_size_t mt_iosz; 53 struct envy_ak ak[4]; 54 void (*iintr)(void *); 55 void *iarg; 56 void (*ointr)(void *); 57 void *oarg; 58 }; 59 60 #define ENVY_MIX_CLASSIN 0 61 #define ENVY_MIX_CLASSOUT 1 62 #define ENVY_MIX_CLASSMON 2 63 #define ENVY_MIX_OUTSRC 3 64 #define ENVY_MIX_MONITOR 13 65 #define ENVY_MIX_ILVL(nak) 33 66 #define ENVY_MIX_OLVL(nak) (ENVY_MIX_ILVL(nak) + 2 * (nak)) 67 #define ENVY_MIX_OMUTE(nak) (ENVY_MIX_OLVL(nak) + 2 * (nak)) 68 #define ENVY_MIX_INVAL(nak) (ENVY_MIX_OMUTE(nak) + (nak)) 69 70 #define ENVY_MIX_OUTSRC_LINEIN 0 71 #define ENVY_MIX_OUTSRC_SPDIN 8 72 #define ENVY_MIX_OUTSRC_DMA 10 73 #define ENVY_MIX_OUTSRC_MON 11 74 75 #endif /* !defined(SYS_DEV_PCI_ENVYVAR_H) */ 76