00001
00002
00003
00004
00005
00006
00007
00018
00019
00020 #include "../SYSTEM/sys_hardware.h"
00021 #include "codec.h"
00022 #include "codec_assert.h"
00023
00024
00025
00026
00027
00028
00029 st_PCM Pcm;
00030 int pcmPipeBuf[PCM_PIPE_FRAMELEN*2+4];
00031
00032 #pragma DATA_SECTION(BUF_output, ".cirbuf")
00033
00034 int BUF_output[BUF_OUTPUTSIZE];
00035
00036
00037 #pragma CODE_SECTION(CODEC_init, ".sram0_resident")
00041 void CODEC_init( void )
00042 {
00043
00044 SPI_lock(SYS_FOREVER);
00045
00046
00047 GPIOSR = GPIOSR | VCTRL_XMIT;
00048
00049 CODEC__spiWrite(AIC23REG_RESET|0x1FF);
00050 CODEC__spiWrite(AIC23REG_PWRDOWN | 0x01FF);
00051 CODEC__spiWrite(AIC23REG_RESET);
00052 CODEC__spiWrite(AIC23REG_LHDPHONE | 0x100);
00053 SPI_unlock();
00054
00055
00056 GEN_zeroOut( (UINT16 *)&Pcm, sizeof(st_PCM) );
00057
00058
00059 if( PIPE_init( &Pcm.pipe, PCM_PIPE_FRAMELEN, 2,
00060 pcmPipeBuf, PCM_PIPE_FRAMELEN*2+4 ) == 0 ) SYS_die(CODEC_INIT);
00061
00062 Pcm.codecMode = COP_POWERDOWN;
00063 Pcm.flag = 0;
00064 Pcm.getFunc =
00065 Pcm.newGetFunc = CODEC__defaultPcmGet;
00066 Pcm.putFunc =
00067 Pcm.newPutFunc = CODEC__defaultPcmPut;
00068 CODEC_WARMUP();
00069 }
00070
00071
00072
00073
00074