88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * CDDL HEADER START
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * The contents of this file are subject to the terms of the
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * Common Development and Distribution License (the "License").
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * You may not use this file except in compliance with the License.
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * or http://www.opensolaris.org/os/licensing.
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * See the License for the specific language governing permissions
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * and limitations under the License.
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * When distributing Covered Code, include this CDDL HEADER in each
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * If applicable, add the following below this CDDL HEADER, with the
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * fields enclosed by brackets "[]" replaced with your own identifying
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * information: Portions Copyright [yyyy] [name of copyright owner]
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * CDDL HEADER END
68c47f65208790c466e5e484f2293d3baed71c6aGarrett D'Amore * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * Use is subject to license terms.
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * Header file for the audio810 device driver
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * Driver supported configuration information
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define I810_MOD_NAME "audio810 audio driver"
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * Misc. defines
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define I810_ROUNDUP(x, algn) (((x) + ((algn) - 1)) & ~((algn) - 1))
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore/* The size of each entry of "reg" property is 5 integers */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore/* offset from the base of specified DMA engine */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore/* DMA engine offset from base */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define I810_REG_SISCTL 0x4C /* SiS 7012 control */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore/* bits of bus master status register */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore/* bits of bus master control register */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * Global Control Register
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore/* For ICH2 or more, bit21:20 is the PCM 4/6-channel enable bits */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore/* SiS 7012 has its own flags here */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * Global Status Register
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define I810_GSR_TRI_READY 0x10000000 /* for ICH4/5 */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define I810_GSR_USE_INTR 0x00000060 /* PCM-IN ,PCM-OUT */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * SiS Control Register
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * Macro for AD1980 codec
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define CODEC_AD_REG_MISC 0x76 /* offset of ad1980 misc control reg */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define AD1980_MISC_LOSEL 0x0020 /* Line-out amplifier output selector */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define AD1980_MISC_HPSEL 0x0400 /* HP-out amplifier output selector */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define AD1980_SURR_MUTE 0x8080 /* Mute for surround volume register */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct audio810_port audio810_port_t;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * buffer descripter list entry, sees datasheet
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore uint32_t buf_base; /* the address of the buffer */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore uint16_t buf_len; /* the number of samples */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct i810_bd_entry i810_bd_entry_t;
68c47f65208790c466e5e484f2293d3baed71c6aGarrett D'Amore QUIRK_OLDICH, /* likely emulated, needs deeper playahead */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore QUIRK_SIS7012, /* weird registers and such */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * audio810_state_t -per instance state and operation data
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore dev_info_t *dip; /* used by audio810_getinfo() */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore ddi_acc_handle_t am_regs_handle; /* for audio mixer register */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore ddi_acc_handle_t bm_regs_handle; /* for bus master register */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore caddr_t am_regs_base; /* base of audio mixer regs */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore caddr_t bm_regs_base; /* base of bus master regs */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct audio810_state audio810_state_t;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * Useful bit twiddlers
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore (void *)((char *)statep->bm_regs_base + (reg)))
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore (void *)((char *)statep->bm_regs_base + (reg)))
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore (void *)((char *)statep->bm_regs_base + (reg)))
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore (void *)((char *)statep->bm_regs_base + (reg)), (val))
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore (void *)((char *)statep->bm_regs_base + (reg)), (val))
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore (void *)((char *)statep->bm_regs_base + (reg)), (val))
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore (void *)((char *)statep->am_regs_base + (reg)))
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore (void *)((char *)statep->am_regs_base + (reg)), (val))
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#endif /* _AUDIO810_H_ */