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

📄 servo.h

📁 Zoran V966 DVD 解码 Soc芯片的源程序
💻 H
字号:
/* ********************************************************************************
 *  Copyright (c) 2002 ZORAN Corporation, All Rights Reserved
 *  THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
 *
 *  File: $Workfile: servo.h $             
 *
 * Description:
 * ============
 * Servo API routines
 * 
 * Log:
 * ====
 * $Revision: $
 * Last Modified by $Author: $ at $Modtime: $ 
 **********************************************************************************
 * Updates:
 **********************************************************************************
 * $Log: $
 * 
 * 
 *********************************************************************************/
#include "Config.h"		/* Global Configuration - do not remove! */


#ifndef SERVO_H
#define SERVO_H


/*** Include Files ***************************************************************/
#include "Drive\Zfe\zfe.h"
#include "Drive\Zfe\Shared\Dsp\dsp.h"


/*** Defines *********************************************************************/
#define SERVO_SPINDLE_SPEED_CD_MIN		730
#define SERVO_SPINDLE_SPEED_CD_x3		810
#define	SERVO_SPINDLE_SPEED_CD_x3_5		945
#define SERVO_SPINDLE_SPEED_CD_x4		1080
#define SERVO_SPINDLE_SPEED_CD_x5		1350
#define SERVO_SPINDLE_SPEED_CD_x6		1620
#define SERVO_SPINDLE_SPEED_CD_x6_5		1755
#define SERVO_SPINDLE_SPEED_CD_MAX		1755

#define SERVO_SPINDLE_SPEED_DVD_MIN		1630
#define SERVO_SPINDLE_SPEED_DVD_x1		1630
#define SERVO_SPINDLE_SPEED_DVD_x1_1	1793
#define SERVO_SPINDLE_SPEED_DVD_x1_2	1956
#define SERVO_SPINDLE_SPEED_DVD_x1_3	2119
#define SERVO_SPINDLE_SPEED_DVD_x1_4	2282
#define SERVO_SPINDLE_SPEED_DVD_x1_5	2445
#define SERVO_SPINDLE_SPEED_DVD_x1_6	2608
#define SERVO_SPINDLE_SPEED_DVD_x1_7	2771
#define SERVO_SPINDLE_SPEED_DVD_x1_8	2934
#define SERVO_SPINDLE_SPEED_DVD_x1_9	3097
#define SERVO_SPINDLE_SPEED_DVD_x2		3260
#define SERVO_SPINDLE_SPEED_DVD_MAX		3260


/*** Typedefs ********************************************************************/
typedef enum
{
	SERVO_LASER_OFF					= 0x0000,
	SERVO_LASER_CD					= 0x0004,
	SERVO_LASER_DVD					= 0x0008,
	SERVO_LASER_MASK				= 0x000C,
	SERVO_TRACKING_LOOP_SHIFT		= 2,

	SERVO_REQUESTED_STATE_MASK		= 0x03f0,
	SERVO_REQUESTED_STATE_SHIFT		= 4,

	SERVO_STATE_MASK				= (int)0xfc00,
	SERVO_STATE_SHIFT				= 10
} SERVO_STATUS_BITS;


typedef enum
{
	SERVO_STATE_START_ROTATION		= 0,
	SERVO_STATE_STOP_ROTATION		= 1,
	SERVO_STATE_FOCUS_SEARCH		= 2,
	SERVO_STATE_TRACK_PULLIN		= 3,
	SERVO_STATE_FOCUSED_LEAP		= 4,
	SERVO_STATE_HOMING				= 5,
	SERVO_STATE_STOP				= 6,
	SERVO_STATE_FOCUSED				= 7,
	SERVO_STATE_TRACKING			= 8,
	SERVO_STATE_READ				= 9,
	SERVO_STATE_CL_SHORT_JUMP		= 10,
	SERVO_STATE_LONG_JUMP			= 11,
	SERVO_STATE_NBCA_SEEK			= 12,
	SERVO_STATE_LAYER_JUMP			= 13,
	SERVO_STATE_START				= 14,
	SERVO_STATE_SLED_LEAP			= 15,
	SERVO_STATE_OL_SHORT_JUMP		= 16,
	SERVO_STATE_KEEP_HEAD           = 17,
	SERVO_STATE_NUMBER_OF_STATES	= 18
} SERVO_STATE_ET;


typedef enum
{
	SERVO_ERR_NONE					= 0,
	SERVO_ERR_FOCUS_SEARCH_FAIL		= (int)0xC001,
	SERVO_ERR_FOCUS_FAIL			= (int)0xC002,
	SERVO_ERR_JMP_FAIL				= (int)0xC003,
	SERVO_ERR_RF_SEARCH_FAILED		= (int)0xC004,
	SERVO_ERR_RF_SEARCH_TIMOUT 		= (int)0xC005,
	SERVO_ERR_TRACKING_FAIL			= 6,
	SERVO_ERR_SLED_FAIL				= 7,
	SERVO_ERR_SPINDLE_FAIL			= 8,
	SERVO_ERR_STOP_ROTATE_FAIL		= 9,
	SERVO_ERR_START_ROTATE_FAIL		= 10,
	SERVO_ERR_LEAP_FAIL				= 11,
	SERVO_ERR_JUMP_FAIL				= 12,
	SERVO_ERR_REQUEST_FAIL			= 13
} SERVO_ERROR_ET;


typedef enum
{
    SERVO_LAYER_0_E = 0,
    SERVO_LAYER_1_E = 1
} SERVO_LAYER_ET;


typedef enum
{
	SERVO_DEFAULT_MICROCODE_E,
	SERVO_FTA_MICROCODE_E
} SERVO_MICROCODE_TYPE_ET;


typedef enum
{
	SERVO_BOOT_POWER_ON_STATE_E,
	SERVO_BOOT_POWER_OFF_STATE_E,
	SERVO_BOOT_PLAYBACK_STATE_E
} SERVO_BOOT_STATE_ET;


/* Units of physical media tracks */
typedef INT32 SERVO_TRACKS_T;


/* Callback */
typedef void (* SERVO_CALLBACK_T)(DSP_CPU_CMD msg,
								  UINT16 param1,
								  UINT16 param2);


/* The nominal speed value is measured in RPM - rotations per minute */
typedef UINT16 SERVO_SPINDLE_SPEED_T;


typedef struct
{
	BOOL dma_abort;
	BOOL dma_start;
} SERVO_DMA_MGR_ST;


/*** Extern **********************************************************************/


/*** Public Functions *************************************************************/

/* Initialization */
ZFE_ERR_CODE SERVO_Boot(SERVO_MICROCODE_TYPE_ET mic_type,
						SERVO_CALLBACK_T cb, 
						SERVO_BOOT_STATE_ET boot_state);

ZFE_ERR_CODE SERVO_RegisterCb(SERVO_CALLBACK_T cb);

ZFE_ERR_CODE SERVO_GetRegisteredCb(SERVO_CALLBACK_T * cb);

ZFE_ERR_CODE SERVO_DetectMedia(void);

ZFE_ERR_CODE SERVO_StartCalibration(void);

ZFE_ERR_CODE SERVO_StartFeCalibration(void);

/* Spindle related commands */
ZFE_ERR_CODE SERVO_SetSpeed(SERVO_SPINDLE_SPEED_T speed);

ZFE_ERR_CODE SERVO_Jump(SERVO_TRACKS_T num_tracks);

ZFE_ERR_CODE SERVO_KeepHead(SERVO_TRACKS_T num_tracks);

#ifdef DRV_REPORT_JUMP_RESULTS_TO_DSP
ZFE_ERR_CODE SERVO_SendJumpReport(SERVO_TRACKS_T requested_tracks_num, SERVO_TRACKS_T actual_tracks_num);
#endif

ZFE_ERR_CODE SERVO_Play(void);

ZFE_ERR_CODE SERVO_PickupJumpToStart(SERVO_TRACKS_T tracks);

ZFE_ERR_CODE SERVO_SledLeap(SERVO_TRACKS_T num_tracks);

ZFE_ERR_CODE SERVO_SpinUp(void);

ZFE_ERR_CODE SERVO_SpinDown(void);

ZFE_ERR_CODE SERVO_LaserOff(void);

/* DVD Layers Feature */
ZFE_ERR_CODE SERVO_SetLayer(SERVO_LAYER_ET number);

/* Servo management */
ZFE_ERR_CODE SERVO_SetMediaType(UINT16 media_type);

/* Power Save Feature */
ZFE_ERR_CODE SERVO_Powersave(void);

/* Servo overlay sections downloading */
ZFE_ERR_CODE SERVO_DownloadSection(SERVO_MICROCODE_TYPE_ET mic_type, UINT16 section);

#ifdef DVD_VR_SUPPORT
ZFE_ERR_CODE SERVO_StartNbcaSearch(void);
#endif

#ifdef FTA_SUPPORT
ZFE_ERR_CODE SERVO_AddPid(PID_INFO_ST * pid_info_p);

ZFE_ERR_CODE SERVO_PlaySections(void);

ZFE_ERR_CODE SERVO_StopFtaPlayback(void);
#endif

/* Debug */
#if (defined(_DEBUG) && defined(DEBUG_FE_TRACE))
ZFE_ERR_CODE SERVO_DebugDownloadSection(DSP_CPU_CMD op, UINT8 section);

void SERVO_PrintStatus(void);
#endif


#endif

⌨️ 快捷键说明

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