📄 wm9713.c
字号:
WM97_SET_ADC_EXTENDED_HIGH, /* Record PGA */
WM97_ALC_CONTROL, /* ALC Control Reg */
WM97_ALC_CTRL_VOICE, /* ALC Control Val */
WM97_ALC_NOISE_GATE_CONTROL, /* ALC Noise Gate Reg */
(WM97_ALC_ALCSEL_STEREO | WM97_ALC_NOISE_GATE_VOICE), /* ALC Noise Gate Val */
},
{
WM_AUDIO_MIC2B, /* Mic Id */
WM9713_MIC_SELECT, /* Mic select Reg */
WM9713_MIC_SEL_MPASEL_MIC2B, /* Mic select Bits */
WM9713_MIC_SEL_MPASEL_MASK, /* Mic select Mask */
WM_AUDIO_MIC_REC_PGA, /* Mic info Flags */
WM9713_MIC_SELECT, /* Rec Boost Reg */
WM9713_MIC_SEL_MPBBST_24DB, /* Rec Boost Bit */
WM9713_AUXDAC_VOLUME, /* Record PGA */
WM97_SET_ADC_EXTENDED_HIGH, /* Record PGA */
WM97_ALC_CONTROL, /* ALC Control Reg */
WM97_ALC_CTRL_VOICE, /* ALC Control Val */
WM97_ALC_NOISE_GATE_CONTROL, /* ALC Noise Gate Reg */
(WM97_ALC_ALCSEL_STEREO | WM97_ALC_NOISE_GATE_VOICE), /* ALC Noise Gate */
}
};
/*
* Stream to channel mappings.
*/
static const WM_STREAM_MAPPING s_WM9713StreamMappings[] =
{
{ WM_STREAM_HIFI_OUT, WMAUDIO_AC97_STEREO_OUT },
{ WM_STREAM_HIFI_IN, WMAUDIO_AC97_STEREO_IN }
#if WM_VOICE
,
{ WM_STREAM_VOICE_OUT, WMAUDIO_VOICE_OUT },
{ WM_STREAM_VOICE_IN, WMAUDIO_INVALID_CHANNEL }
#endif /* WM_VOICE */
#if WM_MONODAC
,
{ WM_STREAM_MONO_OUT, WMAUDIO_AC97_MONO_OUT }
#endif /* WM_MONODAC */
};
/*
* Sample rates.
*/
static const WM_SAMPLE_RATE_PAIR s_SupportedRatesHiFi[] =
{
{ 8000, 8000 },
{ 11025, 11025 },
{ 12000, 12000 },
{ 16000, 16000 },
{ 22050, 22050 },
{ 24000, 24000 },
{ 32000, 32000 },
{ 44100, 44100 },
{ 48000, 48000 }
};
static const WM_SAMPLE_RATE_PAIR s_SupportedRatesVoice[] =
{
{ 8000, 0 },
{ 12000, 0 },
{ 16000, 0 },
{ 24000, 0 },
{ 32000, 0 },
{ 48000, 0 },
{ 96000, 0 }
};
/*
* Details of supported interfaces.
*/
static const WM_INTERFACE_DETAILS s_Interfaces[] =
{
{
WM_AUDIOIF_HIFI,
s_SupportedRatesHiFi,
WM_ARRAY_COUNT( s_SupportedRatesHiFi ),
WM_IF_DUPLEX /* flags */
},
{
WM_AUDIOIF_VOICE,
s_SupportedRatesVoice,
WM_ARRAY_COUNT( s_SupportedRatesVoice ),
WM_IF_PLAYBACK /* flags */
}
};
/*
* The GPIO details.
*/
static const WM_GPIO_DETAILS s_WM9713GPIODetails[] =
{
{ WM_GPIO_1, WM_GPIO_NONE, WM_GPIO_NONE, WM_GPIO_INPUT | WM_GPIO_OUTPUT },
{ WM_GPIO_2, WM_GPIO_IRQ, WM_GPIO_NONE, WM_GPIO_INPUT | WM_GPIO_OUTPUT },
{ WM_GPIO_3, WM_GPIO_PENDOWN, WM_GPIO_NONE, WM_GPIO_INPUT | WM_GPIO_OUTPUT },
{ WM_GPIO_4, WM_GPIO_ADA, WM_GPIO_NONE, WM_GPIO_INPUT | WM_GPIO_OUTPUT },
{ WM_GPIO_5, WM_GPIO_SPDIF_OUT, WM_GPIO_NONE, WM_GPIO_INPUT | WM_GPIO_OUTPUT },
{ WM_GPIO_6, WM_GPIO_SECONDARY_ADA, WM_GPIO_NONE, WM_GPIO_INPUT | WM_GPIO_OUTPUT },
{ WM_GPIO_7, WM_GPIO_SECONDARY_PENDOWN, WM_GPIO_NONE, WM_GPIO_INPUT | WM_GPIO_OUTPUT },
{ WM_GPIO_8, WM_GPIO_SECONDARY_SPDIF_OUT, WM_GPIO_NONE, WM_GPIO_INPUT | WM_GPIO_OUTPUT },
{ WM_GPIO_9, WM_GPIO_NONE, WM_GPIO_VIRTUAL_MICDET, WM_GPIO_INPUT },
{ WM_GPIO_10, WM_GPIO_NONE, WM_GPIO_VIRTUAL_MICSHT, WM_GPIO_INPUT },
{ WM_GPIO_11, WM_GPIO_NONE, WM_GPIO_VIRTUAL_THERMAL_CUTOUT, WM_GPIO_INPUT },
{ WM_GPIO_12, WM_GPIO_NONE, WM_GPIO_VIRTUAL_ADA, WM_GPIO_INPUT },
{ WM_GPIO_13, WM_GPIO_NONE, WM_GPIO_VIRTUAL_PENDOWN, WM_GPIO_INPUT },
{ WM_GPIO_14, WM_GPIO_NONE, WM_GPIO_VIRTUAL_COMP2, WM_GPIO_INPUT },
{ WM_GPIO_15, WM_GPIO_NONE, WM_GPIO_VIRTUAL_COMP1, WM_GPIO_INPUT }
};
/*
* Finally a function to initialise the chip definition structure.
*/
void InitChipdefWM9713( WM_CHIPDEF *pChipDef )
{
/* Identifying information */
pChipDef->deviceType = WM_CHIP_WM9713;
pChipDef->deviceName = "WM9713/14";
pChipDef->maxRegister = WM97_MAX_REGISTER;
pChipDef->regOffset = 2;
pChipDef->defaultPower = WM_POWER_NONE;
/* Shadow Registers */
#if WM_USE_SHADOW_REGISTERS
pChipDef->pShadowedRegisters = s_WM9713Shadowed;
pChipDef->nShadowedRegisters = WM_ARRAY_COUNT( s_WM9713Shadowed );
#endif /* WM_USE_SHADOW_REGISTERS */
pChipDef->resetReg = WM97_RESET;
#if WM_AUXADC
/* Auxiliary ADCs */
pChipDef->pAuxADCDetails = s_adcDetailsWM9713;
pChipDef->adcCount = WM_ARRAY_COUNT( s_adcDetailsWM9713 );
#endif /* WM_AUXADC */
#if WM_AUDIO
/* Interfaces */
pChipDef->pInterfaces = s_Interfaces;
pChipDef->nInterfaces = WM_ARRAY_COUNT( s_Interfaces );
/* Signals */
pChipDef->pRecSourceSignals = s_WM9713RecordSourceSignals;
pChipDef->recSourceSignalCount = WM_ARRAY_COUNT( s_WM9713RecordSourceSignals );
pChipDef->recSourceDetails = s_WM9713RecordSourceDetails;
pChipDef->pSignalDetails = s_WM9713Signals;
pChipDef->signalCount = WM_ARRAY_COUNT( s_WM9713Signals );
pChipDef->pMicControlDetails = s_WM9713MicControl;
pChipDef->micControlCount = WM_ARRAY_COUNT( s_WM9713MicControl );
/* Audio streams */
pChipDef->pStreamMappings = s_WM9713StreamMappings;
pChipDef->streamCount = WM_ARRAY_COUNT( s_WM9713StreamMappings );
/* Default sample rates */
pChipDef->defADCRate = 48000;
pChipDef->defHiFiDACRate = 48000;
#if WM_VOICE
pChipDef->defVoiceDACRate = 96000;
#endif
#if WM_MONO
pChipDef->defMonoDACRate = 48000;
#endif
#endif /* WM_AUDIO */
/* GPIOs */
pChipDef->pGPIODetails = s_WM9713GPIODetails;
pChipDef->gpioCount = WM_ARRAY_COUNT( s_WM9713GPIODetails );
/*
* The device-specific functions
*/
pChipDef->vtable.fnPowerInit = WM97PowerInit;
pChipDef->vtable.fnPowerUp = WM97PowerUp;
pChipDef->vtable.fnPowerDown = WM97PowerDown;
pChipDef->vtable.fnGetPower = WM97GetCurrentPower;
#if WM_AUDIO
pChipDef->vtable.fnConfigureInterface = NULL; /* Not applicable */
pChipDef->vtable.fnUnconfigureInterface = NULL; /* Not applicable */
pChipDef->vtable.fnEnableStream = WM9713EnableStream;
pChipDef->vtable.fnDisableStream = WM9713DisableStream;
pChipDef->vtable.fnSetSampleRate = WM97SetSampleRate;
pChipDef->vtable.fnGetSampleRate = WM97GetSampleRate;
pChipDef->vtable.fnSetLineInRecPaths = WM97SetLineInRecPaths;
pChipDef->vtable.fnClearLineInRecPaths = NULL;
pChipDef->vtable.fnSetMicRecPaths = WM97SetMicRecPaths;
pChipDef->vtable.fnClearMicRecPaths = WM97ClearMicRecPaths;
#endif /* WM_AUDIO */
#if WM9713 && WM_AUXADC && WM_STREAM_AUXADC
pChipDef->vtable.fnReadCTCAuxADC = WMPlatformACLinkReadCTCAuxADC;
#elif WM_AUXADC && WM_STREAM_AUXADC
pChipDef->vtable.fnReadCTCAuxADC = NULL;
#endif /* WM9713 && WM_AUXADC && WM_STREAM_AUXADC */
}
#endif /* WM9713_FAMILY */
/*------------------------------ END OF FILE ---------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -