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

📄 wm9712.c

📁 pxa270平台 windows mobile 5.2 wm9713 触摸屏+音频驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
    },
    {
        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 + -