f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * CDDL HEADER START
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * The contents of this file are subject to the terms of the
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * Common Development and Distribution License (the "License").
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * You may not use this file except in compliance with the License.
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * or http://www.opensolaris.org/os/licensing.
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * See the License for the specific language governing permissions
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * and limitations under the License.
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * When distributing Covered Code, include this CDDL HEADER in each
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * If applicable, add the following below this CDDL HEADER, with the
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * fields enclosed by brackets "[]" replaced with your own identifying
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * information: Portions Copyright [yyyy] [name of copyright owner]
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * CDDL HEADER END
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * Use is subject to license terms.
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * Purpose: Definitions for the CMedia 8788 driver.
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * This file is part of Open Sound System
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * Copyright (C) 4Front Technologies 1996-2011.
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * This software is released under CDDL 1.0 source license.
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * See the COPYING file included in the main directory of this source
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * distribution for the license terms and conditions.
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * Number of fragments must be multiple of 2 because the
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * hardware supports only full and half buffer interrupts. In
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * addition it looks like 8 fragments is the minimum.
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore * PCI registers
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#define AC97_OUT_CHAN_CONFIG (devc->base+0xD4)
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#define AC97_IN_CHAN_CONFIG (devc->base+0xD8)
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* Device IDs */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* Xonar specific */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* defs for AKM 4396 DAC */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* defs for CS4398 DAC */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#define CS4398_POWER_DOWN (1<<7) /* Obvious */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#define CS4398_CPEN (1<<6) /* Control Port Enable */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#define CS4398_FREEZE (1<<5) /* Freezes registers, unfreeze to */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore /* accept changed registers */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#define CS4398_MCLKDIV2 (1<<4) /* Divide MCLK by 2 */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#define CS4398_MCLKDIV3 (1<<3) /* Divive MCLK by 3 */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* defs for CS4362A DAC */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* CS4362A Reg 01h */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* CS4362A Reg 02h */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* CS4362A Reg 03h */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* CS4362A Reg 04h */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* CS4362A Reg 05h */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* CS4362A Reg 06h, 09h, 0Ch */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* ATAPI crap, does anyone still use analog CD playback? */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* CS4362A Reg 07h, 08h, 0Ah, 0Bh, 0Dh, 0Eh */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* Volume registers */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* 0-100. Start at -96dB. */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* 0-100. Start at -96dB. Bit 7 is mute. */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore (char)((x) == 0 ? 0xFF : (0x60 - ((x)*96/100)))
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore/* Xonar D2/D2X codec remap */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amoretypedef struct _cmediahd_devc_t cmediahd_devc_t;
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amoretypedef struct _cmediahd_portc_t cmediahd_portc_t;
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amoretypedef enum {
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore int chan; /* rec a/b/c, play spdif/multi/front */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore ddi_dma_handle_t buf_dmah; /* dma for buffers */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore size_t buf_frames; /* Buffer size in frames */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore kmutex_t low_mutex; /* For low level routines */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore cmediahd_regs_t rec_eng; /* which rec engine to use */
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore cmediahd_portc_t *portc[CMEDIAHD_NUM_PORTC];
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore int gpio_mic, gpio_out, gpio_codec, gpio_alt;
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#define INB(devc, reg) ddi_get8(devc->regsh, (void *)(reg))
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#define OUTB(devc, val, reg) ddi_put8(devc->regsh, (void *)(reg), (val))
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#define INW(devc, reg) ddi_get16(devc->regsh, (void *)(reg))
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#define OUTW(devc, val, reg) ddi_put16(devc->regsh, (void *)(reg), (val))
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#define INL(devc, reg) ddi_get32(devc->regsh, (void *)(reg))
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#define OUTL(devc, val, reg) ddi_put32(devc->regsh, (void *)(reg), (val))
f6929ecef713a1395a17d75418eb6d6f8f2c68fdGarrett D'Amore#endif /* CMEDIAHD_H */