?? servo.h
字號:
/**************************************************************************
(C)Copyright Cheertek Inc. 2002-2003,
D300, all right reserved
Product : WinDVD Firmware
Date : 1999.8.26
Purpose : Provide all SERVO information
Sources :
****************************************************************************/
#ifndef __SERVO_H__
#define __SERVO_H__
//MICKYATA
#ifdef __cplusplus
extern "C" {
#endif
//LJY1.22, LJY1.11b, for sector control(CDDA) and OSD time display(CDDA & VCD)
#define SECTOR_512 512 //2048/4=512DW
#define SECTOR_588 588 //2352/4=588DW
#define SECTOR_581 581 //2324/4=581DW, LJY1.24a, for VCD/SVCD
#define SECTOR_607 607 //(2352+4*19)/5=607DW, For non-CDG RISC code, "55805580" will be inserted per 128bytes.
#define SECTOR_784 784 //((24B data+8B subcode)*98)/4=784DW, RISC won't insert "55805580"
//LJY1.23, share same define for CDG & pure CDDA
#ifdef SUPPORT_CDDA_WITH_SUBCODE
#define SECTOR_CDDA SECTOR_784
#else
#define SECTOR_CDDA SECTOR_588 //55805580+2352B for pure CDDA
#endif
// Global Variables
extern BYTE __bCurrentIF; // using ATAPI_IF
extern BYTE __bServoAutoCtrl;
//----------------------------------------------
// SERVO definition
//----------------------------------------------
#define DISC_TYPE_NONE 0
#define DISC_TYPE_DVD 1
#define DISC_TYPE_DVD_ROM (0x00|DISC_TYPE_DVD)
#define DISC_TYPE_DVD_RAM (0x10|DISC_TYPE_DVD)
#define DISC_TYPE_DVD_R (0x20|DISC_TYPE_DVD)
#define DISC_TYPE_DVD_RW (0x30|DISC_TYPE_DVD)
#define DISC_TYPE_DVD_PLUS_RW (0x90|DISC_TYPE_DVD)
#define DISC_TYPE_VCD 0x14 // 2
#define DISC_TYPE_CDI 0x0A // 3
#define DISC_TYPE_CDDA 0x04
#define DISC_TYPE_UNKNOWN 0xff
#define SERVO_MODE_CDROM 0x08
#ifdef CDDA_WAITSERVO
#define SERVO_MODE_AUDIO 0x10
#else
#define SERVO_MODE_AUDIO 0x00
#endif
// *** MULTI_DISC; Compatible with multiple-disc
#define SERVO_HAVEDISC 0x01
#define SERVO_NODISC 0x00
#define SERVO_WAITSTABLE_TIMEOUT 0x02 //LJY1.05, it means servo cannot focus-on for power-on initial.
#define SERVO_USER_ABORT 0x03 //LJY1.05-2
#define SERVO_LOADDISC_FAILED 0x04 //LJY1.25, Support opentray when servo fails to close tray.
#define SERVO_COMMAND_FAIL 0xff
// Error Status
#define ERR_RESPONSE 0xff
#define ERR_NOFOUND 0
#define ERR_SERVO_READ 1
#define ERR_SERVO_JUMP 2
#define ERR_SERVO_TRAY 3
#define ERR_SERVO_SET 4
#define ERR_SERVO_INFO 5
#define SERVO_END_TIME 0x7fffffffL
// TCC037, for control threshold
#define SERVO_THRESHOLD_DISABLE 0x01
#define SERVO_THRESHOLD_ENABLE 0x02
#define SERVO_THRESHOLD_VIDEO 0x03
#define SERVO_THRESHOLD_AUDIO 0x04
/////////////////////////////////
//LJY1.25, Support opentray when servo fails to close tray.
#define TRAY_OPENED 0x00
#define TRAY_OPENING 0x04
#define TRAY_CLOSED 0x08
#define TRAY_CLOSING 0x0C
////////////////////////////////////////////
// TCC172, For returning error status of the atapi command
#define SERVO_ERROR_NONE 0 // No Error
#define SERVO_ERROR_CMD 1 // Command Error
#define SERVO_ERROR_NOTREADY 2 // Device not ready(2/xx/xx)
#define SERVO_ERROR_NODISC 3 // No Disc in tray(2/3a/xx)
#define SERVO_ERROR_LOADDISC 4 // Loading disc (2/4/xx)
#define SERVO_ERROR_AUTH 5 // Authentication Error
#define SERVO_ERROR_INCOMPAT 6 // Imcompatible disc type. Usually incorrect command
#define SERVO_ERROR_TIMEOUT 7 // Timout Error. (atapi timeout)
#define SERVO_ERROR_READ 8 // Read Command Error
#define SERVO_ERROR_DMA 9 // DMA Error (DMA timeout w/o buffer full)
#define SERVO_ERROR_DEAD 10 // Dead Error (DMA timeout+buffer full)
#define SERVO_ERROR_USERABORT 11 // Means the command isn't issued/finished by IR key abort
#define SERVO_ERROR_UNKNOWN 12 // Unknow Error Type
////////////////////////////////////////////
// TCC155, default a/v threshold
#define SERVO_DEFAULT_VIDEO_THRESHOLD 0xa000
//Kevin0.90, modify
//Currently, audio buffer size=8KDW and audio buffer underflow threshold=5KDW. The 1KHz-AC3 break noise may be due to the RISC performance issue for that RISC has to frequently deal with the input bitstream when audio buffer remainder is less than the underflow threshold.
//=> Temp. sloution: use a small audio underflow threshold, say 1.25KDW. The setting seems OK for other DVD tiltes (AC3/DTS/LPCM). Integrate into DVD_090.
//#define SERVO_DEFAULT_AUDIO_THRESHOLD 0x1400/4
// Brian0.90, before this issue is cleared, use the original value.
#define SERVO_DEFAULT_AUDIO_THRESHOLD 0x1400
////////////////////////////////////////////
// TCC170, power mode for atapi
// wyc.171-3, modify the parameter for SERVO_PowerMode
#define SERVO_POWER_STOP 0x0
#define SERVO_POWER_IDLE 0x20
#define SERVO_POWER_STANDBY 0x30
#define SERVO_POWER_SLEEP 0x50
#define SERVO_POWER_START 0x1
////////////////////////////////////////////
// wyc.170-2, add the define for CDDA audio de-emphasis
#define SERVO_CDDA_NONE 0
#define SERVO_CDDA_DEEMPHASIS 1
#define SERVO_CDDA_NON_DEEMPHASIS 2
////////////////////////////////////////////
//LJY0.95, wait stable mode
#define WAITSTABLE_SHOW_INFO 1
#define WAITSTABLE_NOT_SHOW_INFO 2
#define WAITSTABLE_SLEDGE 3
#define SERVO_STATE_SLEDGE 4 //servo state of sledge-in is 4
#define WAITSTABLE_SLEDGE_SHOW_BAR 5 //LJY1.07, show loading status bar
//LJY2.37, port KCHong's code
#ifdef SUPPORT_PORTABLE_PROJECT
#define TOP_OPENED 0
#define TOP_CLOSED 1
#define TOP_OPENING 2
#define TOP_CLOSING 3
#define TOP_UNSTABLE 4
#endif // #ifdef SUPPORT_PORTABLE_DVD_TOP_LOADING
//LJY1.10
#define AUDIO_DATA 0x00
#define CONTINUOUS_DATA 0x01
#define INTERPOLATION_DISABLE 0x02 //bit1, for interpolation control
#define SUBCHANNEL_ENABLE 0x04 //bit2, for subcode control
// Structure Definition
// wyc.172r, define a new structure for scan title key usage and the purpose is to reduce one array.
typedef struct
{
DWORD TitKey[2]; // Record the frame of the track start address
} SCAN_TITLE;
typedef struct
{
BYTE Trk; // Record the track number
BYTE Ctl; // Record the attribute of the track
BYTE Min; // Record the minute of the track start address
BYTE Sec; // Record the second of the track start address
BYTE Frm; // Record the frame of the track start address
} TRKINFO;
typedef struct
{
BYTE bFirstTrack; // Record the first track of the session
BYTE bLastTrack; // Record the last track of the session
DWORD dwLeadOutPos; // Record the leadout position of the session
} SESSIONINFO;
typedef struct {
BYTE bADRControl;
BYTE bTrackNum;
BYTE bPoint;
BYTE bRelMin;
BYTE bRelSec;
BYTE bRelFrame;
BYTE bReserved;
BYTE bAbsMin;
BYTE bAbsSec;
BYTE bAbsFrame;
} Q_CODE;
typedef struct tagCOPYINFO
{
BYTE bCPS_Type ; // Store the Copy Protect Type of the dvd title
BYTE bRegionInfo ; // Stores the Region Code Info of the dvd title
BYTE bCGMS ; // Store the Copy Generation Management System
} COPYINFO ;
#define SERVO_CGMS_NO_RESTRICTION 0
#define SERVO_CGMS_RESERVED 1
#define SERVO_CGMS_ONE_COPY 2
#define SERVO_CGMS_NO_COPY 3
#define SERVO_CGMS_NONE 4
BIT SERVO_Reset(BYTE bShowBar); //LJY1.07, pass parameter for status bar display
BIT SERVO_Init(void); // initial servo status when change title
BIT SERVO_OpenTray( void );
BIT SERVO_CloseTray( void );
BYTE SERVO_CheckTrayStatus(void); //LJY1.25
//BYTE CDROM_GetDiscStatus( void );
BYTE SERVO_GetDiscStatus(PBYTE pStatus);
//BYTE CDROM_ReadTOC( BYTE );
BIT SERVO_ReadTOC( BYTE );
BIT SERVO_Stop(void);
BIT SERVO_Pause(void);
BIT SERVO_Abort(void) ;
BIT SERVO_PowerMode (BYTE bMode) ;
// wyc.170
BYTE SERVO_AudioDeemphasis(WORD wPlayItem);
//BIT CDROM_GoTime( DWORD );
BIT SERVO_ReadSectors( DWORD dwStartPos, DWORD dwEndPos );
BIT SERVO_SetSectors ( DWORD dwStartPos, DWORD dwEndPos ); // ** TCH0.27;
BOOL SERVO_EnableRunning ( BIT bGo ); // ** DVD-TCH0.25;
//BIT CDROM_GetTime( DWORD *);
BIT SERVO_GetCurrentPos( PDWORD pCurrentPos );
//DWORD SERVO_JumpGroove(BYTE, DWORD);
DWORD SERVO_JumpGroove( BYTE bForward, DWORD dwCurrentPos );
BIT SERVO_GetDiscInfo( PBYTE pMinTrack, PBYTE pMaxTrack, PDWORD pMaxPos );
//BIT CDROM_GetTrkInfo( BYTE, BYTE *, DWORD *);
BIT SERVO_GetTrackInfo( BYTE bTrackNum, PBYTE pTrackCtl, PDWORD pStartPos );
BIT SERVO_GetTrackEnd (BYTE bTrackNum, PDWORD pLength); // ** TCH1.61a;
BIT SERVO_GetDiscLength(PDWORD pLength);
BYTE SERVO_GetSpeed(void);
BYTE SERVO_GetStatus(void);
// wyc.160a-XQ, add return parameter in SERVO_ResetRecover
BYTE SERVO_ResetRecover (BYTE bNeedStable);
// wyc.171-2
BYTE SERVO_Seek (DWORD dwSeekLBA, BYTE bWaitBusy);
BIT SERVO_Monitor( void ); // WWH_CD7
WORD SERVO_GetDiscType(void); // WWH_CD7
//For DVD
BIT SERVO_CheckDiscEnding(void);
BIT SERVO_ReadDiscKey(void);
BIT SERVO_SetTitleKey(BYTE bStore); // Added by Chern Shyh-Chain, 08-30-2001
//BIT SERVO_ReadTitleKey(DWORD dwSectorNumber);
BIT SERVO_ReadTitleKey(DWORD dwSectorNumber, BYTE bStore); // Replaced by Chern Shyh-Chain, 08-30-2001
BIT SERVO_ReadCopyInfo(void);
void SERVO_AdjustThreshold (BYTE bType, DWORD dwLevel) ;
BYTE SERVO_CheckTrayClosed ();
//LJY275b, servo debug info
#ifdef SUPPORT_CDIF
#define GET_FW_VERSION 0x00
#define READ_420_REG 0x40
#define WRITE_420_REG 0x41
#define READ_3721_REG 0x42
#define WRITE_3721_REG 0x43
#define DEBUG_PIPO 0x44
#define GET_PIPO 0x45
#define SERVO_CMD_OFFSET 0x80
BIT SERVO_GetServoDebugInfo (BYTE bItem, WORD wAddr, WORD wData);
#endif // SUPPORT_CDIF
// Micky2.81_host, support host I/F
#ifdef INPUT_PATH_HOSTIF
void SERVO_CDROMRead(BYTE NOofSector);
void SERVO_Exit();
#endif
BIT _CSS_SentDiscKey(void); // LLY.103e-XQ and LLY.160a-1, in SER_ATA.C module
#ifdef __cplusplus
}
#endif
#endif // __SERVO_H__
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -