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

📄 sa9226.h

📁 代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考
💻 H
📖 第 1 页 / 共 2 页
字号:
#define SERVO_TIME_400MS			400
#define SERVO_TIME_500MS			500
#define SERVO_TIME_600MS			600
#define SERVO_TIME_700MS			700
#define SERVO_TIME_800MS			800
#define SERVO_TIME_900MS			900
#define SERVO_TIME_1S				1000
#define SERVO_TIME_2S				2000
#define SERVO_TIME_3S				3000
#define SERVO_TIME_4S				4000
#define SERVO_TIME_5S				5000
#define SERVO_TIME_6S				6000
#define SERVO_TIME_7S				7000
#define SERVO_TIME_8S				8000
#define SERVO_TIME_9S				9000

#define NORMAL_DISC					0
#define CDR_DISC					1
#define DVCD_DISC					2
#define CDRW_DISC					3

#define DEFAULT_MEDIA				0
#define DVCD_MEDIA					1

#define PP0							15624
#define PP1							5668
#define PP2							498520646

//2003-9-19 kobe below define io pin
#ifdef SUPPORT_SOC
#define SERVO_RESET					48	
#define SERVO_LKFS					47	
#define SERVO_MCLK					51	
#define SERVO_DDAT					50	
#define SERVO_XLAT					49	
#define SERVO_ISTAT2				51	// 9290
#define SERVO_LIMIT					8 //13 
#define SERVO_OPEN					29	
#define SERVO_CLOSE					28	
#define SERVO_CLOPSW				30	
#define SERVO_SENSE					46	// 9226
#define SERVO_SCOR					52	
#define SERVO_SQDT					53	
#define SERVO_SQCK					52	
#define SERVO_SPEED					37
#define SERVO_RESET_9226			42	
#define SERVO_MCLK_9226				45
#define SERVO_DDAT_9226				44
#define SERVO_XLAT_9226				43
#else	//for 718,9290,

#define SERVO_RESET					20
#define SERVO_LKFS					12
#define SERVO_MCLK					15
#define SERVO_DDAT					17
#define SERVO_XLAT					16
#define SERVO_ISTAT2				41
#define SERVO_LIMIT					2//longxin(0--mp3 limit,2--vcd limit)
#define SERVO_OPEN					18
#define SERVO_CLOSE					19
#define SERVO_CLOPSW				10
#define SERVO_SENSE					14
#define SERVO_SCOR					13
#define SERVO_SQDT					6
#define SERVO_SQCK					24
#define SERVO_SPEED					9
	#ifdef MUTESERVO_HARDWARE
	#define SERVO_MUTE				11
	#define SERVO_MUTE_INIT			{ GPIO_M_SET(SERVO_MUTE,1);GPIO_E_SET(SERVO_MUTE,1);GPIO_O_SET(SERVO_MUTE,1);}
	#define SERVO_MUTE_LOW			GPIO_O_SET(SERVO_MUTE,0)
	#define SERVO_MUTE_HIGH			GPIO_O_SET(SERVO_MUTE,1)
	#endif
#endif
#define SERVO_RESET_INIT			{ GPIO_M_SET(SERVO_RESET,1);GPIO_E_SET(SERVO_RESET,1);GPIO_O_SET(SERVO_RESET,1);}
#define SERVO_LKFS_INIT				{ GPIO_M_SET(SERVO_LKFS,1);GPIO_E_SET(SERVO_LKFS,0);}
#define SERVO_MCLK_INIT				{ GPIO_M_SET(SERVO_MCLK,1);GPIO_E_SET(SERVO_MCLK,1);GPIO_O_SET(SERVO_MCLK,1);}
#define SERVO_DDAT_INIT				{ GPIO_M_SET(SERVO_DDAT,1);GPIO_E_SET(SERVO_DDAT,1);GPIO_O_SET(SERVO_DDAT,1);}
#define SERVO_XLAT_INIT				{ GPIO_M_SET(SERVO_XLAT,1);GPIO_E_SET(SERVO_XLAT,1);GPIO_O_SET(SERVO_XLAT,1);}
#define SERVO_ISTAT2_INIT			{ GPIO_M_SET(SERVO_ISTAT2,1);GPIO_E_SET(SERVO_ISTAT2,0);}
#define SERVO_LIMIT_INIT			{ GPIO_M_SET(SERVO_LIMIT,1);GPIO_E_SET(SERVO_LIMIT,0);}
#define SERVO_OPEN_INIT				{ GPIO_M_SET(SERVO_OPEN,1);GPIO_E_SET(SERVO_OPEN,1);GPIO_O_SET(SERVO_OPEN,0);}
#define SERVO_CLOSE_INIT			{ GPIO_M_SET(SERVO_CLOSE,1);GPIO_E_SET(SERVO_CLOSE,1);GPIO_O_SET(SERVO_CLOSE,0);}
#define SERVO_CLOPSW_INIT			{ GPIO_M_SET(SERVO_CLOPSW,1);GPIO_E_SET(SERVO_CLOPSW,0);}
#define SERVO_SENSE_INIT			{ GPIO_M_SET(SERVO_SENSE,1);GPIO_E_SET(SERVO_SENSE,0);}
#define SERVO_SCOR_INIT				{ GPIO_M_SET(SERVO_SCOR,0);}
#define SERVO_SQCK_INIT				{ GPIO_M_SET(SERVO_SQCK,0);}
#define SERVO_SQSO_INIT				{ GPIO_SEL(4,0);GPIO_M_SET(SERVO_SQDT,0);}
#define SERVO_SPEED_INIT			{ GPIO_M_SET(SERVO_SPEED,1);GPIO_E_SET(SERVO_SPEED,1);GPIO_O_SET(SERVO_SPEED,1);}

#ifdef SUPPORT_SOC
#define SERVO_RESET_9226_INIT		{ GPIO_M_SET(SERVO_RESET_9226,1);GPIO_E_SET(SERVO_RESET_9226,1);GPIO_O_SET(SERVO_RESET_9226,1);}
#define SERVO_MCLK_9226_INIT		{ GPIO_M_SET(SERVO_MCLK_9226,1);GPIO_E_SET(SERVO_MCLK_9226,1);GPIO_O_SET(SERVO_MCLK_9226,1);}
#define SERVO_DDAT_9226_INIT		{ GPIO_M_SET(SERVO_DDAT_9226,1);GPIO_E_SET(SERVO_DDAT_9226,1);GPIO_O_SET(SERVO_DDAT_9226,1);}
#define SERVO_XLAT_9226_INIT		{ GPIO_M_SET(SERVO_XLAT_9226,1);GPIO_E_SET(SERVO_XLAT_9226,1);GPIO_O_SET(SERVO_XLAT_9226,1);}

#define SERVO_XRES_LOW				GPIO_O_SET(SERVO_RESET_9226,0)
#define SERVO_XRES_HIGH				GPIO_O_SET(SERVO_RESET_9226,1)

#define SERVO_MCLK_9226_LOW			GPIO_O_SET(SERVO_MCLK_9226,0)	
#define SERVO_MCLK_9226_HIGH		GPIO_O_SET(SERVO_MCLK_9226,1)	
#define SERVO_DDAT_9226_LOW			GPIO_O_SET(SERVO_DDAT_9226,0)
#define SERVO_DDAT_9226_HIGH		GPIO_O_SET(SERVO_DDAT_9226,1)
#define SERVO_XLAT_9226_LOW			GPIO_O_SET(SERVO_XLAT_9226,0)
#define SERVO_XLAT_9226_HIGH		GPIO_O_SET(SERVO_XLAT_9226,1)
#else
#define SERVO_XRES_LOW				GPIO_O_SET(SERVO_RESET,0)
#define SERVO_XRES_HIGH				GPIO_O_SET(SERVO_RESET,1)
#endif

#define SERVO_MCLK_LOW				GPIO_O_SET(SERVO_MCLK,0) 
#define SERVO_MCLK_HIGH				GPIO_O_SET(SERVO_MCLK,1)
#define SERVO_DDAT_LOW				GPIO_O_SET(SERVO_DDAT,0) 
#define SERVO_DDAT_HIGH				GPIO_O_SET(SERVO_DDAT,1)
#define SERVO_XLAT_LOW				GPIO_O_SET(SERVO_XLAT,0)
#define SERVO_XLAT_HIGH				GPIO_O_SET(SERVO_XLAT,1)
#define SERVO_OPEN_LOW				(GPIO_O_SET(SERVO_OPEN,0))
#define SERVO_OPEN_HIGH				(GPIO_O_SET(SERVO_OPEN,1))
#define SERVO_SQCK_LOW				(GPIO_O_SET(SERVO_SQCK,0))
#define SERVO_SQCK_HIGH				(GPIO_O_SET(SERVO_SQCK,1))
#define SERVO_CLOSE_LOW				(GPIO_O_SET(SERVO_CLOSE,0))
#define SERVO_CLOSE_HIGH			(GPIO_O_SET(SERVO_CLOSE,1))
#define SERVO_SPEED_SET				(GPIO_O_SET(SERVO_SPEED,1))
#define SERVO_SPEED_CLR				(GPIO_O_SET(SERVO_SPEED,0))

#define SERVO_SENSE_TEST			(GPIO_I_GET(SERVO_SENSE))
#define SERVO_ISTAT2_TEST			(GPIO_I_GET(SERVO_ISTAT2)) 
#define SERVO_CLOPSW_TEST			(GPIO_I_GET(SERVO_CLOPSW))
#define SERVO_LIMIT_TEST			(GPIO_I_GET(SERVO_LIMIT))
#define SERVO_LKFS_TEST				(GPIO_I_GET(SERVO_LKFS))

#define SERVO_QCODE_READY			((regs0->iop_data[5]&0x0c00)==0x0400)
#define SERVO_QCODE_CRCOK			(regs0->iop_data[5]&0x1000)
#define SERVO_QCODE_CLR				(regs0->iop_data[5]&=(~(0x0400)))

typedef struct
{
BYTE mm;			// minute
BYTE ss;			// second
BYTE ff;			// frame
}MSF;

typedef struct
{
UINT16 value[16];	// command,pa1,pa2,pa3
BYTE   wptr;		// fifo in
BYTE   rptr;		// fifo out
}SERVO_QUEUE;

typedef struct
{
BYTE value[16];		// command,pa1,pa2,pa3
BYTE sptr;			// fifo in
}SERVO_STACK;

unsigned int tot_cnt;//2003-7-6 kobe add for test track balance
UINT32 range,currtime,disttime,pretime;
BYTE   goto_type;
BYTE   stop_play_encounter;    // Jerry 5/22
BYTE   disc_type;
BYTE   media_type;
BYTE   servo_seeking;  //2003-3-18 kobe add according to sunplus's struct
BYTE   servo_track_done;
BYTE   sense_high;	//2003-7-2 kobe add for test
BYTE   kobe_trk_ref;	//2003-7-6 kobe add for test track balance
BYTE   Track_Adjust_nok_cnt;//2003-7-6 kobe add for test track balance
BYTE   Track_Adjust_ok_buffer;//2003-7-6 kobe add for test track balance
BYTE   cnt_trcnt;	//2003-7-6 kobe add for test track balance
BYTE   tbh_nok_1,tbh_nok_2,tbh_ok_1,tbh_ok_2,tbh_ok_3;//2003-7-6 kobe add for test track balance
BYTE   cnt_tbh_check,aux_Track_Adjust_ok_cnt;//2003-7-6 kobe add for test track balance
BYTE   feb_bf;
BYTE   inc_feb;
BYTE   rf_h_f;
BYTE   rf_l_f;
BYTE   pistat1;
BYTE   tgain;
BYTE   tbal;
BYTE   trofs;
BYTE   sd_bf;
BYTE   ok_bf;
BYTE   cntl_ok_cnt;
BYTE   cdmode_set;
BYTE   ok_tgain;
BYTE   ok_gcnt;
BYTE   fok_enable;
MSF    toc;

#define  SERVO_QCODE_BUFFER   ((BYTE *)(SDRAM_BASE_UNCACHED+regs0->iopya*1024+0x420))

typedef struct
{
UINT16  goto_timeout_timer;
UINT16  operation_timer;
UINT16  timeout_timer;
UINT16  gfs_lost_timer;
UINT16  pause_timer;  // Dennis 11/1
UINT16  recover_timer;  // Dennis 11/1
UINT16  monitor_timer;
UINT16  fok_timer;  // Ye 11/1
BYTE    temp;
BYTE    counter;
BYTE    state;
BYTE    status;
BYTE    status_1;
BYTE    command;
BYTE    display;
BYTE    operation;
BYTE    absmin;
BYTE    abssec;
BYTE    absfrm;
BYTE    late_min;  // Dennis 10/30
BYTE    late_sec;
BYTE    late_frm;
BYTE    pause_min; // Dennis 10/30
BYTE    pause_sec;
BYTE    pause_frm;
BYTE    Qcode[10];
BYTE    buf[5];
BYTE    skip_track_counter;
BYTE    temp_counter;
BYTE    focusfail_counter;
BYTE    focusok_counter;
BYTE    cdrw_disc;
int     recover_fail_counter;
}SERVO_MEMBER;

UINT32 Servo_command(BYTE command,BYTE para1,BYTE para2,BYTE para3);
UINT32 Msf2tracknum(BYTE min, BYTE sec, BYTE frame);
//UINT32 Msf2lba(BYTE min, BYTE sec, BYTE frame);//2003-4-28 kobe move it to util.h according to sunplus
UINT32 response_value(UINT32 indata);
UINT32 sqrts(UINT32 datas);

MSF Lba2msf(UINT32 value);

BYTE Servo_goto_time(BYTE mm,BYTE ss,BYTE ff);
BYTE Servo_check_skip_track(void);
BYTE Servo_check_timeout(void);
BYTE Servo_adjust_fcs(void);
BYTE Servo_readqcode(void);
BYTE Servo_focus_on(void);
BYTE Servo_read_toc(void);
BYTE Servo_success(void);
BYTE Servo_trayout(void);
BYTE Servo_recover(void);
BYTE Servo_trayin(void);
BYTE Servo_sledge(void);
BYTE Servo_istat1(void);
BYTE Servo_istat2(void);
BYTE Servo_reset(void);
BYTE Servo_sstop(void);
BYTE Servo_stop(void);
BYTE Servo_fok(void);
BYTE Servo_gfs(void);
BYTE popstate(void);

#ifdef SUPPORT_SOC
void Servo_send_data_no_latch2(UINT32 data_s ,BYTE cmd_size);
void Servo_send_data_no_latch1(UINT32 data_s ,BYTE cmd_size);
#endif
void Servo_send_data_no_latch(UINT32 data_s ,BYTE cmd_size);
void Servo_send_data_latch(UINT32 data_s ,BYTE cmd_size);
void Servo_2n_track(BYTE direct,UINT32 track_diff);
void Servo_Hxjmp(BYTE direct,UINT32 track_diff);
void Servo_goto_leadin(BYTE direct);
void Servo_mute_cddsp(BYTE flags);
void Servo_check_gfs_lost(void);
void Servo_100_track(BYTE direct);
void Servo_10_track(BYTE direct);
void Servo_1_track(BYTE direct);
void Servo_travel(BYTE direct);
void Servo_response_DSA(void);
void SERVO_delay_5_ms(void);
void Reset_parameter(void);
void pushstate(BYTE data);
void Servo_delay(BYTE d);
void Servo_monitor(void);
void servo_semioff(void);
void servo_halfoff(void);
void rf_offset_adj(void);
void rf_sens_chk(void);
void clearstate(void);
void Servo_isr(void);
void after_sch(void);
void play_set(void);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -