📄 drv_esp.c
字号:
// gu08_esp_read_status = 0; //壒巭忬懺
// esp_decode_green = 0; //桳岠壒僨乕僞柍偟
// esp_wqok +=4; //偪傚偭偲屄幪偰傞丅
// gu32_val_TargetFrame = esp_wqok; //偮側偑傜側偐偭偨subq偺師++偐傜棴捈偟
//
// DrvDSP_Mute_Soft( );
// ESP_bios_Rstop(); //READstop
// ESP_bios_Wstop();
// dram_zanryou =0L; //YTC003
// gu08_sccd_ESPctrl = 2;
//
// //拝抧慜偵壒巭傑偭偨丒丒丒棴捈偟
////YTC003 20041231 DrvDSP_BIOS_WriteRegMP3( 0x02, 0x00 ); //CONNCT拞巭
//// esp_wqok++; //堦屄幪偰傞丅
//// gu32_val_TargetFrame = esp_wqok; //偮側偑傜側偐偭偨subq偺師偐傜棴捈偟
//// gu08_sccd_ESPctrl = 2; //-> loop
//
// break;
// }
if( gu08_sts_Subq_valid )
{
if( gu32_frame_atime > ( esp_wqok + 2 ) )
{ //捠夁偟偰偟傑偭偨
if( retry_count >= 4 )
{
DrvDSP_BIOS_WriteRegMP3( 0x02, 0x84 ); // Direct!
retry_count = 0; //
gu08_sccd_ESPctrl = 5;
//YTC A2x 20050303 debug_direct_count++; ////debug 040729
}else
{
DrvDSP_BIOS_WriteRegMP3( 0x02, 0x00 ); //CONNCT拞巭
retry_count++; //
// retry 1-2 夞栚偼 -3 僼儗丄3-4 夞栚偼峏偵 -6 僼儗
gu32_val_TargetFrame = ( esp_wqok - 3 ) - (( retry_count >> 1 ) * 6 );
gu08_GotoMsfSC = 1;
gu08_sccd_ESPctrl = 21;
}
}
}
}
break;
// --------------- 僷儚乕僙乕僽宯
case 30:
#if ERR_DETECT // SDC 20041218
gu08_scc_ServoError = 0; // 僷儚乕僙乕僽拞偼僄儔乕専弌偟側偄
#endif
DrvDSP_PowerSave_on1();
gu08_sccd_ESPctrl = 31;
break;
case 31: //巆検僠僃僢僋丒暅婣億僀儞僩傑偱尭傞偺傪懸偮丅
if(aa_touch_f==0)
{ //AA専弌慜
if(tmp_timing==4) //@12mSec
{ //巆検庢摼偼張棟廳偄偺偱娫堷偔丅
// dram_zanryou = get_mp3reg_zanryo( ); //
#if ROM // SDC 20050207
if(dram_zanryou < shoene_recoverpoint[ dramMode ][ gu08_kind_DRAM_SIZE ]) //DRAM庬椶暿暅婣億僀儞僩埲壓偵側偭偨偐丠
#else
if(dram_zanryou < shoene_recoverpoint[ dramMode ][ size ]) //DRAM庬椶暿暅婣億僀儞僩埲壓偵側偭偨偐丠
#endif
{ //巆傝俀俆亾埲壓@16MB
gu08_sccd_ESPctrl=32; //Restart奐巒
}
}
}
break;
//----------ReStart
//20041117僄儔乕専弌偲偺楢実傕娷傔偰峫偊傞偙偲丅
case 32: //
DrvDSP_PowerSave_off1();
DrvDSP_BIOS_WriteReg(0x83,0x21); //YTC004 20050103 CLVservo.limit=2/8
gu08_sccd_ESPctrl=33; //
break;
case 33: //
if(DrvDSP_PowerSave_off2() != 0)
{
gu08_sccd_ESPctrl=34; //
}
break;
case 34: //
if(DrvDSP_PowerSave_off3() != 0)
{
gu08_sccd_ESPctrl=35; //
}
break;
case 35: //
if(gu08_scc_FocusSearch==0)
{
//YTC004 20050103 DrvDSP_BIOS_WriteReg(0x83,0x21); //CLVservo.limit=2/8
// DrvDSP_BIOS_WriteReg(0x47,0x00); //Yflag disable
DrvDSP_BIOS_Tracking_On();
// DrvDSP_BIOS_WriteReg( 0x62, 0x19 ); //20041117僐儗偑側偄偲僟儊丅 // YTC_20041228
//62xx搳偘捈偝傟偰偄傞壜擻惈偁傝丅挷嵏丅
DrvDSP_BIOS_Clv_On( );
gu08_sts_PowerSave = 0; //偙偺帪揰傪傕偭偰丄僷儚乕僙乕僽夝彍埖偄
gu08_sccd_ESPctrl=20; //->埲壓捠忢僐僱僋僩
#if ERR_DETECT // SDC 20041218
gu08_scc_ServoError = 1; // 僄儔乕専弌嵞奐
DrvDSP_CheckError_SetTimerSUBQ_Start( );
#endif
#if 1 // SDC041224
if( ESPMode & 0xF0 ) // ESP mode change power save 暅婣梫媮偁傝
{
gu08_sccd_ESPctrl = 2; // play restart set
}
//YTC004 20050103 敾抐弴彉曄峏
//YTC003 20041231 No.301
if(dram_zanryou == 0)
{ //偙偺帪揰偱巆検侽側傜丄棴捈偟丅僷儚乕僙乕僽拞偺PLAY+PLAY偵傕懳墳丅
gu08_sccd_ESPctrl = 2; // play restart set
}
if( gu08_scc_PauseCD )
{
gu08_sccd_ESPctrl = 6; // pause set
gu08_GotoMsfSC = 1; //
}
#endif // SDC011224
}
break;
//YTC A2X No.16 20050307
case 36: //DIR+偵傛傞俤俽俹 on/off偼壒傪弌偡憖嶌偩偐傜CLV惂尷傪夝彍偡傞丅
DrvDSP_BIOS_WriteReg(0x83,0x01); //CLVservo.limit=1/1
/* 懕偗偰壓傊*/
//<<<
//YTC004 20050103
case 37: //僉乕憖嶌偵傛傞嫮惂僷儚乕僙乕僽夝彍
//YTC00C 20050115 僷儚乕僙乕僽偐傜偺嫮惂暅婣僶儕儏乕僷僢僋傪巊偆丅
DrvDSP_PowerSaveOff_valueset(); //YTC00C 20050115
gu16_Timer_PowerSave = 00; //YTC00A 20050112 僷儚乕僙乕僽丒嫮惂夝彍偺攇宍傪摑堦偡傞
gu08_sccd_ESPctrl=34; //
break;
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---
// POWER SAVE MODE 0
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---
case 40: //mode0梡億乕僘丅 儊儌儕乕僼儖傑偱挋傔偨傜丄偦偙偱僗僥僀丅
if( gu08_GotoMsfSC == 0 )
{ //埵抲偩偟偑廔傢偭偨強偱敾抐
if(gu08_esp_read_status != 0)
{ //壒弌偟偰偄傞 亖 億乕僘夝彍偟偨丅
gu08_sccd_ESPctrl = 20; //->愙懕張棟傊
}
else
{
gu08_GotoMsfSC = 1; //pause
}
}
break;
} //switch
// ESP mode change ============================
if(gu08_scc_PlayTitle == 5) //YTC010 20050216 SDC NO480,481,482
{
#if 1 // SDC 041225
if( gu08_mode_ESP != (ESPMode&0x0F) )
{
ESPMode = gu08_mode_ESP;
DrvDSP_Mute_Soft( ); //YTC002 20041226 softmute
DrvDSP_ctrlESP_clrESP(); //YTC006 20050105 -ROM
if(gu08_esp_read_status != 0 ) //YTC006 20050105
{
//YTC A2x No.469 20050302
// esp_wqok =
// gu32_val_TargetFrame = msf2lbn_bcd( esp_subq.amin, esp_subq.asec, esp_subq.afrm );
gu32_val_TargetFrame = msf2lbn_bcd( esp_subq.amin, esp_subq.asec, esp_subq.afrm );
if(gu32_val_TargetFrame == 0)
{ //ODEN not ready (READstart捈屻摍)
gu32_val_TargetFrame = esp_wqok;
}
else
{
esp_wqok = gu32_val_TargetFrame;
}
//<<<
}
//YTC005 esp_wqok =
//YTC005 gu32_val_TargetFrame = msf2lbn_bcd( esp_subq_amin, esp_subq_asec, esp_subq_afrm );
//YTC005 20050104
DrvDSP_ctrlESP_setPSMode(); //YTC005 20050104 撪晹儌乕僪愗傝懼偊偨傜丄僷儚乕僙乕僽儌乕僪傕愗傝懼偊傞
aa_touch_f = 0; ////YTC006 20050106 No.311,351
if( gu08_sts_PowerSave )
{
//YTC006 gu08_sccd_ESPctrl = 32; // Restart 奐巒
//YTC A2X No.16 20050307
// gu08_sccd_ESPctrl = 37; // Restart 奐巒 YTC006 20050105 憖嶌偵傛傞暅婣偩偐傜嫮惂夝彍
gu08_sccd_ESPctrl = 36; // Restart 奐巒 YTC006 20050105 憖嶌偵傛傞暅婣偩偐傜嫮惂夝彍+CLV崅偝惂尷夝彍
//<<<
ESPMode |= 0x10;
} else if( gu08_scc_PauseCD ) {
gu08_sccd_ESPctrl = 6; // pause set
gu08_GotoMsfSC = 1; //
} else {
gu08_sccd_ESPctrl = 2; // play restart set
}
}
#endif // SDC 041225
}// YTC010 20050217 SDC no480,481,482
// READ ========================================
if( gu08_esp_read_status == 0 )
{ //壒弌偟偰偄側偄
if( mp3_decode_enable != 0 )
{ //UI偐傜偺巜帵 壒弌偣両
//壒弌偡
if( esp_decode_green != 0 )
{ //棴崬嬶崌丒丒丒壒弌偣傞
ESP_bios_Rstart(); //Rstart
DrvDSP_Mute_Off();
gu08_esp_read_status = 1; //
}
else //YTC002 20041226 softmute
{
if( gu08_sccd_ESPctrl == 6 ) //
{
gu08_sccd_ESPctrl = 2; // 暅婣張棟僙僢僩
}
//#endif // SDC 041222 esp pause
}
}
else //YTC006 20050105 張棟敳偗丅億乕僘拞偵僗僉僢僾偟偨丅 僷儚乕僙乕僽拞偵億乕僘偵擖偭偨
{ //億乕僘拞
//YTC00A 20050112 FIFO_FULL偵偐偐傢傜偢丄new張棟偱丅
//#if FIFO_FULL // SDC 050109
// if( gu08_sts_PowerSave == 0)
//#else
// if( gu08_sts_PowerSave == 0 && gu08_sccd_ESPctrl != 6 ) // SDC 20050109
//#endif
if( gu08_sts_PowerSave == 0 && gu08_sccd_ESPctrl != 6 ) // SDC 20050109
{
// gu08_esp_read_status = 0; //壒巭忬懺
// esp_decode_green = 0; //桳岠壒僨乕僞柍偟
esp_wqok = gu32_val_TargetFrame ;
// esp_wqok_track = esp_subq_track;
// DrvDSP_Mute_Soft( );
DrvDSP_ctrlESP_clrESP(); // YTC006 20050105
gu08_sccd_ESPctrl = 6; // pause set
// gu08_GotoMsfSC = 1; //
}
}
}
else
{ //壒弌偟偰偄傞
if( mp3_decode_enable == 0 )
{ //UI偐傜偺巜帵 壒巭傔両
//YTC002 20041226 softmute >>>
//億乕僘偵擖傞張棟丅
gu08_esp_read_status = 0; //壒巭忬懺
esp_decode_green = 0; //桳岠壒僨乕僞柍偟
esp_wqok =
gu32_val_TargetFrame = msf2lbn_bcd( esp_subq.amin, esp_subq.asec, esp_subq.afrm );
esp_wqok_track = esp_subq.track; //YTC002
DrvDSP_Mute_Soft( );
DrvDSP_ctrlESP_clrESP();
if( gu08_sts_PowerSave )
{
//YTC004 gu08_sccd_ESPctrl = 32; // Restart 奐巒
gu08_sccd_ESPctrl = 37; // Restart 奐巒 YTC004 憖嶌偵傛傞僷儚乕僙乕僽夝彍偼嫮堷僉僢僋
} else {
gu08_sccd_ESPctrl = 6; // pause set
gu08_GotoMsfSC = 1; //
}
//<<<
}
else
{
//尰嵼壒帪娫嶌惉 //張棟廳偄丅
esp_subq_f = 0;
if(tmp_timing==3) //@12mSec 張棟廳偄偺偱娫堷偔
{ //巄掕丅倱倳倐俻庢傟偨弰夞丅杮斣偼SUBQ娭學側偔丄侾侽倣俽枅偖傜偄丅張棟暘嶶偟傞丅
DrvDSP_BIOS_WriteRegMP3( 0x3C, 0x80 ); //RCQUD梫媮
while((( ctmp_fe0 = DrvDSP_BIOS_ReadRegMP3( 0xE0 )) & 0x80 ) == 0 );
if( ( ctmp_fe0 & 0x01 ) != 00 )
{ //俠俼俠僠僃僢僋俷俲丅
if( ( DrvDSP_BIOS_ReadRegMP3( 0xD0 ) & 0x0F ) ==0x01 )
{ //CODE=0x01
//帪娫忣曬偺俽倀俛俻
for( gu08_i = 0 ; gu08_i <= 9 ; gu08_i++ )
{
(&(esp_subq.code))[ gu08_i ] = DrvDSP_BIOS_ReadRegMP3( 0xD0 + gu08_i ); //forEMPASIS
}
esp_subq_f = 1; //帪娫忣曬庢摼偟偨
}
}
DrvDSP_BIOS_WriteRegMP3( 0x3C, 0x00 ); //RCQUD梫媮庢壓偘
if( esp_subq_f != 0 )
{ //帪娫忣曬峏怴丅 乭亅乭昞帵偟側偄斉
if( esp_subq.index == 0 )
{
stInfoArea.hexPlayMin = 0; //"亅"昞帵偟側偄
stInfoArea.hexPlaySec = 0; //
}
else
{
stInfoArea.hexPlayMin = bcd2bin( esp_subq.smin ); //ESP偼僠儔僣僉巭傔張棟晄梫丠
stInfoArea.hexPlaySec = bcd2bin( esp_subq.ssec ); //
}
//EMPHASIS CHECK @softESP 娭悢壔偼偟傑偣傫丅
if((esp_subq.code & B00010000)==0)
{ //off
if(gu08_sts_EMPHASIS != 0 )
{
DrvDSP_BIOS_EMPHASIS_off_MP3();
}
}
else
{ //on
if(gu08_sts_EMPHASIS == 0 )
{
DrvDSP_BIOS_EMPHASIS_on_MP3();
}
}
//INTRO 侾侽昩僠僃僢僋
if( ( esp_subq.smin == 0 ) && ( esp_subq.ssec <= 0x10 ) ) //尰嵼偺DRAM_SUBQ偱敾抐
{ //侾侽sec枹枮
gu08_sts_Intro = 0;
}
else
{ //侾侽sec宱夁偟偨
gu08_sts_Intro = 1;
}
if( matagi == 1 )
{
if( esp_wqok_track == esp_subq.track )
{
gu08_sts_Border = ON; //儃乕僟乕曬崘(壒)
matagi = 0; //屪偓夝徚
//YTC A2X debug 20050311
// //YTC A2X test 0311
// CPU_SIO2_PIODR |= poCHA_CTL; // 僠儍乕僕(H)
// CPU_SIO2_PIODR |= poCHA_CTL; // 僠儍乕僕(H)
// CPU_SIO2_PIODR &= ~poCHA_CTL; // 僠儍乕僕(L)
//debug
}
}
}
}
else
{
//YTC007 20050107 俙俙亄巆検偱廔椆偼攑巭丅
// //YTC004 20050103 僥僗僩僨傿僗僋俈俉係 TNO26懳嶔丅嵟廔嬋偼偍怟愗傞丅
// if( aa_touch_f != 0 )
// {
// tmp_zanryou_slesh = 0x0000400; //4bit埑弅
// if((ESPMode & 0x0F)==0)
// {
// tmp_zanryou_slesh = 0x00001000; //旕埑弅
// }
// if(dram_zanryou < tmp_zanryou_slesh )
// {
// gu08_sts_Border = ON; //儃乕僟乕曬崘(壒)
// aa_touch_f = 0;
// matagi = 0;
// }
// }
//YTC007 2005010 俙俙亄撉傒偩偟姰椆偱廔椆丅
//YTC004
if( ( ( ctmp_fc2 & B00100000 ) == 00 ) && ( aa_touch_f != 0 ) )
{
//俙俙傑偱挋傔偰丄偦傟偑嬻偵側偭偨亖捠忢嵞惗偺廔椆丂丒丒丒俀嬋嵞惗帪嵞峫梫
// ssa_window_cdborder = 0x80; //儃乕僟乕曬崘
//tes ssa_window_cdborder = 0x81; //儃乕僟乕曬崘 byAA
gu08_sts_Border = ON; //儃乕僟乕曬崘(壒)
aa_touch_f =
matagi = 0; //YTC00D 20050116 -ROM
//YTC002
DrvDSP_Mute_Soft( ); //YTC002 儃乕僟乕弌偡偲摨帪偵丄帺椡偱儈儏乕僩丅
}
}
}
}
}
#endif
} //
//YTC005 20050104
/*----------------------------------------------------------------------------*/
/* [NAME] :DrvDSP_ctrlESP_setPSMode */
/* [FUNCTION] : */
/* [RETURN] :void */
/* [PARAMETER]:void */
/* [HISTORY] : */
/* [NOTE] : */
// gu08_PowersaveMode
/*----------------------------------------------------------------------------*/
void DrvDSP_ctrlESP_setPSMode() //YTC005 20050104 撪晹儌乕僪愗傝懼偊偨傜丄僷儚乕僙乕僽儌乕僪傕愗傝懼偊傞
{
// gu08_PowersaveMode愗懼
gu08_PowersaveMode=0;
//B0004 if(gu08_JOGGABLE == 0 )
//B0004 { //notJOGGABLE
#if 0// AC0001 ROM // SDC 20050207
if(gu08_kind_DRAM_SIZE ==1)
{ //@16M
if(gu08_mode_ESP != 0)
{ //4bit埑弅
gu08_PowersaveMode=1;
}
}
if(gu08_kind_DRAM_SIZE ==2)
{ //@64M
gu08_PowersaveMode=1;
}
}
if(gu08_PowersaveMode == 1)
{
DrvDSP_ctrlESP_speedUP(); //YTC006 20050106 -ROM
}
#else
switch( gu08_kind_DRAM & 0x0C )
{
case 0x04:
gu08_PowersaveMode = gu08_mode_ESP;
break;
case 0x08:
gu08_PowersaveMode = 1;
}
//B0004 }
if( gu08_PowersaveMode )
DrvDSP_ctrlESP_speedUP();
#endif
}
//YTC006 20050105
/*----------------------------------------------------------------------------*/
/* [NAME] :DrvDSP_ctrlESP_clrESP */
/* [FUNCTION] : */
/* [RETURN] :void */
/* [PARAMETER]:void */
/* [HISTORY] : */
/* [NOTE] : */
// gu08_PowersaveMode
/*----------------------------------------------------------------------------*/
void DrvDSP_ctrlESP_clrESP() //YTC006 20050105 俼俷俵埑弅梡嫟捠張棟
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -