📄 ac97.h
字号:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
/*++
$Workfile: AC97.H $
$Date: 1/11/05 4:40p $
Abstract:
Header file for AC 97 specific functions
Functions:
Notes:
--*/
/*
** Copyright 2000-2003 Intel Corporation All Rights Reserved.
**
** Portions of the source code contained or described herein and all documents
** related to such source code (Material) are owned by Intel Corporation
** or its suppliers or licensors and is licensed by Microsoft Corporation for distribution.
** Title to the Material remains with Intel Corporation or its suppliers and licensors.
** Use of the Materials is subject to the terms of the Microsoft license agreement which accompanied the Materials.
** No other license under any patent, copyright, trade secret or other intellectual
** property right is granted to or conferred upon you by disclosure or
** delivery of the Materials, either expressly, by implication, inducement,
** estoppel or otherwise
** Some portion of the Materials may be copyrighted by Microsoft Corporation.
*/
#ifndef __XSC_AC97_H__
#define __XSC_AC97_H__
// Index of Codec Registers on AC-link.
// Note: Only items having a "Usage" comment are actively used by the driver.
// Register Name Index // Usage
//-----------------------------------------------------------------------
#define RESET 0X00 // RESET CODEC TO DEFAULT
#define MASTER_VOLUME 0X02 // LINE OUT VOLUME
#define HEADPHONE_VOLUME 0X04
#define MASTER_VOLUME_MONO 0X06
#define MASTER_TONE_R_L 0X08
#define PC_BEEP_VOLUME 0X0A
#define PHONE_VOLUME 0X0C
#define MIC_VOLUME 0X0E // MICROPHONE VOLUME/ AGC
#define LINE_IN_VOLUME 0X10 // LINE IN VOLUME
#define CD_VOLUME 0X12
#define VIDEO_VOLUME 0X14
#define AUX_VOLUME 0X16
#define PCM_OUT_VOL 0X18
#define RECORD_SELECT 0X1A // SELECT LINE IN OR MICROPHONE
#define RECORD_GAIN 0X1C
#define RECORD_GAIN_MIC 0X1E //undefined for UCB1400
#define GENERAL_PURPOSE 0X20
#define CONTROL_3D 0X22
#define RESERVED 0X24
#define POWERDOWN_CTRL_STAT 0X26 // POWER MANAGEMENT
#define EXTENDED_AUDIO_ID 0X28
#define EXTENDED_AUDIO_CTRL 0X2A // BIT 0 must be set to 1 for variable rate audio
#define AUDIO_DAC_RATE 0X2C // 16 bit unsigned is sample rate in hertz
#define AUDIO_ADC_RATE 0X32 // 16 bit unsigned is sample rate in hertz
#define FEATURE_CSR1 0x6A // UCB1400 specific bass, treble and other items
#define FEATURE_CSR2 0x6C // UCB1400 specific bass, treble and other items
#define VENDOR_ID1 0x7c // UCB1400 id first 16 bits
#define VENDOR_ID2 0x7e // UCB1400 id second 16 bits
#define VRA_ENABLED_MASK 0x1 // VRA bit set to 1 enables sample rate conversion
#define EQ_MASK 0xFE00 //1111111000000000
#define BASS_MASK 0XE000 //1110000000000000
#define TREB_MASK 0x1800 //0001100000000000
#define MODE_MASK 0x0600 //0000011000000000
#define MID_BASS_MAX_TREB 0x9E00 //1001111000000000
#define BASS_BIT_POSTN (0x1u<<11)
#define TREB_BIT_POSTN (0x1u<<00)
#define MODE_BIT_POSTN (0x1u<<07)
//power management bits
#define PWR_ADC (0x1)
#define PWR_DAC (0x1<<1)
#define PWR_ANL (0x1<<2)
#define PWR_REF (0x1<<3)
#define PWR_PR0 (0x1<<8) //write this bit to power down the adc
#define PWR_PR1 (0x1<<9) //write this bit to power down the dac
#define PWR_PR0_ADC (0x1<<8) //write this bit to power down the adc
#define PWR_PR1_DAC (0x1<<9) //write this bit to power down the dac
#define PWR_PR2 (0x1<<10)
#define PWR_PR3 (0x1<<11)
#define PWR_PR4 (0x1<<12)
#define PWR_PR5 (0x1<<13)
#define PWR_PR6 (0x1<<14)
#define PWR_EAPD (0x1<<15)
//smart power bits
#define PWR_SLP0 (0x1<<4)
#define PWR_SLP1 (0x1<<5)
//#define PWR_SMART_NONE
#define PWR_SMART_CODEC PWR_SLP0
#define PWR_SMART_PLL PWR_SLP1
#define PWR_SMART_BOTH (PWR_SLP0 & PWR_SLP1)
// Volume Specific Bits
#define MUTE_VOL 0X8000
#define RECORD_GAIN_MAX 0X0f0f
#define RECORD_GAIN_MIN 0X0
#define MUTE_MASK 0x8000
#define AUDIO_LINE_INPUT_STEREO 0X4040
#define AUDIO_MIC_INPUT_MONO 0X0
// Codec Register Masks.
#define MASTER_VOLUME_R_MASK 0x0000003F // 5 bits required. 6 optional.
#define MASTER_VOLUME_SHIFT 8 // Left volume bit2 13:8
// Bit 7 is zero for writes.
// Useful Constants
#define DWORD_ZEROS ((DWORD)0x00000000)
//UCB1400 STUFF
#define REV_2A 0x2a0
#define REV_1B 0x2a
#define HPEN_BIT_POS (6U) //bit 6 is headphone enable
#define HPEN_MASK (0xf << HPEN_BIT_POS) // bit 6
//CODEC TYPES
#define GENERIC_AC97 0
#define UCB14001B 1
#define UCB14002A 2
#endif // __XSC_AC97_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -