int main(void) { u32 stretch; u32 samp_i; /* Initialisation de plb_ac97 : */ XAC97_HardReset(PLB_AC97_BASEADDR); XAC97_InitAudio(PLB_AC97_BASEADDR, 0); XAC97_ClearFifos(PLB_AC97_BASEADDR); /* Ajustement du volume audio : */ XAC97_WriteReg(PLB_AC97_BASEADDR, AC97_MasterVol, AC97_VOL_MAX); XAC97_WriteReg(PLB_AC97_BASEADDR, AC97_AuxOutVol, AC97_VOL_ATTN_6_0_DB); XAC97_WriteReg(PLB_AC97_BASEADDR, AC97_PCMOutVol, AC97_VOL_ATTN_6_0_DB); /* Boucler : */ for (;;) { for (samp_i = 0; samp_i < NUM_SAMPLES; ++samp_i) { for (stretch = 0; stretch < STRETCH; ++stretch) { XAC97_WriteFifo(PLB_AC97_BASEADDR, g_samples[samp_i]); } } } return 0; }
void Foliage::SoundManager::init() { // hard reset & initialization XAC97_HardReset(XPAR_AUDIO_CODEC_BASEADDR); XAC97_InitAudio(XPAR_AUDIO_CODEC_BASEADDR, AC97_ANALOG_LOOPBACK); XAC97_DisableInput(XPAR_AUDIO_CODEC_BASEADDR, AC97_MIC_INPUT); XAC97_DisableInput(XPAR_AUDIO_CODEC_BASEADDR, AC97_LINE_INPUT); XAC97_AwaitCodecReady(XPAR_AUDIO_CODEC_BASEADDR); // volume settings XAC97_WriteReg(XPAR_AUDIO_CODEC_BASEADDR, AC97_MasterVol, AC97_VOL_MAX); XAC97_WriteReg(XPAR_AUDIO_CODEC_BASEADDR, AC97_AuxOutVol, AC97_VOL_MUTE); XAC97_WriteReg(XPAR_AUDIO_CODEC_BASEADDR, AC97_MasterVolMono, AC97_VOL_MUTE); XAC97_WriteReg(XPAR_AUDIO_CODEC_BASEADDR, AC97_PCBeepVol, AC97_VOL_MUTE); XAC97_WriteReg(XPAR_AUDIO_CODEC_BASEADDR, AC97_PhoneInVol, AC97_VOL_MUTE); XAC97_WriteReg(XPAR_AUDIO_CODEC_BASEADDR, AC97_MicVol, AC97_VOL_MUTE); XAC97_WriteReg(XPAR_AUDIO_CODEC_BASEADDR, AC97_LineInVol, AC97_VOL_MUTE); XAC97_WriteReg(XPAR_AUDIO_CODEC_BASEADDR, AC97_CDVol, AC97_VOL_MUTE); XAC97_WriteReg(XPAR_AUDIO_CODEC_BASEADDR, AC97_VideoVol, AC97_VOL_MUTE); XAC97_WriteReg(XPAR_AUDIO_CODEC_BASEADDR, AC97_AuxInVol, AC97_VOL_MUTE); XAC97_WriteReg(XPAR_AUDIO_CODEC_BASEADDR, AC97_PCMOutVol, AC97_VOL_MAX); XAC97_AwaitCodecReady(XPAR_AUDIO_CODEC_BASEADDR); // VRA mode OFF XAC97_WriteReg(XPAR_AUDIO_CODEC_BASEADDR, AC97_ExtendedAudioStat, 0); // clear FIFOs XAC97_ClearFifos(XPAR_AUDIO_CODEC_BASEADDR); // interrupt XIntc_RegisterHandler(XPAR_OPB_INTC_0_BASEADDR, XPAR_OPB_INTC_0_AUDIO_CODEC_INTERRUPT_INTR, (XInterruptHandler)Foliage::SoundManager::AC97_Callback, NULL); XAC97_mSetControl(XPAR_AUDIO_CODEC_BASEADDR, AC97_ENABLE_IN_FIFO_INTERRUPT); std::cout << " * sound manager initialized" << std::endl; }