📄 ac97regs.h
字号:
//**********************************************************************
//
// Filename: ac97regs.h
//
// Description: Definitions for the ac97 codec registers.
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
// Copyright(c) Cirrus Logic Corporation 2001, All Rights Reserved
//
//**********************************************************************
#ifndef _H_AC97REGS
#define _H_AC97REGS
//****************************************************************************
//
// The following define the offsets of the AC97 shadow registers, which appear
// as a virtual extension to the base address register zero memory range.
//
//****************************************************************************
#define AC97_REG_OFFSET_MASK 0x0000007EL
#define AC97_CODEC_NUMBER_MASK 0x00003000L
#define AC97_RESET 0x0000000L
#define AC97_MASTER_VOLUME 0x0000002L
#define AC97_HEADPHONE_VOLUME 0x0000004L
#define AC97_MASTER_VOLUME_MONO 0x0000006L
#define AC97_MASTER_TONE 0x0000008L
#define AC97_PC_BEEP_VOLUME 0x000000AL
#define AC97_PHONE_VOLUME 0x000000CL
#define AC97_MIC_VOLUME 0x000000EL
#define AC97_LINEIN_VOLUME 0x0000010L
#define AC97_CD_VOLUME 0x0000012L
#define AC97_VIDEO_VOLUME 0x0000014L
#define AC97_AUX_VOLUME 0x0000016L
#define AC97_PCMOUT_VOLUME 0x0000018L
#define AC97_RECORD_SELECT 0x000001AL
#define AC97_RECORD_GAIN 0x000001CL
#define AC97_RECORD_GAIN_MIC 0x000001EL
#define AC97_GENERAL_PURPOSE 0x0000020L
#define AC97_3D_CONTROL 0x0000022L
#define AC97_MODEM_RATE 0x0000024L
#define AC97_POWERDOWN 0x0000026L
#define AC97_EXT_AUDIO_ID 0x0000028L
#define AC97_EXT_AUDIO_POWER 0x000002AL
#define AC97_PCM_FRONT_DAC_RATE 0x000002CL
#define AC97_PCM_SURR_DAC_RATE 0x000002EL
#define AC97_PCM_LFE_DAC_RATE 0x0000030L
#define AC97_PCM_LR_ADC_RATE 0x0000032L
#define AC97_MIC_ADC_RATE 0x0000034L
#define AC97_6CH_VOL_C_LFE 0x0000036L
#define AC97_6CH_VOL_SURROUND 0x0000038L
#define AC97_RESERVED_3A 0x000003AL
#define AC97_EXT_MODEM_ID 0x000003CL
#define AC97_EXT_MODEM_POWER 0x000003EL
#define AC97_LINE1_CODEC_RATE 0x0000040L
#define AC97_LINE2_CODEC_RATE 0x0000042L
#define AC97_HANDSET_CODEC_RATE 0x0000044L
#define AC97_LINE1_CODEC_LEVEL 0x0000046L
#define AC97_LINE2_CODEC_LEVEL 0x0000048L
#define AC97_HANDSET_CODEC_LEVEL 0x000004AL
#define AC97_GPIO_PIN_CONFIG 0x000004CL
#define AC97_GPIO_PIN_TYPE 0x000004EL
#define AC97_GPIO_PIN_STICKY 0x0000050L
#define AC97_GPIO_PIN_WAKEUP 0x0000052L
#define AC97_GPIO_PIN_STATUS 0x0000054L
#define AC97_MISC_MODEM_AFE_STAT 0x0000056L
#define AC97_RESERVED_58 0x0000058L
#define AC97_CRYSTAL_REV_N_FAB_ID 0x000005AL
#define AC97_TEST_AND_MISC_CTRL 0x000005CL
#define AC97_AC_MODE 0x000005EL
#define AC97_MISC_CRYSTAL_CONTROL 0x0000060L
#define AC97_LINE1_HYPRID_CTRL 0x0000062L
#define AC97_VENDOR_RESERVED_64 0x0000064L
#define AC97_VENDOR_RESERVED_66 0x0000066L
#define AC97_SPDIF_CONTROL 0x0000068L
#define AC97_VENDOR_RESERVED_6A 0x000006AL
#define AC97_VENDOR_RESERVED_6C 0x000006CL
#define AC97_VENDOR_RESERVED_6E 0x000006EL
#define AC97_VENDOR_RESERVED_70 0x0000070L
#define AC97_VENDOR_RESERVED_72 0x0000072L
#define AC97_VENDOR_RESERVED_74 0x0000074L
#define AC97_CAL_ADDRESS 0x0000076L
#define AC97_CAL_DATA 0x0000078L
#define AC97_VENDOR_RESERVED_7A 0x000007AL
#define AC97_VENDOR_ID1 0x000007CL
#define AC97_VENDOR_ID2 0x000007EL
// Known AC97 codec vendors
#define AC97_VENDOR_CRYSTAL 0x43525900 // Crystal Semicondutor "CRY"
//#define AC97_VENDOR_TRITECH 0x54524100 // TriTech "TRA"
//#define AC97_VENDOR_AKM 0x414B4D00 // Asahi Kasei "AKM"
//#define AC97_VENDOR_SIGMATEL 0x83847600 // SigmaTel
// volume control bit defines
#define AC97_MUTE 0x8000
#define AC97_MICBOOST 0x0040
#define AC97_LEFTVOL 0x3f00
#define AC97_RIGHTVOL 0x003f
// record mux defines
#define AC97_RECMUX_MIC 0x0000
#define AC97_RECMUX_CD 0x0101
#define AC97_RECMUX_VIDEO 0x0202 // not used
#define AC97_RECMUX_AUX 0x0303
#define AC97_RECMUX_LINE 0x0404
#define AC97_RECMUX_STEREO_MIX 0x0505
#define AC97_RECMUX_MONO_MIX 0x0606
#define AC97_RECMUX_PHONE 0x0707
// general purpose register bit defines
#define AC97_GP_LPBK 0x0080 // Loopback mode
#define AC97_GP_MS 0x0100 // Mic Select 0=Mic1, 1=Mic2
#define AC97_GP_MIX 0x0200 // Mono output select 0=Mix, 1=Mic
#define AC97_GP_RLBK 0x0400 // Remote Loopback - Modem line codec
#define AC97_GP_LLBK 0x0800 // Local Loopback - Modem Line codec
#define AC97_GP_LD 0x1000 // Loudness 1=on
#define AC97_GP_3D 0x2000 // 3D Enhancement 1=on
#define AC97_GP_ST 0x4000 // Stereo Enhancement 1=on
#define AC97_GP_POP 0x8000 // Pcm Out Path, 0=pre 3D, 1=post 3D
// powerdown control and status bit defines
// status
#define AC97_PWR_MDM 0x0010 // Modem section ready
#define AC97_PWR_REF 0x0008 // Vref nominal
#define AC97_PWR_ANL 0x0004 // Analog section ready
#define AC97_PWR_DAC 0x0002 // DAC section ready
#define AC97_PWR_ADC 0x0001 // ADC section ready
// control
#define AC97_PWR_PR0 0x0100 // ADC and Mux powerdown
#define AC97_PWR_PR1 0x0200 // DAC powerdown
#define AC97_PWR_PR2 0x0400 // Output mixer powerdown (Vref on)
#define AC97_PWR_PR3 0x0800 // Output mixer powerdown (Vref off)
#define AC97_PWR_PR4 0x1000 // AC-link powerdown
#define AC97_PWR_PR5 0x2000 // Internal Clk disable
#define AC97_PWR_PR6 0x4000 // HP amp powerdown
#define AC97_PWR_PR7 0x8000 // Modem off - if supported
// useful power states
#define AC97_PWR_D0 0x0000 // everything on
#define AC97_PWR_D1 AC97_PWR_PR0|AC97_PWR_PR1|AC97_PWR_PR4
#define AC97_PWR_D2 AC97_PWR_PR0|AC97_PWR_PR1|AC97_PWR_PR2|AC97_PWR_PR3|AC97_PWR_PR4
#define AC97_PWR_D3 AC97_PWR_PR0|AC97_PWR_PR1|AC97_PWR_PR2|AC97_PWR_PR3|AC97_PWR_PR4
#define AC97_PWR_ANLOFF AC97_PWR_PR2|AC97_PWR_PR3 //analog section off
#define EXT_AUDIO_POWER_VRA 0x0001
#endif // _H_AC97REGS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -