📄 sa9226.h
字号:
#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 + -