xref: /openbsd-src/sys/dev/pci/auixpvar.h (revision 9200ee76509af840715772765e9cec397aef98b2)
1*9200ee76Sjsg /* $OpenBSD: auixpvar.h,v 1.5 2020/06/27 00:33:59 jsg Exp $ */
223c72d4eSmickey /* $NetBSD: auixpvar.h,v 1.3 2005/01/12 15:54:34 kent Exp $*/
323c72d4eSmickey 
423c72d4eSmickey /*
523c72d4eSmickey  * Copyright (c) 2004, 2005 Reinoud Zandijk <reinoud@netbsd.org>
623c72d4eSmickey  * All rights reserved.
723c72d4eSmickey  *
823c72d4eSmickey  * Redistribution and use in source and binary forms, with or without
923c72d4eSmickey  * modification, are permitted provided that the following conditions
1023c72d4eSmickey  * are met:
1123c72d4eSmickey  * 1. Redistributions of source code must retain the above copyright
1223c72d4eSmickey  *    notice, this list of conditions and the following disclaimer.
1323c72d4eSmickey  * 2. The name of the author may not be used to endorse or promote products
1423c72d4eSmickey  *    derived from this software without specific prior written permission.
1523c72d4eSmickey  *
1623c72d4eSmickey  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1723c72d4eSmickey  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1823c72d4eSmickey  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1923c72d4eSmickey  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
2023c72d4eSmickey  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
2123c72d4eSmickey  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
2223c72d4eSmickey  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
2323c72d4eSmickey  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2423c72d4eSmickey  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2523c72d4eSmickey  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2623c72d4eSmickey  * SUCH DAMAGE.
2723c72d4eSmickey  */
2823c72d4eSmickey 
2923c72d4eSmickey 
3023c72d4eSmickey /*
3123c72d4eSmickey  * NetBSD audio driver for ATI IXP-{150,200,...} audio driver hardware.
3223c72d4eSmickey  */
3323c72d4eSmickey 
3423c72d4eSmickey #define DMA_DESC_CHAIN	255
3523c72d4eSmickey 
3623c72d4eSmickey /* audio format structure describing our hardware capabilities */
3723c72d4eSmickey /* XXX min and max sample rates are for AD1888 codec XXX */
3823c72d4eSmickey #define AUIXP_NFORMATS 6
3923c72d4eSmickey 
4023c72d4eSmickey #define AUIXP_MINRATE  7000
4123c72d4eSmickey #define AUIXP_MAXRATE 48000
4223c72d4eSmickey 
4323c72d4eSmickey /* auixp structures; used to record alloced DMA space */
4423c72d4eSmickey struct auixp_dma {
4523c72d4eSmickey 	/* bus mappings */
4623c72d4eSmickey 	bus_dmamap_t		 map;
4723c72d4eSmickey 	caddr_t			 addr;
4823c72d4eSmickey 	bus_dma_segment_t	 segs[1];
4923c72d4eSmickey 	int			 nsegs;
5023c72d4eSmickey 	size_t			 size;
5123c72d4eSmickey 
5223c72d4eSmickey 	/* audio feeder */
5323c72d4eSmickey 	void			 (*intr)(void *);
5423c72d4eSmickey 	void			*intrarg;
5523c72d4eSmickey 
5623c72d4eSmickey 	/* status and setup bits */
5723c72d4eSmickey 	int			 running;
5823c72d4eSmickey 	u_int32_t		 linkptr;
5923c72d4eSmickey 	u_int32_t		 dma_enable_bit;
6023c72d4eSmickey 
6123c72d4eSmickey 	/* linked list of all mapped area's */
6223c72d4eSmickey 	SLIST_ENTRY(auixp_dma)	 dma_chain;
6323c72d4eSmickey };
6423c72d4eSmickey 
6523c72d4eSmickey struct auixp_codec {
6623c72d4eSmickey 	struct auixp_softc	*sc;
6723c72d4eSmickey 
6823c72d4eSmickey 	int			 present;
6923c72d4eSmickey 	int			 codec_nr;
7023c72d4eSmickey 
7123c72d4eSmickey 	struct ac97_codec_if	*codec_if;
7223c72d4eSmickey 	struct ac97_host_if	 host_if;
7323c72d4eSmickey 	enum ac97_host_flags	 codec_flags;
7423c72d4eSmickey };
7523c72d4eSmickey 
7623c72d4eSmickey struct auixp_softc {
7723c72d4eSmickey 	struct device		sc_dev;
7823c72d4eSmickey 	void			*sc_ih;
7923c72d4eSmickey 
8023c72d4eSmickey 	/* card properties */
8123c72d4eSmickey 	int			has_4ch, has_6ch, is_fixed, has_spdif;
8223c72d4eSmickey 
8323c72d4eSmickey 	/* bus tags */
8423c72d4eSmickey 	bus_space_tag_t		sc_iot;
8523c72d4eSmickey 	bus_space_handle_t	sc_ioh;
8623c72d4eSmickey 	bus_addr_t		sc_iob;
8723c72d4eSmickey 	bus_size_t		sc_ios;
8823c72d4eSmickey 
8923c72d4eSmickey 	pcitag_t		sc_tag;
9023c72d4eSmickey 	pci_chipset_tag_t	sc_pct;
9123c72d4eSmickey 
9223c72d4eSmickey 	bus_dma_tag_t		sc_dmat;
9323c72d4eSmickey 
9423c72d4eSmickey 	/* DMA business */
9523c72d4eSmickey 	struct auixp_dma	*sc_output_dma;
9623c72d4eSmickey 	struct auixp_dma	*sc_input_dma;
9723c72d4eSmickey 
9823c72d4eSmickey 	/* list of allocated DMA pieces */
9923c72d4eSmickey 	SLIST_HEAD(auixp_dma_list, auixp_dma) sc_dma_list;
10023c72d4eSmickey 
10116db952fSjakemsr 	/* codec */
10216db952fSjakemsr 	struct auixp_codec	sc_codec;
10323c72d4eSmickey 	int			sc_codec_not_ready_bits;
10423c72d4eSmickey 
10523c72d4eSmickey 	/* last set audio parameters */
10623c72d4eSmickey 	struct audio_params	sc_play_params;
10723c72d4eSmickey 	struct audio_params	sc_rec_params;
10823c72d4eSmickey };
109