1 /* $OpenBSD: envyvar.h,v 1.7 2009/04/25 12:15:10 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_softc; 26 27 struct envy_buf { 28 bus_dma_segment_t seg; 29 bus_dmamap_t map; 30 caddr_t addr; 31 size_t size; 32 }; 33 34 struct envy_card { 35 int subid; 36 char *name; 37 int nadc, ndac; 38 void (*init)(struct envy_softc *); 39 void (*ak_write)(struct envy_softc *, int, int, int); 40 unsigned char *eeprom; 41 }; 42 43 struct envy_ak { 44 unsigned char reg[16]; 45 }; 46 47 struct envy_softc { 48 struct device dev; 49 struct device *audio; 50 int isht; /* is a Envy24HT ? */ 51 struct envy_buf ibuf, obuf; 52 pcitag_t pci_tag; 53 pci_chipset_tag_t pci_pc; 54 pci_intr_handle_t *pci_ih; 55 bus_dma_tag_t pci_dmat; 56 bus_space_tag_t ccs_iot; 57 bus_space_handle_t ccs_ioh; 58 bus_size_t ccs_iosz; 59 bus_space_tag_t mt_iot; 60 bus_space_handle_t mt_ioh; 61 bus_size_t mt_iosz; 62 struct envy_card *card; 63 struct envy_ak ak[4]; 64 #define ENVY_EEPROM_MAXSZ 32 65 unsigned char eeprom[ENVY_EEPROM_MAXSZ]; 66 void (*iintr)(void *); 67 void *iarg; 68 void (*ointr)(void *); 69 void *oarg; 70 }; 71 72 #define ENVY_MIX_CLASSIN 0 73 #define ENVY_MIX_CLASSOUT 1 74 #define ENVY_MIX_CLASSMON 2 75 #define ENVY_MIX_OUTSRC 3 76 #define ENVY_MIX_MONITOR 13 77 #define ENVY_MIX_ILVL(nak) 33 78 #define ENVY_MIX_OLVL(nak) (ENVY_MIX_ILVL(nak) + 2 * (nak)) 79 #define ENVY_MIX_OMUTE(nak) (ENVY_MIX_OLVL(nak) + 2 * (nak)) 80 #define ENVY_MIX_INVAL(nak) (ENVY_MIX_OMUTE(nak) + (nak)) 81 82 #define ENVY_MIX_OUTSRC_LINEIN 0 83 #define ENVY_MIX_OUTSRC_SPDIN 8 84 #define ENVY_MIX_OUTSRC_DMA 10 85 #define ENVY_MIX_OUTSRC_MON 11 86 87 #endif /* !defined(SYS_DEV_PCI_ENVYVAR_H) */ 88