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