1187692Snwhitehorn/*- 2187692Snwhitehorn * Copyright 2008 by Marco Trillo. All rights reserved. 3187692Snwhitehorn * 4187692Snwhitehorn * Redistribution and use in source and binary forms, with or without 5187692Snwhitehorn * modification, are permitted provided that the following conditions 6187692Snwhitehorn * are met: 7187692Snwhitehorn * 1. Redistributions of source code must retain the above copyright 8187692Snwhitehorn * notice, this list of conditions and the following disclaimer. 9187692Snwhitehorn * 2. Redistributions in binary form must reproduce the above copyright 10187692Snwhitehorn * notice, this list of conditions and the following disclaimer in the 11187692Snwhitehorn * documentation and/or other materials provided with the distribution. 12187692Snwhitehorn * 13187692Snwhitehorn * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 14187692Snwhitehorn * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 15187692Snwhitehorn * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 16187692Snwhitehorn * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 17187692Snwhitehorn * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 18187692Snwhitehorn * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 19187692Snwhitehorn * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 20187692Snwhitehorn * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 21187692Snwhitehorn * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22187692Snwhitehorn * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23187692Snwhitehorn * SUCH DAMAGE. 24187692Snwhitehorn * 25187692Snwhitehorn * $FreeBSD: releng/10.3/sys/dev/sound/macio/davbusreg.h 187692 2009-01-25 18:20:15Z nwhitehorn $ 26187692Snwhitehorn */ 27187692Snwhitehorn 28187692Snwhitehorn/* 29187692Snwhitehorn * Apple DAVbus audio controller. 30187692Snwhitehorn */ 31187692Snwhitehorn 32187692Snwhitehorn#ifndef _SOUND_DAVBUS_H 33187692Snwhitehorn#define _SOUND_DAVBUS_H 34187692Snwhitehorn 35187692Snwhitehorn/* DAVbus controller registers. */ 36187692Snwhitehorn#define DAVBUS_SOUND_CTRL 0x00 37187692Snwhitehorn#define DAVBUS_CODEC_CTRL 0x10 38187692Snwhitehorn#define DAVBUS_CODEC_STATUS 0x20 39187692Snwhitehorn#define DAVBUS_CLIP_COUNT 0x30 40187692Snwhitehorn#define DAVBUS_BYTE_SWAP 0x40 41187692Snwhitehorn 42187692Snwhitehorn/* 43187692Snwhitehorn * The DAVbus uses a serial bus time multiplexed in four subframes, 44187692Snwhitehorn * but the controller itself uses subframe 0 to communicate with the codec. 45187692Snwhitehorn * In some machines, the other subframes may be used by external devices 46187692Snwhitehorn * thorugh the DAV interface. 47187692Snwhitehorn */ 48187692Snwhitehorn/* DAVBUS_SOUND_CTRL bit definitions. */ 49187692Snwhitehorn#define DAVBUS_INPUT_SUBFRAME0 0x00000001 50187692Snwhitehorn#define DAVBUS_INPUT_SUBFRAME1 0x00000002 51187692Snwhitehorn#define DAVBUS_INPUT_SUBFRAME2 0x00000004 52187692Snwhitehorn#define DAVBUS_INPUT_SUBFRAME3 0x00000008 53187692Snwhitehorn 54187692Snwhitehorn#define DAVBUS_OUTPUT_SUBFRAME0 0x00000010 55187692Snwhitehorn#define DAVBUS_OUTPUT_SUBFRAME1 0x00000020 56187692Snwhitehorn#define DAVBUS_OUTPUT_SUBFRAME2 0x00000040 57187692Snwhitehorn#define DAVBUS_OUTPUT_SUBFRAME3 0x00000080 58187692Snwhitehorn 59187692Snwhitehorn#define DAVBUS_RATE_44100 0x00000000 60187692Snwhitehorn#define DAVBUS_RATE_29400 0x00000100 61187692Snwhitehorn#define DAVBUS_RATE_22050 0x00000200 62187692Snwhitehorn#define DAVBUS_RATE_17640 0x00000300 63187692Snwhitehorn#define DAVBUS_RATE_14700 0x00000400 64187692Snwhitehorn#define DAVBUS_RATE_11025 0x00000500 65187692Snwhitehorn#define DAVBUS_RATE_8820 0x00000600 66187692Snwhitehorn#define DAVBUS_RATE_7350 0x00000700 67187692Snwhitehorn#define DAVBUS_RATE_MASK 0x00000700 68187692Snwhitehorn 69187692Snwhitehorn#define DAVBUS_ERROR 0x00000800 70187692Snwhitehorn#define DAVBUS_PORTCHG 0x00001000 71187692Snwhitehorn#define DAVBUS_INTR_ERROR 0x00002000 /* interrupt on error */ 72187692Snwhitehorn#define DAVBUS_INTR_PORTCHG 0x00004000 /* interrupt on port change */ 73187692Snwhitehorn 74187692Snwhitehorn#define DAVBUS_STATUS_SUBFRAME 0x00018000 /* mask */ 75187692Snwhitehorn 76187692Snwhitehorn/* DAVBUS_CODEC_CTRL bit definitions. */ 77187692Snwhitehorn#define DAVBUS_CODEC_BUSY 0x01000000 78187692Snwhitehorn 79187692Snwhitehorn 80187692Snwhitehorn/* 81187692Snwhitehorn * Burgundy Codec Control Bits 82187692Snwhitehorn */ 83187692Snwhitehorn 84187692Snwhitehorn/* Burgundy transaction bits. */ 85187692Snwhitehorn#define BURGUNDY_CTRL_RESET 0x00100000 86187692Snwhitehorn#define BURGUNDY_CTRL_WRITE 0x00200000 87187692Snwhitehorn 88187692Snwhitehorn/* Mute control for each analog output port. */ 89187692Snwhitehorn#define BURGUNDY_MUTE_REG 0x16000 90187692Snwhitehorn#define BURGUNDY_P13M_EN 0x01 91187692Snwhitehorn#define BURGUNDY_P14L_EN 0x02 92187692Snwhitehorn#define BURGUNDY_P14R_EN 0x04 93187692Snwhitehorn#define BURGUNDY_P15L_EN 0x08 94187692Snwhitehorn#define BURGUNDY_P15R_EN 0x10 95187692Snwhitehorn#define BURGUNDY_P16L_EN 0x20 96187692Snwhitehorn#define BURGUNDY_P16R_EN 0x40 97187692Snwhitehorn#define BURGUNDY_P17M_EN 0x80 98187692Snwhitehorn 99187692Snwhitehorn/* Attenuation of each analog output port. */ 100187692Snwhitehorn#define BURGUNDY_OL13_REG 0x16100 101187692Snwhitehorn#define BURGUNDY_OL14_REG 0x16200 102187692Snwhitehorn#define BURGUNDY_OL15_REG 0x16300 103187692Snwhitehorn#define BURGUNDY_OL16_REG 0x16400 104187692Snwhitehorn#define BURGUNDY_OL17_REG 0x16500 105187692Snwhitehorn 106187692Snwhitehorn/* Inputs of four digital mixers. */ 107187692Snwhitehorn#define BURGUNDY_MIX0_REG 0x42900 108187692Snwhitehorn#define BURGUNDY_MIX1_REG 0x42A00 109187692Snwhitehorn#define BURGUNDY_MIX2_REG 0x42B00 110187692Snwhitehorn#define BURGUNDY_MIX3_REG 0x42C00 111187692Snwhitehorn#define BURGUNDY_MIX_IS0 0x00010001 112187692Snwhitehorn#define BURGUNDY_MIX_IS1 0x00020002 113187692Snwhitehorn#define BURGUNDY_MIX_IS2 0x00040004 114187692Snwhitehorn#define BURGUNDY_MIX_IS3 0x00080008 115187692Snwhitehorn#define BURGUNDY_MIX_IS4 0x00100010 116187692Snwhitehorn#define BURGUNDY_MIX_ISA 0x01000100 /* Digital stream ISA. */ 117187692Snwhitehorn#define BURGUNDY_MIX_ISB 0x02000200 /* Digital stream ISB. */ 118187692Snwhitehorn#define BURGUNDY_MIX_ISC 0x04000400 /* Digital stream ISC. */ 119187692Snwhitehorn#define BURGUNDY_MIX_ISD 0x08000800 /* Digital stream ISD. */ 120187692Snwhitehorn#define BURGUNDY_MIX_ISE 0x10001000 /* Digital stream ISE. */ 121187692Snwhitehorn#define BURGUNDY_MIX_ISF 0x20002000 /* Digital stream ISF. */ 122187692Snwhitehorn#define BURGUNDY_MIX_ISG 0x40004000 /* Digital stream ISG. */ 123187692Snwhitehorn#define BURGUNDY_MIX_ISH 0x80008000 /* Digital stream ISH. */ 124187692Snwhitehorn 125187692Snwhitehorn/* A digital scalar at the output of each mixer. */ 126187692Snwhitehorn#define BURGUNDY_MXS0L_REG 0x12D00 127187692Snwhitehorn#define BURGUNDY_MXS0R_REG 0x12D01 128187692Snwhitehorn#define BURGUNDY_MXS1L_REG 0x12D02 129187692Snwhitehorn#define BURGUNDY_MXS1R_REG 0x12D03 130187692Snwhitehorn#define BURGUNDY_MXS2L_REG 0x12E00 131187692Snwhitehorn#define BURGUNDY_MXS2R_REG 0x12E01 132187692Snwhitehorn#define BURGUNDY_MXS3L_REG 0x12E02 133187692Snwhitehorn#define BURGUNDY_MXS3R_REG 0x12E03 134187692Snwhitehorn#define BURGUNDY_MXS_UNITY 0xDF 135187692Snwhitehorn 136187692Snwhitehorn/* Demultiplexer. Routes the mixer 0-3 (see above) to output sources. 137187692Snwhitehorn Output sources 0-2 can be converted to analog. */ 138187692Snwhitehorn#define BURGUNDY_OS_REG 0x42F00 139187692Snwhitehorn#define BURGUNDY_OS0_MIX0 0x00000000 140187692Snwhitehorn#define BURGUNDY_OS0_MIX1 0x00000001 141187692Snwhitehorn#define BURGUNDY_OS0_MIX2 0x00000002 142187692Snwhitehorn#define BURGUNDY_OS0_MIX3 0x00000003 143187692Snwhitehorn#define BURGUNDY_OS1_MIX0 0x00000000 144187692Snwhitehorn#define BURGUNDY_OS1_MIX1 0x00000004 145187692Snwhitehorn#define BURGUNDY_OS1_MIX2 0x00000008 146187692Snwhitehorn#define BURGUNDY_OS1_MIX3 0x0000000C 147187692Snwhitehorn#define BURGUNDY_OS2_MIX0 0x00000000 148187692Snwhitehorn#define BURGUNDY_OS2_MIX1 0x00000010 149187692Snwhitehorn#define BURGUNDY_OS2_MIX2 0x00000020 150187692Snwhitehorn#define BURGUNDY_OS2_MIX3 0x00000030 151187692Snwhitehorn#define BURGUNDY_OS3_MIX0 0x00000000 152187692Snwhitehorn#define BURGUNDY_OS3_MIX1 0x00000040 153187692Snwhitehorn#define BURGUNDY_OS3_MIX2 0x00000080 154187692Snwhitehorn#define BURGUNDY_OS3_MIX3 0x000000C0 155187692Snwhitehorn#define BURGUNDY_OSA_MIX0 0x00000000 156187692Snwhitehorn#define BURGUNDY_OSA_MIX1 0x00010000 157187692Snwhitehorn#define BURGUNDY_OSA_MIX2 0x00020000 158187692Snwhitehorn#define BURGUNDY_OSA_MIX3 0x00030000 159187692Snwhitehorn#define BURGUNDY_OSB_MIX0 0x00000000 160187692Snwhitehorn#define BURGUNDY_OSB_MIX1 0x00040000 161187692Snwhitehorn#define BURGUNDY_OSB_MIX2 0x00080000 162187692Snwhitehorn#define BURGUNDY_OSB_MIX3 0x000C0000 163187692Snwhitehorn#define BURGUNDY_OSC_MIX0 0x00000000 164187692Snwhitehorn#define BURGUNDY_OSC_MIX1 0x00100000 165187692Snwhitehorn#define BURGUNDY_OSC_MIX2 0x00200000 166187692Snwhitehorn#define BURGUNDY_OSC_MIX3 0x00300000 167187692Snwhitehorn#define BURGUNDY_OSD_MIX0 0x00000000 168187692Snwhitehorn#define BURGUNDY_OSD_MIX1 0x00400000 169187692Snwhitehorn#define BURGUNDY_OSD_MIX2 0x00800000 170187692Snwhitehorn#define BURGUNDY_OSD_MIX3 0x00C00000 171187692Snwhitehorn#define BURGUNDY_OSE_MIX0 0x00000000 172187692Snwhitehorn#define BURGUNDY_OSE_MIX1 0x01000000 173187692Snwhitehorn#define BURGUNDY_OSE_MIX2 0x02000000 174187692Snwhitehorn#define BURGUNDY_OSE_MIX3 0x03000000 175187692Snwhitehorn#define BURGUNDY_OSF_MIX0 0x00000000 176187692Snwhitehorn#define BURGUNDY_OSF_MIX1 0x04000000 177187692Snwhitehorn#define BURGUNDY_OSF_MIX2 0x08000000 178187692Snwhitehorn#define BURGUNDY_OSF_MIX3 0x0C000000 179187692Snwhitehorn#define BURGUNDY_OSG_MIX0 0x00000000 180187692Snwhitehorn#define BURGUNDY_OSG_MIX1 0x10000000 181187692Snwhitehorn#define BURGUNDY_OSG_MIX2 0x20000000 182187692Snwhitehorn#define BURGUNDY_OSG_MIX3 0x30000000 183187692Snwhitehorn#define BURGUNDY_OSH_MIX0 0x00000000 184187692Snwhitehorn#define BURGUNDY_OSH_MIX1 0x40000000 185187692Snwhitehorn#define BURGUNDY_OSH_MIX2 0x80000000 186187692Snwhitehorn#define BURGUNDY_OSH_MIX3 0xC0000000 187187692Snwhitehorn 188187692Snwhitehorn/* A digital scalar for output sources 0 to 3. */ 189187692Snwhitehorn#define BURGUNDY_OSS0L_REG 0x13000 190187692Snwhitehorn#define BURGUNDY_OSS0R_REG 0x13001 191187692Snwhitehorn#define BURGUNDY_OSS1L_REG 0x13002 192187692Snwhitehorn#define BURGUNDY_OSS1R_REG 0x13003 193187692Snwhitehorn#define BURGUNDY_OSS2L_REG 0x13100 194187692Snwhitehorn#define BURGUNDY_OSS2R_REG 0x13101 195187692Snwhitehorn#define BURGUNDY_OSS3L_REG 0x13102 196187692Snwhitehorn#define BURGUNDY_OSS3R_REG 0x13103 197187692Snwhitehorn#define BURGUNDY_OSS_UNITY 0xDF 198187692Snwhitehorn 199187692Snwhitehorn/* Digital input streams ISA-ISC. A stream may be derived from data coming 200187692Snwhitehorn from the controller in subframes 0 to 3 as well as from internal 201187692Snwhitehorn output sources OSA-OSD. */ 202187692Snwhitehorn#define BURGUNDY_SDIN_REG 0x17800 203187692Snwhitehorn#define BURGUNDY_ISA_SF0 0x00 204187692Snwhitehorn#define BURGUNDY_ISA_OSA 0x02 205187692Snwhitehorn#define BURGUNDY_ISB_SF1 0x00 206187692Snwhitehorn#define BURGUNDY_ISB_OSB 0x08 207187692Snwhitehorn#define BURGUNDY_ISC_SF2 0x00 208187692Snwhitehorn#define BURGUNDY_ISC_OSC 0x20 209187692Snwhitehorn#define BURGUNDY_ISD_SF3 0x00 210187692Snwhitehorn#define BURGUNDY_ISD_OSD 0x80 211187692Snwhitehorn 212187692Snwhitehorn/* A digital scaler for input streams 0-4 A-H. */ 213187692Snwhitehorn#define BURGUNDY_ISSAL_REG 0x12500 214187692Snwhitehorn#define BURGUNDY_ISSAR_REG 0x12501 215187692Snwhitehorn#define BURGUNDY_ISS_UNITY 0xDF 216187692Snwhitehorn 217187692Snwhitehorn/* 218187692Snwhitehorn * Screamer codec control bits 219187692Snwhitehorn * This codec has the following 12-bit control registers: 220187692Snwhitehorn * cc0 cc1 cc2 cc4 cc5 cc6 cc7 221187692Snwhitehorn */ 222187692Snwhitehorn 223187692Snwhitehorn/* screamer transaction bits. */ 224187692Snwhitehorn#define SCREAMER_CODEC_ADDR0 0x00000000 225187692Snwhitehorn#define SCREAMER_CODEC_ADDR1 0x00001000 226187692Snwhitehorn#define SCREAMER_CODEC_ADDR2 0x00002000 227187692Snwhitehorn#define SCREAMER_CODEC_ADDR4 0x00004000 228187692Snwhitehorn#define SCREAMER_CODEC_ADDR5 0x00005000 229187692Snwhitehorn#define SCREAMER_CODEC_ADDR6 0x00006000 230187692Snwhitehorn#define SCREAMER_CODEC_ADDR7 0x00007000 231187692Snwhitehorn#define SCREAMER_CODEC_EMSEL0 0x00000000 232187692Snwhitehorn#define SCREAMER_CODEC_EMSEL1 0x00400000 233187692Snwhitehorn#define SCREAMER_CODEC_EMSEL2 0x00800000 234187692Snwhitehorn#define SCREAMER_CODEC_EMSEL4 0x00c00000 235187692Snwhitehorn 236187692Snwhitehorn 237187692Snwhitehorn/* cc0 */ 238187692Snwhitehorn/* 239187692Snwhitehorn * Bits 7-4 specify the left ADC input gain; 240187692Snwhitehorn * bits 3-0 specify the right ADC input gain. 241187692Snwhitehorn * 242187692Snwhitehorn * The gain is a 4-bit value expressed in units of 1.5 dB, 243187692Snwhitehorn * ranging from 0 dB (0) to +22.5 dB (15). 244187692Snwhitehorn */ 245187692Snwhitehorn#define SCREAMER_DEFAULT_CD_GAIN 0x000000bb /* +16.5 dB */ 246187692Snwhitehorn#define SCREAMER_INPUT_CD 0x00000200 247187692Snwhitehorn#define SCREAMER_INPUT_LINE 0x00000400 248187692Snwhitehorn#define SCREAMER_INPUT_MICROPHONE 0x00000800 249187692Snwhitehorn#define SCREAMER_INPUT_MASK 0x00000e00 250187692Snwhitehorn 251187692Snwhitehorn/* cc1 */ 252187692Snwhitehorn#define SCREAMER_LOOP_THROUGH 0x00000040 253187692Snwhitehorn#define SCREAMER_MUTE_SPEAKER 0x00000080 254187692Snwhitehorn#define SCREAMER_MUTE_HEADPHONES 0x00000200 255187692Snwhitehorn#define SCREAMER_PARALLEL_OUTPUT 0x00000c00 256187692Snwhitehorn#define SCREAMER_PROG_OUTPUT0 0x00000400 257187692Snwhitehorn#define SCREAMER_PROG_OUTPUT1 0x00000800 258187692Snwhitehorn 259187692Snwhitehorn/* cc2: headphones/external port attenuation */ 260187692Snwhitehorn/* cc4: internal speaker attenuation */ 261187692Snwhitehorn/* 262187692Snwhitehorn * Bits 9-6 specify left DAC output attenuation. 263187692Snwhitehorn * Bits 3-0 specify right DAC output attenuation. 264187692Snwhitehorn * 265187692Snwhitehorn * The attenuation is a 4-bit value expressed in units of -1.5 dB, 266187692Snwhitehorn * ranging from 0 dB (0) to -22.5 dB (15). 267187692Snwhitehorn */ 268187692Snwhitehorn 269187692Snwhitehorn/* screamer codec status bits. */ 270187692Snwhitehorn#define SCREAMER_STATUS_MASK 0x00FFFFFF 271187692Snwhitehorn#define SCREAMER_STATUS_SENSEMASK 0x0000000F 272187692Snwhitehorn#define SCREAMER_STATUS_SENSE0 0x00000008 273187692Snwhitehorn#define SCREAMER_STATUS_SENSE1 0x00000004 274187692Snwhitehorn#define SCREAMER_STATUS_SENSE2 0x00000002 275187692Snwhitehorn#define SCREAMER_STATUS_SENSE3 0x00000001 276187692Snwhitehorn#define SCREAMER_STATUS_PARTMASK 0x00000300 277187692Snwhitehorn#define SCREAMER_STATUS_PARTSHFT 8 278187692Snwhitehorn#define SCREAMER_PART_CRYSTAL 0x00000100 279187692Snwhitehorn#define SCREAMER_PART_NATIONAL 0x00000200 280187692Snwhitehorn#define SCREAMER_PART_TI 0x00000300 281187692Snwhitehorn#define SCREAMER_STATUS_REVMASK 0x0000F000 282187692Snwhitehorn#define SCREAMER_STATUS_REVSHFT 12 283187692Snwhitehorn 284187692Snwhitehorn#endif /* _SOUND_DAVBUS_H */ 285187692Snwhitehorn 286