/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
* Purpose: Definitions for the CMedia 8788 driver.
*/
/*
* This file is part of Open Sound System
*
* Copyright (C) 4Front Technologies 1996-2011.
*
* This software is released under CDDL 1.0 source license.
* See the COPYING file included in the main directory of this source
* distribution for the license terms and conditions.
*/
#ifndef CMEDIAHD_H
#define CMEDIAHD_H
#define CMEDIAHD_PLAY 0
/*
* Number of fragments must be multiple of 2 because the
* hardware supports only full and half buffer interrupts. In
* addition it looks like 8 fragments is the minimum.
*/
/*
* PCI registers
*/
/* Device IDs */
/* Xonar specific */
/* defs for AKM 4396 DAC */
/* defs for CS4398 DAC */
/* accept changed registers */
/* defs for CS4362A DAC */
/* CS4362A Reg 01h */
/* CS4362A Reg 02h */
/* CS4362A Reg 03h */
/* CS4362A Reg 04h */
/* CS4362A Reg 05h */
/* CS4362A Reg 06h, 09h, 0Ch */
/* ATAPI crap, does anyone still use analog CD playback? */
/* CS4362A Reg 07h, 08h, 0Ah, 0Bh, 0Dh, 0Eh */
/* Volume registers */
/* 0-100. Start at -96dB. */
#define CS4398_VOL(x) \
((x) == 0 ? 0xFF : (0xC0 - ((x)*192/100)))
/* 0-100. Start at -96dB. Bit 7 is mute. */
#define CS4362A_VOL(x) \
(char)((x) == 0 ? 0xFF : (0x60 - ((x)*96/100)))
0, 1, 2, 4
};
typedef enum {
CTL_VOLUME = 0,
typedef struct cmediahd_ctrl
{
typedef struct cmediahd_regs
{
#define REC_A 0
struct _cmediahd_portc_t
{
int chans;
int direction;
unsigned fragfr;
unsigned nfrags;
unsigned nframes;
unsigned bufsz;
int syncdir;
};
struct _cmediahd_devc_t
{
int model;
};
#endif /* CMEDIAHD_H */