📄 lh7a400_ac97_codec.h
字号:
/*********************************************************************
* $Workfile: LH7A400_ac97_codec.h $
* $Revision: 1.1 $
* $Author: FergisJ $
* $Date: Jul 18 2002 15:58:00 $
*
* Project: LH7A400 EVB uC/OS-II (V2.52) EIT Development
*
* Description:
* This file contains definitions used when the LH7A400's
* Advanced Audio Codec controller is connected to an
* "AC '97" compliant Audio Codec.
* This interface is based on Intel's 1997 specification, v2.2
*
* Reference:
* (1) AC '97 Component Specification, Rev 2.2; Intel Corporation
* ftp://download.intel.com/ial/scalableplatforms/ac97r22.pdf
*
*
* Notes:
*
*
*
*
* Revision History:
* $Log: //smaicnt2/pvcs/VM/CHIPS/archives/SOC/LH7A400/Processor/LH7A400_ac97_codec.h-arc $
*
* Rev 1.1 Jul 18 2002 15:58:00 FergisJ
* Updated to meet Coding Standard
*
* Rev 1.0 Jul 18 2002 08:53:46 FergisJ
* Initial revision.
*
*
*
*
********************************************************************
*
* SHARP MICROELECTRONICS OF THE AMERICAS MAKES NO REPRESENTATION
* OR WARRANTIES WITH RESPECT TO THE PERFORMANCE OF THIS SOFTWARE,
* AND SPECIFICALLY DISCLAIMS ANY RESPONSIBILITY FOR ANY DAMAGES,
* SPECIAL OR CONSEQUENTIAL, CONNECTED WITH THE USE OF THIS SOFTWARE.
*
* SHARP MICROELECTRONICS OF THE AMERICAS PROVIDES THIS SOFTWARE
* SOLELY FOR THE PURPOSE OF SOFTWARE DEVELOPMENT INCORPORATING THE
* USE OF A SHARP MICROCONTROLLER OR SYSTEM-ON-CHIP PRODUCT.
* USE OF THIS SOURCE FILE IMPLIES ACCEPTANCE OF THESE CONDITIONS.
*
* COPYRIGHT (C) 2002 SHARP MICROELECTRONICS OF THE AMERICAS
* CAMAS, WA
********************************************************************/
#if !defined(LH7A400_AC97_CODEC_H)
#define LH7A400_AC97_CODEC_H
//===================================================================
//
// Audio Codec '97 REGISTER Assignments
//
// Note: Register index values are 7-bits wide.
// When using these definitions for Slot Data, OR in the R/W
// bit in _BIT(8) for Transmitting and a '0' is read for
// _BIT(8) when Receiving.
//
//-----------------------------------------------
#define AC97_RESET 0x00
#define AC97_MASTER_VOL 0x02 // Master Stereo Volume
#define AC97_AUXOUT_VOL 0x04
#define AC97_MONO_VOL 0x06 // Master Mono Volume
#define AC97_MASTER_TONE 0x08
#define AC97_PCBEEP_VOL 0x0a
#define AC97_PHONE_VOL 0x0c
#define AC97_MIC_VOL 0x0e
#define AC97_LINEIN_VOL 0x10
#define AC97_CD_VOL 0x12
#define AC97_VIDEO_VOL 0x14
#define AC97_AUXIN_VOL 0x16
#define AC97_PCMOUT_VOL 0x18
#define AC97_RECORD_SELECT 0x1a
#define AC97_RECORD_GAIN 0x1c
#define AC97_RECORD_GAIN_MIC 0x1e
#define AC97_GENERAL_PURPOSE 0x20
#define AC97_3D_CONTROL 0x22
// AC97 RESERVED 0x24
#define AC97_POWER_DOWN 0x26
// Extended Audio Registers
#define AC97_EXTENDED_AUDIO_ID 0x28
#define AC97_EXTENDED_AUDIO_STATUS 0x2A
#define AC97_PCM_FRONT_DAC_RATE 0x2C
#define AC97_PCM_SURR_DAC_RATE 0x2E
#define AC97_PCM_LFE_DAC_RATE 0x30
#define AC97_PCM_LR_DAC_RATE 0x32
#define AC97_MIC_ADC_RATE 0x34
#define AC97_CENTER_LFE_VOL 0x36
#define AC97_SURROUND_VOL 0x38
#define AC97_SPDIF_CONTROL 0x3A
// Extended Modem Registers
#define AC97_EXTENDED_MODEM_ID 0x3C
#define AC97_EXTEND_MODEM_STATCTRL 0x3E
#define AC97_LINE1_RATE 0x40
#define AC97_LINE2_RATE 0x42
#define AC97_HANDSET_RATE 0x44
#define AC97_LINE1_LEVEL 0x46
#define AC97_LINE2_LEVEL 0x48
#define AC97_HANDSET_LEVEL 0x4A
#define AC97_GPIO_CONFIG 0x4C
#define AC97_GPIO_POLARITY_TYPE 0x4E
#define AC97_GPIO_STICKY 0x50
#define AC97_GPIO_WAKE_UP 0x52
#define AC97_GPIO_STATUS 0x54
#define AC97_MISC_MODEM_STATCTRL 0x56
// AC97 RESERVED 0x58
//
// registers 0x005a - 0x007a are reserved
// for vendor-specific data
//
#define AC97_VENDOR_ID1 0x007c
#define AC97_VENDOR_ID2 0x007e
//===================================================================
//
// Audio Codec '97 BIT Definitions & Masks
//
//-----------------------------------------------
//
// general volume control bits
//
#define AC97_MUTE _BIT(15)
#define AC97_MICVOL _BIT(16) // 20dB
#define AC97_LEFTVOL _SBF(8, 0x3f) // Left Vol bit-mask
#define AC97_RIGHTVOL _BITMASK(6) // Right Vol bit-mask
//
// record mux bits for reg 1Ah (Record Select)
//
// & with a bitmask below to record select only one left/right side
#define AC97_RECSEL_LEFT_ONLY _SBF(8, 7)
#define AC97_RECSEL_RIGHT_ONLY _BITMASK(3)
// bit selected for both left/right sides
#define AC97_RECSEL_MIC 0x0000
#define AC97_RECSEL_CD 0x0101
#define AC97_RECSEL_VIDEO 0x0202
#define AC97_RECSEL_AUX 0x0303
#define AC97_RECSEL_LINE 0x0404
#define AC97_RECSEL_STEREO_MIX 0x0505 // mix all enabled outputs
#define AC97_RECSEL_MONO_MIX 0x0606 // the mono equivalent
#define AC97_RECSEL_PHONE 0x0707
//
// General Purpose register bits for reg 20h
//
#define AC97_GP_LPBK _BIT(7) // Loopback mode
#define AC97_GP_MS _BIT(8) // Mic Select 0=M1, 1=M2
#define AC97_GP_MIX _BIT(9) // MonoOut sel 0=Mix, 1=Mic
#define AC97_GP_LD _BIT(12) // Loudness 1=on
#define AC97_GP_3D _BIT(13) // 3D Enhancement 1=on
#define AC97_GP_ST _BIT(14) // Stereo Enhancement 1=on
#define AC97_GP_POP _BIT(15) // PcmOut 0=pre3D, 1=post3D
//
// Powerdown Control/Status bits for reg 26h
//
// status
#define AC97_PWR_ADC _BIT(0) // ADC section ready xmit
#define AC97_PWR_DAC _BIT(1) // DAC section ready rmit
#define AC97_PWR_ANL _BIT(2) // Analog section ready
#define AC97_PWR_REF _BIT(3) // Vref nominal
// control
#define AC97_PWR_PR0 _BIT(8) // ADC and Mux powerdown
#define AC97_PWR_PR1 _BIT(9) // DAC powerdown
#define AC97_PWR_PR2 _BIT(10) // AnalogMux pwrdn (Vr on)
#define AC97_PWR_PR3 _BIT(11) // AnalogMux pwrdn (Vr off)
#define AC97_PWR_PR4 _BIT(12) // AC-link powerdown
#define AC97_PWR_PR5 _BIT(13) // Internal Clk disable
#define AC97_PWR_PR6 _BIT(14) // HP amp powerdown
#define AC97_PWR_EAPD _BIT(15) // Ext.Amplifier PowerDown
// useful power states
#define AC97_PWR_ALL_ON 0x0000
#define AC97_PWR_PCM_OFF (AC97_PWR_PR0|AC97_PWR_PR1|AC97_PWR_PR4)
#define AC97_PWR_ANALOG_OFF (AC97_PWR_PR2|AC97_PWR_PR3)
#endif /* LH7A400_AC97_CODEC_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -