08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * CDDL HEADER START
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * The contents of this file are subject to the terms of the
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * Common Development and Distribution License (the "License").
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * You may not use this file except in compliance with the License.
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * or http://www.opensolaris.org/os/licensing.
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * See the License for the specific language governing permissions
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * and limitations under the License.
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * When distributing Covered Code, include this CDDL HEADER in each
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * If applicable, add the following below this CDDL HEADER, with the
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * fields enclosed by brackets "[]" replaced with your own identifying
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * information: Portions Copyright [yyyy] [name of copyright owner]
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * CDDL HEADER END
68c47f65208790c466e5e484f2293d3baed71c6aGarrett D'Amore * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * Use is subject to license terms.
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * Purpose: Driver for CMEDIA CM8738 PCI audio controller.
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * This file is part of Open Sound System
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * Copyright (C) 4Front Technologies 1996-2008.
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * This software is released under CDDL 1.0 source license.
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * See the COPYING file included in the main directory of this source
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * distribution for the license terms and conditions.
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * CM8338 registers definition
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define REG_SBVER 0x20 /* 8 bit access only */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define REG_IDXDATA 0x22 /* 8 bit access only */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define REG_IDXADDR 0x23 /* 8 bit access only */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define REG_CH0_PADDR 0x80 /* buffer address (32b) */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define REG_CH0_BUFSZ 0x84 /* buffer size in samples (16b) */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define REG_CH0_FRAGSZ 0x86 /* fragment size in samples (16b) */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define FUNCTRL1_INTRM BIT(5) /* enable MCB intr */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define FUNCTRL1_BREQ BIT(4) /* bus master enable */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define CHFORMAT_CHB3D5C BIT(31) /* 5 channel surround */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define CHFORMAT_CHB3D BIT(29) /* 4 channel surround */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define LEGACY_CHB3D6C BIT(15) /* 6 channel surround */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define LEGACY_CENTR2LN BIT(14) /* line in as center out */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define LEGACY_BASS2LN BIT(13) /* line in as lfe */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define LEGACY_EXBASSEN BIT(12) /* external bass input enable */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define MISC_N4SPK3D BIT(26) /* 4 channel emulation */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define MISC_XCHGDAC BIT(22) /* swap front/rear dacs */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define MISC_SPD32SEL BIT(21) /* 32-bit SPDIF (default 16-bit) */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define MISC_FM_EN BIT(19) /* enable legacy FM */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define MISC_SPDF_AC97 BIT(15) /* spdif out 44.1k (0), 48 k (1) */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define MISC_ENCENTER BIT(7) /* enable center */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define MISC_REAR2LN BIT(6) /* send rear to line in */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define MIX2_SPK4 BIT(5) /* line-in is rear out */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define MIX2_REAR2FRONT BIT(4) /* swap front and rear */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define MIX2_WAVEIN_L BIT(3) /* for recording wave out */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define MIX2_WAVEIN_R BIT(2) /* for recording wave out */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define MIX2_X3DEN BIT(1) /* 3D surround enable */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define MIX2_CDPLAY BIT(0) /* spdif-in PCM to DAC */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define MIX3_VADCMIC_MASK (0x7 << 1) /* rec mic volume */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define MISC2_CHB3D8C BIT(5) /* 8 channel surround */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define MISC2_SPD32FMT BIT(4) /* spdif at 32 kHz */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define MISC2_ADC2SPDIF BIT(3) /* send adc to spdif out */
af145792def4317aeeb9d20f7772b32a35a0161fGarrett D'Amore#define MISC2_SHAREADC BIT(2) /* use adc for cen/lfe */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore/* Indexes via SBINDEX */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore /* registers & bit masks */
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * The hardware appears to be able to address up to 16-bits worth of samples,
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * giving a total address space of 256K. Note, however, that we will restrict
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore * this further when we do fragment and memory allocation.
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore ddi_get8(dev->acch, (uint8_t *)(dev->regs + (offset)))
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore ddi_get16(dev->acch, (uint16_t *)(void *)(dev->regs + (offset)))
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore ddi_get32(dev->acch, (uint32_t *)(void *)(dev->regs + (offset)))
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore ddi_put8(dev->acch, (uint8_t *)(dev->regs + (offset)), v)
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore ddi_put16(dev->acch, (uint16_t *)(void *)(dev->regs + (offset)), v)
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore ddi_put32(dev->acch, (uint32_t *)(void *)(dev->regs + (offset)), v)
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define CLR8(dev, offset, v) PUT8(dev, offset, GET8(dev, offset) & ~(v))
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define SET8(dev, offset, v) PUT8(dev, offset, GET8(dev, offset) | (v))
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define CLR16(dev, offset, v) PUT16(dev, offset, GET16(dev, offset) & ~(v))
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define SET16(dev, offset, v) PUT16(dev, offset, GET16(dev, offset) | (v))
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define CLR32(dev, offset, v) PUT32(dev, offset, GET32(dev, offset) & ~(v))
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#define SET32(dev, offset, v) PUT32(dev, offset, GET32(dev, offset) | (v))
08045defdf65ee890fef6e20510a093a17feb8feGarrett D'Amore#endif /* _AUDIOCMI_H */