📄 drv_dsp_ctrlspeed.c
字号:
//乷
// To SDC
// 俼俷俵埑弅僱僞
// 俠俢俢俙俤俽俹僆僼傪巇條偐傜敳偔応崌
// 倃侾俶傊偺慗堏偼偁傝摼側偄偱偡丅
// 偝偔偭偲嶍偭偰壓偝偄丅
// 乸
/******************************************************************************/
/* [NAME] :Drv_DSP_CtrlSpeed.c */
/* [OUTLINE]: */
/* [HISTORY]: */
/* [NOTE] :TAB=4 */
/******************************************************************************/
//#include <machine.h> /* Z80梡 */
#include "BU18703.h" /* CPU儗僕僗僞掕媊 */
#include "prototype.h"
#include "extern.h"
#include <string.h>
/*----------------------------------------------------------------------------*/
// 俠俢丂SERVO憌丅忢挀僪儔僀僶丅
// 僕儑僈僽儖帪丄VCO挷惍寢壥偵忋忔偣偡傞僥乕僽儖
const UINT08 TABLE_VCO_OFFSET_JOGGABLE[32]=
{
0x0f, // 000h
0x10, // 001h
0x10, // 002h
0x10, // 003h
0x11, // 004h
0x11, // 005h
0x12, // 006h
0x12, // 007h
0x12, // 008h
0x13, // 009h
0x13, // 00Ah
0x14, // 00Bh
0x14, // 00Ch
0x15, // 00Dh
0x15, // 00Eh
0x16, // 00Fh
0x16, // 010h
0x17, // 011h
0x17, // 012h
0x18, // 013h
0x19, // 014h
0x1a, // 015h
0x1a, // 016h
0x1b, // 017h
0x1b, // 018h
0x1c, // 019h
0x1d, // 01Ah
0x1e, // 01Bh
0x1e, // 01Ch
0x1f, // 01Dh
0x1f, // 01Eh
0x1f // 01Fh
};
const UINT08 CMD_SPEED_1N[5][2]= //--- nomal *1.0 speed ---
{
{0x50,0x80},
{0x70,0x1C},
{0x81,0x7A}, //Initial value for Rough
{0x85,0x45}, //CLV Rough Gain
{0x82,0x00} //Traning on
};
// YTC008 20050110 >>>
const UINT08 Tbl_CLV_1W[][2] =
{
{ 0x50, 0x80 }, // VCO-PCk娫暘廃斾/EFM暘廃斾 偙偙偱X1宯偵丅
{ 0x81, 0x20 }, // CLV Wide Target
{ 0x82, 0x20 }, // CLV Wide MODE
{ 0x83, 0x01 }, // 敿攇俠俴倁夝彍
{ 0x85, 0x34 } // CLV Wide Gain
};
const UINT08 Tbl_CLV_2W[][2] =
{
{ 0x50, 0x40 }, //
{ 0x82, 0x20 }, // CLV Wide mode
{ 0x85, 0x34 } // CLV Wide gain
};
// YTC008 20050110 <<<
void drvDSP_SetEcc( void );
/*----------------------------------------------------------------------------*/
// 俠俴倁夞揮懍搙儌乕僪傪愗懼偊傞丅
//
// 栚昗夞揮懍搙 gu08_kind_SPEED
// (=慗堏屻偺懍搙) 0 X1N 堦攞懍normalCLV (CDDA ESPoff) 崱夞偺僙僢僩偱偼偮偐傢側偝偘丅
// 1 X11W 堦攞懍WIDE (MP3,ESP_SpeedDown)
// 2 X20W 俀攞懍WIDE (ESP)
// 3 X26W 2.6攞懍WIDE (JOGGABLE)
//
// 慗堏梫媮 gu08_scc_Speed
// 0 梫媮柍偟
// 1 慗堏梫媮
// 2 慗堏幚峴拞丒丒丒
// 3 慗堏幚峴拞丒丒丒
// 4
// 8 堦攞懍WIDE傊noBRAKE慗堏 (JOGGABLE/4MDRAM梡僷儚乕僙乕僽)
// 9 慗堏幚峴拞丒丒丒
// 10慗堏幚峴拞丒丒丒
//
/*----------------------------------------------------------------------------*/
/* [NAME] :DrvDSP_CtrlSpeed */
/* [FUNCTION] : */
/* [RETURN] :void */
/* [PARAMETER]:void */
/* [HISTORY] : */
/* [NOTE] : */
/*----------------------------------------------------------------------------*/
void DrvDSP_CtrlSpeed( void )
{
if(gu08_scc_speed==0)
{
return; //->慗堏梫媮柍偟
}
else
{ //梫媮桳傝丄慗堏幚峴拞
switch(gu08_kind_SPEED)
{
case 0: //X1N傊慗堏偟偰壓偝偄
drvDSP_speed_ctrl_X1N();
break;
case 1: //X1.1W傊慗堏偟偰壓偝偄
drvDSP_speed_ctrl_X11W();
break;
case 2: //X2.0W傊慗堏偟偰壓偝偄
drvDSP_speed_ctrl_X20W();
break;
case 3: //X2.6W傊慗堏偟偰壓偝偄
// drvDSP_speed_ctrl_X26W(); // YTC_20041228
drvDSP_speed_ctrl_X20W(); // YTC_20041228
break;
}
}
}
/*----------------------------------------------------------------------------*/
/* [NAME] :DrvDSP_CtrlSpeed */
/* [FUNCTION] : */
/* [RETURN] :void */
/* [PARAMETER]:void */
/* [HISTORY] : */
/* [NOTE] : */
/*----------------------------------------------------------------------------*/
void drvDSP_speed_ctrl_X1N()
{
// UINT08 i;
switch(gu08_scc_speed)
{
case 1: //慗堏奐巒
#if ROM // SDC 20050205
DrvDSP_BIOS_WriteReg( 0x9E, gu08_9E_VcoOffset); //VCO僆僼僙僢僩栠偡丅(JOGGABLE_ESP->ESP_off偺偲偒(崱夞偺僙僢僩偱偼偁傝摼側偄偐傕))
#else
DrvDSP_BIOS_WriteReg( 0x9E, gu08_Vco[VCO_OFFSET]); //VCO僆僼僙僢僩栠偡丅(JOGGABLE_ESP->ESP_off偺偲偒(崱夞偺僙僢僩偱偼偁傝摼側偄偐傕))
#endif
// YTC008 20050110 >>>
// for(i=0; i < 5; i++) //0.1.2.3.4
// {
// DrvDSP_BIOS_WriteReg(CMD_SPEED_1N[i][0], CMD_SPEED_1N[i][1]); //
// }
SendTable( (UINT08 *)CMD_SPEED_1N, sizeof(CMD_SPEED_1N) ); // YTC007 20050110
// <<<
drvDSP_SetEcc();
gu16_Timer_CLV_SPEED = CONST_TIMER_SPEED_X1N;
gu08_scc_speed=2;
break;
// case 2: //帪娫懸偪
default: //帪娫懸偪
if(gu16_Timer_CLV_SPEED==0)
{
DrvDSP_BIOS_EndTraining( ); //慗堏姰椆 (SERVO LOCK傑偱偼柺搢尒柍偄傛丅)
gu08_scc_speed=0; //
}
break;
}
}
// 1.1攞懍儚僀僪儌乕僪傊慗堏
// 擖傝岥偑擇偮偁傝傑偡丅拲堄丅
// 侾丗懄嵗偵x1.1W偵慗堏
// 俉丗敿攇CLV傪巊偭偰x1.1W偵慗堏(JOGGABLE,4MDRAM巊梡帪)
/*----------------------------------------------------------------------------*/
/* [NAME] :DrvDSP_CtrlSpeed_X11W */
/* [FUNCTION] : */
/* [RETURN] :void */
/* [PARAMETER]:void */
/* [HISTORY] : */
/* [NOTE] : */
/*----------------------------------------------------------------------------*/
void drvDSP_speed_ctrl_X11W()
{
switch(gu08_scc_speed)
{
case 8: //僷儚乕僙乕僽梡侾丏侾倂 擖傝岥
//4bit斉偺堏怉
DrvDSP_BIOS_HalfClv_On(); //DSP.8341
DrvDSP_BIOS_WriteReg( 0x82, 0x20 ); //CLV Wide MODE
DrvDSP_BIOS_WriteReg( 0x81, 0x20 ); //CLV Wide TARGET <X1.1W>
#if ROM // SDC 20050208
DrvDSP_BIOS_WriteReg( 0x9E, gu08_9E_VcoOffset); //X1.1晅嬤偺PLL捛廬惈岦忋 // YTC_20041228
#else
DrvDSP_BIOS_WriteReg( 0x9E, gu08_Vco[VCO_OFFSET]); //X1.1晅嬤偺PLL捛廬惈岦忋 // YTC_20041228
#endif
gu16_Timer_CLV_SPEED = CONST_TIMER_SPPED_DOWN;
gu08_scc_speed=9;
break;
case 9: //慗堏姰椆懸偪
// YTC_20041228 >>>
if(gu16_Timer_CLV_SPEED != 0)
{ //尰嵼懍搙僠僃僢僋
DrvDSP_BIOS_WriteReg( 0xFA, 0x80 ); //儌僯僞愗懼丅尰嵼CLV懍搙傪庢摼偟偨偄
//儌僯僞愗懼偼栠偝側偄偱椙偄丅
if(DrvDSP_BIOS_ReadReg( 0xEE ) >= CONST_SPEED_11W)
{ // 懍搙偑棊偪愗傜偢丄偐偮丄帪娫傕傑偩偁傞
break;
}
gu08_scc_speed=10; //廩暘僗僺乕僪棊偪偨丅X11W妋掕張棟傊
}
else
{ //TIMEOUT
gu08_scc_speed=10; //帪娫愗傟丅嫮惂揑偵x11W傊丅
}
// break;
// <<<
case 1: //嫮惂揑偵侾丏侾倂偵偡傞丅
case 10: //X1.1W妋掕
// YTC_20041228 >>>
DrvDSP_BIOS_WriteReg( 0x60, gu08_sts_LON &=~BIT_RF_PH_CPS ); // RF_PH_CPS X1
// DrvDSP_BIOS_WriteReg( 0x62, Tbl_EQ_1X[gu08_kind_Gain & 0x07] ); // X1 RF EQ // YTC005 20050104
DrvDSP_BIOS_WriteReg( 0x62, Tbl_EQ_1X[gu08_kind_Gain] ); // X1 RF EQ // YTC005 20050104
// <<<
// YTC008 20050110 >>>
// DrvDSP_BIOS_WriteReg( 0x50, 0x80 ); //VCO-PCk娫暘廃斾/EFM暘廃斾 偙偙偱X1宯偵丅
// DrvDSP_BIOS_WriteReg( 0x81, 0x20 ); //CLV Wide Target
// DrvDSP_BIOS_WriteReg( 0x82, 0x20 ); //CLV Wide MODE
// DrvDSP_BIOS_WriteReg( 0x83, 0x01 ); //敿攇俠俴倁夝彍
// DrvDSP_BIOS_WriteReg( 0x85, 0x34 ); //CLV Wide Gain
SendTable( (UINT08 *)Tbl_CLV_1W, sizeof(Tbl_CLV_1W) ); // YTC007 20050110
// <<<
drvDSP_SetEcc();
#if ROM // SDC 20050208
DrvDSP_BIOS_WriteReg( 0x9E, gu08_9E_VcoOffset); //VCO僆僼僙僢僩栠偡丅(JOGGABLE_ESP->MP3帪摍偁傝偆傞)
#else
DrvDSP_BIOS_WriteReg( 0x9E, gu08_Vco[VCO_OFFSET]); //VCO僆僼僙僢僩栠偡丅(JOGGABLE_ESP->MP3帪摍偁傝偆傞)
#endif
gu08_scc_speed = 0; //慗堏廔椆
break;
}
}
/*----------------------------------------------------------------------------*/
/* [NAME] :DrvDSP_CtrlSpeed_X20W */
/* [FUNCTION] : */
/* [RETURN] :void */
/* [PARAMETER]:void */
/* [HISTORY] : */
/* [NOTE] : */
/*----------------------------------------------------------------------------*/
void drvDSP_speed_ctrl_X20W()
{
// YTC_20041228 >>>
UINT08 u08_VcoOffset;
UINT08 u08_ClvTarget;
DrvDSP_BIOS_WriteReg( 0x60, gu08_sts_LON |=BIT_RF_PH_CPS ); // RF_PH_CPS X2
// DrvDSP_BIOS_WriteReg( 0x62, Tbl_EQ_2X[gu08_kind_Gain & 0x07] ); // X2 RF EQ // YTC005 20050104
DrvDSP_BIOS_WriteReg( 0x62, Tbl_EQ_2X[gu08_kind_Gain] ); // X2 RF EQ // YTC005 20050104
// YTC007 20050110 >>>
// DrvDSP_BIOS_WriteReg( 0x50, 0x40 ); //
// DrvDSP_BIOS_WriteReg( 0x82, 0x20 ); //CLV Wide mode
// DrvDSP_BIOS_WriteReg( 0x85, 0x34 ); //CLV Wide gain
SendTable( (UINT08 *)Tbl_CLV_2W, sizeof(Tbl_CLV_2W) ); // YTC007 20050110
// <<<
drvDSP_SetEcc();
if( gu08_kind_SPEED == 2 )
{ // X2.0W
u08_ClvTarget =0x3D; // X2.0 Speed
#if ROM // SDC 20050208
u08_VcoOffset =gu08_9E_VcoOffset; // Normal VCO Offset
#else
u08_VcoOffset = gu08_Vco[VCO_OFFSET]; // Normal VCO Offset
#endif
}
else
// else if( gu08_kind_SPEED == 3 )
{ // X2.6W
u08_ClvTarget =0x50; // X2.6 Speed
#if ROM // SDC 20050208
u08_VcoOffset =TABLE_VCO_OFFSET_JOGGABLE[gu08_9E_VcoOffset]; // Boosted VCO Offset
#else
u08_VcoOffset =TABLE_VCO_OFFSET_JOGGABLE[gu08_Vco[VCO_OFFSET]]; // Boosted VCO Offset
#endif
}
DrvDSP_BIOS_WriteReg( 0x81, u08_ClvTarget );
DrvDSP_BIOS_WriteReg( 0x9E, u08_VcoOffset );
gu08_scc_speed=0;
// <<<
}
// YTC_20041228 >>>
///*----------------------------------------------------------------------------*/
///* [NAME] :DrvDSP_CtrlSpeed_X26W */
///* [FUNCTION] : */
///* [RETURN] :void */
///* [PARAMETER]:void */
///* [HISTORY] : */
///* [NOTE] : */
///*----------------------------------------------------------------------------*/
//void drvDSP_speed_ctrl_X26W()
//{
// drvDSP_speed_ctrl_X20W(); //婎杮偼X20W偱丄埲壓偺僐儅儞僪傪捛壛
// DrvDSP_BIOS_WriteReg( 0x81, 0x50 ); //CLV Wide Target <X2.6W>
// DrvDSP_BIOS_WriteReg( 0x9E, TABLE_VCO_OFFSET_JOGGABLE[gu08_9E_VcoOffset] ); //VCO僆僼僙僢僩偵壓懯
//// gu08_scc_speed = 0; //柧帵 drvDSP_speed_ctrl_X20W偱幚巤偝傟偰偄傞
//}
// <<<
void drvDSP_SetEcc( void )
{
UINT08 u08_Param =0;
if( stInfoArea.PlayType == TYPE_MP3 )
u08_Param =MODE_ROM;
// else u08_Param =MODE_DA;
if( gu08_kind_SPEED==1 )
u08_Param +=ECC_22; // X1.1W
// else u08_Param +=ECC_24; // X2W, X2.6W
DrvDSP_BIOS_WriteReg( 0xA1, u08_Param );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -