48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * CDDL HEADER START
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * The contents of this file are subject to the terms of the
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * Common Development and Distribution License (the "License").
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * You may not use this file except in compliance with the License.
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * or http://www.opensolaris.org/os/licensing.
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * See the License for the specific language governing permissions
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * and limitations under the License.
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * When distributing Covered Code, include this CDDL HEADER in each
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * If applicable, add the following below this CDDL HEADER, with the
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * fields enclosed by brackets "[]" replaced with your own identifying
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * information: Portions Copyright [yyyy] [name of copyright owner]
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * CDDL HEADER END
68c47f65208790c466e5e484f2293d3baed71c6aGarrett D'Amore * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * Use is subject to license terms.
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * Purpose: Definitions for the Creative Audigy LS driver
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * This file is part of Open Sound System
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * Copyright (C) 4Front Technologies 1996-2009.
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * This software is released under CDDL 1.0 source license.
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * See the COPYING file included in the main directory of this source
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * distribution for the license terms and conditions.
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define PCI_DEVICE_ID_CREATIVE_AUDIGYLS 0x0007
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * PCI registers
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define INTR_IT2 (1 << 3) /* timer 2, 44.1 kHz */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define INTR_IT1 (1 << 4) /* timer 1, 192 kHz */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define INTR_SRT (1 << 6) /* sample rate status */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define INTR_AI (1 << 8) /* audio pending interrupt */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define HC_PF (1 << 11) /* play fmt 1 = 32b, 0 = 16b */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define HC_RF (1 << 10) /* rec fmt 1 = 32b, 0 = 16b */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * Indirect registers
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define PTBA 0x000 /* gather play table base address */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define PTBS 0x001 /* gather play table buffer size */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define PTCA 0x002 /* gather play table current addr ptr */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define PFBA 0x004 /* play fifo base address */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define PFBS 0x005 /* play fifo buffer size */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define CPFA 0x006 /* current play fifo address */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define PFEA 0x007 /* play fifo end address */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define CPCAV 0x008 /* current play fifo offset/cache sz valid */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define RFBA 0x010 /* record fifo base address */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define RFBS 0x011 /* record fifo buffer size */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define CRFA 0x012 /* current record fifo address */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define CRCAV 0x013 /* current record fifo offset/cache sz valid */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define CDL 0x020 /* play fifo cache data, 0x20-0x2f */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define RCD 0x050 /* record cache data, 0x50-0x5f */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define P17RECSEL 0x060 /* record fifo map address */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define P17RECVOLL 0x061 /* record fifo volume control (lo) */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define P17RECVOLH 0x062 /* record fifo volume control (hi) */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define HMIXMAP_SPDIF 0x063 /* spdif router map address */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define SMIXMAP_SPDIF 0x064 /* spdif router map address */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define MIXCTL_SPDIF 0x065 /* spdif mixer control */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define MIXVOL_SPDIF 0x066 /* spdif mixer input volume control */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define HMIXMAP_I2S 0x067 /* i2s router map address */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define SMIXMAP_I2S 0x068 /* i2s router map address */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define MIXCTL_I2S 0x069 /* i2s mixer control */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define MIXVOL_I2S 0x06a /* i2s mixer input volume control */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore/* MIDI UART */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define MUCMDA 0x06d /* midi uart a command/status */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define MUCMDB 0x06f /* midi uart b command/status */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define SRT 0x070 /* sample rate tracker status */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define SRCTL 0x071 /* sample rate control */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define AUDCTL 0x072 /* audio output control */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define AIE 0x075 /* audio interrupt enable */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define WALL192 0x077 /* wall clock @ 192 kHz */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define WALL441 0x078 /* wall clock @ 44.1 kHz */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore * Audio interrupt bits
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define AI_PFH 0x00000001 /* playback fifo half loop */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define AI_PFF 0x00000010 /* playback fifo loop */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define AI_TFH 0x00000100 /* playback table half loop */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define AI_TFF 0x00001000 /* playback table loop */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define AI_RFH 0x00010000 /* capture table half loop */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define AI_RFF 0x00100000 /* capture fifo loop */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define AI_EAI 0x01000000 /* enables audio end interrupt */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define SA_PLAY_RATE(ch, rate) ((rate) << (((ch) * 2) + 16))
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#define SA_RECORD_START(ch) (1 << ((ch) + 8))
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amoretypedef struct _audigyls_dev_t audigyls_dev_t;
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amoretypedef struct _audigyls_port_t audigyls_port_t;
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amoretypedef enum {
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore ddi_dma_handle_t buf_dmah; /* dma for buffers */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore uint32_t buf_frames; /* Buffer size in frames */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore char digital_enable; /* Orange combo-jack mode */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore kmutex_t low_mutex; /* For low level routines */
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore ddi_get8(dev->regsh, (void *)(dev->base + reg))
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore ddi_put8(dev->regsh, (void *)(dev->base + reg), (val))
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore ddi_get16(dev->regsh, (void *)(dev->base + reg))
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore ddi_put16(dev->regsh, (void *)(dev->base + reg), (val))
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore ddi_get32(dev->regsh, (void *)(dev->base + reg))
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore ddi_put32(dev->regsh, (void *)(dev->base + reg), (val))
48722b5f422aa5e059f333d8c7384ffd184fe739Garrett D'Amore#endif /* AUDIGYLS_H */