⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wm9713.c

📁 WM9713 audio codec driver for WinCE 5.0
💻 C
📖 第 1 页 / 共 2 页
字号:
        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.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 + -