📄 wm9712.c
字号:
},
{
WM_AUDIO_MIC2, /* Mic Id */
WM97_MIC_VOLUME, /* Mic select Reg */
WM9712_MIC_SEL_MIC2, /* Mic select Bits */
WM9712_MIC_SEL_MASK, /* Mic select Mask */
(WM_AUDIO_MIC_REC_PGA | WM_AUDIO_MIC_REC_ALC), /* Mic info Flags */
WM_REG_INVALID, /* Rec Boost Reg */
0, /* Rec Boost Bit */
WM97_REC_GAIN, /* Rec PGA Reg */
WM97_SET_ADC_EXTENDED_HIGH, /* Rec PGA Val */
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 */
}
};
/*
* Stream to channel mappings.
*/
static const WM_STREAM_MAPPING s_WM9712StreamMappings[] =
{
{ WM_STREAM_HIFI_OUT, WMAUDIO_AC97_STEREO_OUT },
{ WM_STREAM_HIFI_IN, WMAUDIO_AC97_STEREO_IN }
#if WM_MONODAC
,
{ WM_STREAM_MONO_OUT, WMAUDIO_AC97_MONO_OUT }
#endif /* WM_MONODAC */
};
/*
* Sample rates.
*/
static const WM_SAMPLE_RATE_PAIR s_SupportedRates[] =
{
{ 8000, 8000 },
{ 11025, 11025 },
{ 12000, 12000 },
{ 16000, 16000 },
{ 22050, 22050 },
{ 24000, 24000 },
{ 32000, 32000 },
{ 44100, 44100 },
{ 48000, 48000 }
};
/*
* Details of supported interfaces.
*/
static const WM_INTERFACE_DETAILS s_Interfaces[] =
{
{
WM_AUDIOIF_HIFI,
s_SupportedRates,
WM_ARRAY_COUNT( s_SupportedRates ),
WM_IF_DUPLEX /* flags */
}
};
/*
* The GPIO details.
*/
static const WM_GPIO_DETAILS s_WM9712GPIODetails[] =
{
{ 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_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 InitChipdefWM9712( WM_CHIPDEF *pChipDef )
{
/* Identifying information */
pChipDef->deviceType = WM_CHIP_WM9712;
pChipDef->deviceName = "WM9711/12";
pChipDef->maxRegister = WM97_MAX_REGISTER;
pChipDef->regOffset = 2;
pChipDef->defaultPower = WM_POWER_LINK |
WM_POWER_VREF |
WM_POWER_MIXERS |
WM_POWER_AUDIO_HIFI_ADC |
WM_POWER_AUDIO_HIFI_DAC |
WM_POWER_AUDIO_MONO_DAC |
WM_POWER_OUTPUTS |
WM_POWER_INPUTS |
WM9712_POWER_OUT2;
/* Shadow Registers */
#if WM_USE_SHADOW_REGISTERS
pChipDef->pShadowedRegisters = s_WM9712Shadowed;
pChipDef->nShadowedRegisters = WM_ARRAY_COUNT( s_WM9712Shadowed );
#endif /* WM_USE_SHADOW_REGISTERS */
pChipDef->resetReg = WM97_RESET;
#if WM_AUXADC
/* Auxiliary ADCs */
pChipDef->pAuxADCDetails = s_adcDetailsWM9712;
pChipDef->adcCount = WM_ARRAY_COUNT( s_adcDetailsWM9712 );
#endif /* WM_AUXADC */
#if WM_AUDIO
/* Interfaces */
pChipDef->pInterfaces = s_Interfaces;
pChipDef->nInterfaces = WM_ARRAY_COUNT( s_Interfaces );
/* Signals */
pChipDef->pRecSourceSignals = s_WM9712RecordSourceSignals;
pChipDef->recSourceSignalCount = WM_ARRAY_COUNT( s_WM9712RecordSourceSignals );
pChipDef->recSourceDetails = s_WM9712RecordSourceDetails;
pChipDef->pSignalDetails = s_WM9712Signals;
pChipDef->signalCount = WM_ARRAY_COUNT( s_WM9712Signals );
pChipDef->pMicControlDetails = s_WM9712MicControl;
pChipDef->micControlCount = WM_ARRAY_COUNT( s_WM9712MicControl );
/* Audio streams */
pChipDef->pStreamMappings = s_WM9712StreamMappings;
pChipDef->streamCount = WM_ARRAY_COUNT( s_WM9712StreamMappings );
/* Default sample rates */
pChipDef->defADCRate = 48000;
pChipDef->defHiFiDACRate = 48000;
#if WM_VOICE
pChipDef->defVoiceDACRate = WM_SAMPLE_RATE_UNKNOWN;
#endif
#if WM_MONO
pChipDef->defMonoDACRate = 48000;
#endif
#endif /* WM_AUDIO */
/* GPIOs */
pChipDef->pGPIODetails = s_WM9712GPIODetails;
pChipDef->gpioCount = WM_ARRAY_COUNT( s_WM9712GPIODetails );
/*
* 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 = NULL; /* Not needed */
pChipDef->vtable.fnDisableStream = NULL; /* Not needed */
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 WM9712 && WM_AUXADC && WM_STREAM_AUXADC
pChipDef->vtable.fnReadCTCAuxADC = WMPlatformACLinkReadCTCAuxADC;
#elif WM_AUXADC && WM_STREAM_AUXADC
pChipDef->vtable.fnReadCTCAuxADC = NULL;
#endif /* WM9712 && WM_AUXADC && WM_STREAM_AUXADC */
}
#endif /* WM9712_FAMILY */
/*------------------------------ END OF FILE ---------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -