xref: /onnv-gate/usr/src/uts/common/io/audio/drv/audiovia97/audiovia97.h (revision 11936:54dc8a89ba0d)
110164Sgdamore@opensolaris.org /*
210164Sgdamore@opensolaris.org  * CDDL HEADER START
310164Sgdamore@opensolaris.org  *
410164Sgdamore@opensolaris.org  * The contents of this file are subject to the terms of the
510164Sgdamore@opensolaris.org  * Common Development and Distribution License (the "License").
610164Sgdamore@opensolaris.org  * You may not use this file except in compliance with the License.
710164Sgdamore@opensolaris.org  *
810164Sgdamore@opensolaris.org  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
910164Sgdamore@opensolaris.org  * or http://www.opensolaris.org/os/licensing.
1010164Sgdamore@opensolaris.org  * See the License for the specific language governing permissions
1110164Sgdamore@opensolaris.org  * and limitations under the License.
1210164Sgdamore@opensolaris.org  *
1310164Sgdamore@opensolaris.org  * When distributing Covered Code, include this CDDL HEADER in each
1410164Sgdamore@opensolaris.org  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1510164Sgdamore@opensolaris.org  * If applicable, add the following below this CDDL HEADER, with the
1610164Sgdamore@opensolaris.org  * fields enclosed by brackets "[]" replaced with your own identifying
1710164Sgdamore@opensolaris.org  * information: Portions Copyright [yyyy] [name of copyright owner]
1810164Sgdamore@opensolaris.org  *
1910164Sgdamore@opensolaris.org  * CDDL HEADER END
2010164Sgdamore@opensolaris.org  */
2110164Sgdamore@opensolaris.org 
2210164Sgdamore@opensolaris.org /*
23*11936Sgdamore@opensolaris.org  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
2410164Sgdamore@opensolaris.org  * Use is subject to license terms.
2510164Sgdamore@opensolaris.org  */
2610164Sgdamore@opensolaris.org 
2710164Sgdamore@opensolaris.org /*
2810164Sgdamore@opensolaris.org  * Purpose: Definitions for the VIA VT82C686A AC97 driver
2910164Sgdamore@opensolaris.org  */
3010164Sgdamore@opensolaris.org /*
3110164Sgdamore@opensolaris.org  * Copyright (C) 4Front Technologies 1996-2009.
3210164Sgdamore@opensolaris.org  */
3310164Sgdamore@opensolaris.org #ifndef	AUDIOVIA97_H
3410164Sgdamore@opensolaris.org #define	AUDIOVIA97_H
3510164Sgdamore@opensolaris.org 
3610164Sgdamore@opensolaris.org #define	VIA97_NAME		"audiovia97"
3710164Sgdamore@opensolaris.org 
3810164Sgdamore@opensolaris.org #define	VIA97_NUM_PORTC		2
3910164Sgdamore@opensolaris.org #define	VIA97_PLAY_SGD_NUM	0
4010164Sgdamore@opensolaris.org #define	VIA97_REC_SGD_NUM	1
4110164Sgdamore@opensolaris.org 
4210164Sgdamore@opensolaris.org #define	VIA_VENDOR_ID		0x1106
4310164Sgdamore@opensolaris.org #define	VIA_82C686		0x3058
4410164Sgdamore@opensolaris.org 
4510164Sgdamore@opensolaris.org #define	CODEC_TIMEOUT_COUNT	500
4610164Sgdamore@opensolaris.org #define	AC97CODEC	0x80	/* Access AC97 Codec */
4710164Sgdamore@opensolaris.org #define	IN_CMD		0x01000000	/* busy in sending */
4810164Sgdamore@opensolaris.org #define	STA_VALID	0x02000000	/* 1:status data is valid */
4910164Sgdamore@opensolaris.org #define	CODEC_RD	0x00800000	/* Read CODEC status */
5010164Sgdamore@opensolaris.org #define	CODEC_INDEX	0x007F0000	/* Index of command register */
5110164Sgdamore@opensolaris.org #define	CODEC_DATA	0x0000FFFF	/* AC97 status register data */
5210164Sgdamore@opensolaris.org 
5310164Sgdamore@opensolaris.org typedef struct _via97_devc_t via97_devc_t;
5410164Sgdamore@opensolaris.org typedef struct _via97_portc_t via97_portc_t;
5510164Sgdamore@opensolaris.org 
5610164Sgdamore@opensolaris.org struct _via97_portc_t
5710164Sgdamore@opensolaris.org {
5810164Sgdamore@opensolaris.org 	via97_devc_t *devc;
5910164Sgdamore@opensolaris.org 	audio_engine_t *engine;
6010164Sgdamore@opensolaris.org 
61*11936Sgdamore@opensolaris.org 	int			started;
62*11936Sgdamore@opensolaris.org 	unsigned		nframes;
63*11936Sgdamore@opensolaris.org 	unsigned		pos;
6410164Sgdamore@opensolaris.org 	caddr_t			base;
6510164Sgdamore@opensolaris.org 
6610164Sgdamore@opensolaris.org 	ddi_dma_handle_t	sgd_dmah;	/* dma for descriptors */
6710164Sgdamore@opensolaris.org 	ddi_acc_handle_t	sgd_acch;
6810164Sgdamore@opensolaris.org 	uint32_t		sgd_paddr;
6910164Sgdamore@opensolaris.org 	caddr_t			sgd_kaddr;
7010164Sgdamore@opensolaris.org 
7110164Sgdamore@opensolaris.org 	ddi_dma_handle_t	buf_dmah;	/* dma for buffers */
7210164Sgdamore@opensolaris.org 	ddi_acc_handle_t	buf_acch;
7310164Sgdamore@opensolaris.org 	uint32_t		buf_paddr;
7410164Sgdamore@opensolaris.org 	caddr_t			buf_kaddr;
7510164Sgdamore@opensolaris.org 	size_t			buf_size;
7610164Sgdamore@opensolaris.org 	int			syncdir;
7710164Sgdamore@opensolaris.org 	uint64_t		count;
7810164Sgdamore@opensolaris.org };
7910164Sgdamore@opensolaris.org 
8010164Sgdamore@opensolaris.org struct _via97_devc_t
8110164Sgdamore@opensolaris.org {
8210164Sgdamore@opensolaris.org 	dev_info_t		*dip;
8310164Sgdamore@opensolaris.org 	audio_dev_t		*adev;
8410164Sgdamore@opensolaris.org 	ac97_t			*ac97;
8510164Sgdamore@opensolaris.org 
8610164Sgdamore@opensolaris.org 	ddi_acc_handle_t	pcih;
8710164Sgdamore@opensolaris.org 	ddi_acc_handle_t	regsh;
8810164Sgdamore@opensolaris.org 	caddr_t			base;
8910164Sgdamore@opensolaris.org 
9010164Sgdamore@opensolaris.org 	via97_portc_t *portc[VIA97_NUM_PORTC];
9110164Sgdamore@opensolaris.org };
9210164Sgdamore@opensolaris.org 
9310164Sgdamore@opensolaris.org #define	INL(devc, reg)		ddi_get32(devc->regsh, (void *)(reg))
9410164Sgdamore@opensolaris.org 
9510164Sgdamore@opensolaris.org #define	INB(devc, reg)		ddi_get8(devc->regsh, (void *)(reg))
9610164Sgdamore@opensolaris.org 
9710164Sgdamore@opensolaris.org #define	OUTL(devc, reg, val)	ddi_put32(devc->regsh, (void *)(reg), (val))
9810164Sgdamore@opensolaris.org 
9910164Sgdamore@opensolaris.org #define	OUTB(devc, reg, val)	ddi_put8(devc->regsh, (void *)(reg), (val))
10010164Sgdamore@opensolaris.org #define	VIA97_KIOP(X)	((kstat_intr_t *)(X->ksp->ks_data))
10110164Sgdamore@opensolaris.org 
10210164Sgdamore@opensolaris.org #endif /* AUDIOVIA97_H */
103