?? ucode5.c
字號:
#include "winav.h"
#include "w99av.h"
#include "ucode.h"
#include "cc.h"
//Kevin1.25, no matter whether SUPPORT_GZIP_COMPRESSION or not, load test tone as follows
#ifndef REMOVE_SETUP_SPEAKER_TEST
#ifdef SYSTEM_8051
DWORD code _dwTONPRAM[]=
{
#include "tonpram.inc"
};
DWORD code _dwTONERAM[]=
{
#include "toneram.inc"
};
#endif
#pragma DISABLE
//Kevin1.25, create to load test tone ucode
BYTE UCODE5_LoadCode(BYTE bRam, BYTE bCode)
{
bRet = TRUE ;
switch (bRam)
{
case UCODE_DSPRAM :
// Chuan 278 2002/10/28: Load DSP PRAM first.
if (_bDSPramCur == bCode)
{
// TCC040, let upper level know that code not changed
bRet = UCODE_LOAD_NONE ;
break ;
}
_bDSPramCur = bCode ;
switch (bCode)
{
case UCODE_DSPRAM_TONE:
#ifdef SYSTEM_8051
dwRAM = _dwTONPRAM ;
#else
bRet = _OpenUCODE ( "tonpram.inc" );
#endif
break ;
}
// Chuan 278 2002/10/28: Keep A_RST high
W99AV_WriteRegDW (PCR,(WORD)(__wW99AVPCRLow|0x20), __wW99AVPCRHigh) ;
_UCODEIndex = (WORD)dwRAM[1];
dwRAM += START;
for (__wTemp=0; __wTemp<_UCODEIndex; __wTemp++)
{
// Chuan DVD_171 12/11/2001: use simple way
#if IO == IO_PCI
W99AV_OutIndex (W99AV_AIRID_DSPMEM | 0x00010000L | __wTemp) ;
#else
// Chuan1.00, Don't use function in order to reduce load code time.
OUTB(AIR3, HIBYTE(HIWORD(W99AV_AIRID_DSPMEM))) ;
OUTB(AIR2, LOBYTE(HIWORD(W99AV_AIRID_DSPMEM|0x00010000L))) ;
OUTB(AIR1, HIBYTE(__wTemp)) ;
OUTB(AIR0, LOBYTE(__wTemp)) ;
#endif
W99AV_OutData (dwRAM [__wTemp]) ;
}
#ifndef SYSTEM_8051
if (pdwUcode)
{
_hfree(pdwUcode);
pdwUcode = NULL;
}
#endif
// Chuan 278 2002/10/28: Load DSP ERAM
switch (bCode)
{
case UCODE_DSPRAM_TONE:
#ifdef SYSTEM_8051
dwRAM = _dwTONERAM ;
#else
bRet = _OpenUCODE ( "toneram.inc" );
#endif
break ;
}
#ifdef SUPPORT_DRAM_PROTECTION
//Chuan1.02, unprotect ERAM
W99AV_WriteRegDW( UCPR1, 0x0000, 0x0000);
#endif
if (!W99AV_WriteDRAMBurst (ERAM_ADDR, &(dwRAM[START]), (WORD)dwRAM[1]))
{
#ifdef SUPPORT_PRINTF
printf ("\nWrite ERAM Error [0x%x] = [0x%lx]", ERAM_ADDR+_UCODEIndex, dwRAM[_UCODEIndex+2]) ;
#endif
bRet = FALSE ;
}
#ifdef SUPPORT_DRAM_PROTECTION
//Chuan1.02, protect ERAM form ERAM_ADDR to ERAM_END_ADDR
dwTemp = 0x01000000 | ((DWORD)(ERAM_END_ADDR>>8)<<12) | ERAM_ADDR>>8;
W99AV_WriteRegDW( UCPR1, LOWORD(dwTemp), HIWORD(dwTemp));
#endif
// Chuan 278 2002/10/28: Release A_RST
W99AV_WriteRegDW (PCR, __wW99AVPCRLow, __wW99AVPCRHigh) ;
break ;
}
#ifndef SYSTEM_8051
if (pdwUcode)
{
_hfree(pdwUcode);
pdwUcode = NULL;
}
#endif
return bRet ;
}
#else
//Kevin2.30, add dummy const code for *.lin
BYTE code bDummyUCODE5;
#endif //#ifndef REMOVE_SETUP_SPEAKER_TEST
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -