⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drv_esp.c

📁 ROHM 公司BU9432:application:应用范围
💻 C
📖 第 1 页 / 共 3 页
字号:
//							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 + -