aml_dev.h
来自「AMLOGIC DPF source code」· C头文件 代码 · 共 305 行
H
305 行
//$6 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define _DEBUG_BLOCK
#include <Drivers/include/fe_reg.h>
// define OLD_MIDDLE_LEVEL
#include <listop.h>
#ifndef AVOS
#define PRECISE_CUR_TIME (*((volatile unsigned *) 0x100053c))
#endif
#define DISCTYPE_DVD 0
#define DISCTYPE_CD 1
#define DISCTYPE_NONE 2
#define WITH_VOLATILE
#ifdef WITH_VOLATILE
#define _VO volatile
#else
#define _VO
#endif
#ifdef AVOS
// =====================================================================================================================
// bit0 used for stop_ok_flag bit1 used for hdmi mutex flag
// =====================================================================================================================
#define MUTEX_REG_ENABLE(num) { SET_FE_REG_MASK(MUTEX_REG,(0x1<<num)); }
#define MUTEX_REG_DISABLE(num) { CLEAR_FE_REG_MASK(MUTEX_REG,(0x1<<num)); }
#define GET_MUTEX_REG_VALUE(num) ((READ_FE_REG(MUTEX_REG)&(0x1<<num))?1:0)
#endif
typedef struct
{
struct list_head list; // 8 bytes
struct list_head free_list;
unsigned int sector;
unsigned int max;
unsigned int errorflag;
unsigned short header_offset;
unsigned short mode;
unsigned char offset;
unsigned char info0; // 0: normal, 1: search fail, 2: none serious error for cdda
unsigned char cd_read_type;
unsigned char type;
unsigned char lock;
unsigned char reserved2;
unsigned bakupdata;
_VO unsigned char *data;
} THOM_BUF_HDR;
typedef struct
{
struct
{
unsigned char THOMSON_PLAY_MODE;
unsigned char THOMSON_SWAP_DESC;
unsigned char THOMSON_ACCESS_TRIAL_COUNT;
unsigned char THOMSON_SW_VERSION[4];
} Thomson_Info;
unsigned char blocktype; // 0: dvdrom, 1:dvdrw-, 2: dvdrw+, 3:hd
unsigned char status; // COMMAND_SUCCESS, COMMAND_FAIL,COMMAND_BUSY
unsigned char packet_cmd[12]; // save atapi command packet
unsigned cmd_timer; // for command timeout
unsigned short host_read_point;
unsigned char block_state;
unsigned char substate;
unsigned char process_state; // depend on each process
unsigned handle;
unsigned thomhandle;
unsigned src_chk_handle;
unsigned pausetimer;
unsigned char disktype; // 0:DVD, 1:CD
unsigned char chk_buf_state;
unsigned short sector_unit;
unsigned track_buffer_start_address;
unsigned track_buffer_end_address;
unsigned short buf_map_size0;
unsigned short buf_map_size;
unsigned short buf_map_top;
unsigned char max_trytimes;
unsigned char pre_read_range;
THOM_BUF_HDR *pre_thombuf0;
THOM_BUF_HDR *pre_thombuf1;
} THOMSONDEV;
#define SUNIT (Block.sector_unit)
extern THOMSONDEV Block;
// define THOM_TASK_STACK_SIZE 1024*24
#define THOM_TASK_STACK_SIZE 10240
#define SRC_TASK_STACK_SIZE 10240
#define THOM_TASK_INTERNAL_CMD_BASE MAX_THOM_STATE
#define THOM_TASK_CMD_BASE THOM_TASK_INTERNAL_CMD_BASE
#define THOM_TASK_CMD_READ THOM_TASK_CMD_BASE + 1
#define THOM_TASK_CMD_STOP THOM_TASK_CMD_BASE + 2
#define THOM_TASK_CMD_RESET THOM_TASK_CMD_BASE + 3
#define THOM_TASK_CMD_INIT THOM_TASK_CMD_BASE + 4
#define THOM_TASK_CMD_RESEEK THOM_TASK_CMD_BASE + 5
#define THOM_TASK_CMD_PAUSE THOM_TASK_CMD_BASE + 6
#define THOM_TASK_CMD_GETLOC THOM_TASK_CMD_BASE + 7
#define THOM_TASK_CMD_STATUS THOM_TASK_CMD_BASE + 8
#define THOM_TASK_CMD_DATAREADY THOM_TASK_CMD_BASE + 9
#define THOM_TASK_CMD_GMOD THOM_TASK_CMD_BASE + 10
#define THOM_TASK_CMD_CDREAD THOM_TASK_CMD_BASE + 11
#define THOM_TASK_CMD_PMOD THOM_TASK_CMD_BASE + 12
#define THOM_TASK_CMD_UPDATEFIRM THOM_TASK_CMD_BASE + 13
#define THOM_TASK_CMD_OPENCLOSE THOM_TASK_CMD_BASE + 14
#define THOM_SUBSTA_IDLE 0
#define THOM_SUBSTA_BUSY 1
#define THOM_SUBSTA_RESETING 2
#define THOM_BUF_HDR_SIZE 20
#define USER_DATA_OFFSET 12
typedef unsigned int MEMBER;
typedef struct
{
int out;
int in;
int num;
int size;
MEMBER *members;
} MEMBER_Q;
#define SC_STOP 0
#define SC_CHECK 1
#define SC_NOCHK_RD 2
#define SC_DOOR_OPENED 3
#define SC_BETTER_SEARCH 4
#define SC_WAITBUFFER 5
#define NOT_READ 0
#define RANDOM_READ 1
#define REGULAR_READ 2
// define SEACH_TRY_COUNT 10
#define SRC_CHK_CMD_SEARCH 1
#define SRC_CHK_CMD_STOPREAD 2
#define SRC_CHK_CMD_NOCHK_RD 3
#define SRC_CHK_CMD_SCH_FAIL 4
#define SRC_CHK_CMD_CHK_FAIL 5
#define SRC_CHK_CMD_INIT 6
#define SRC_CHK_CMD_RANDOMREAD 7
#define SRC_CHK_CMD_REGULARREAD 8
typedef struct
{
MINIMSG MsgHdr; // message header
unsigned char cmd_type;
unsigned char reserved;
unsigned char device_id;
unsigned char need_ind_type;
unsigned int len;
unsigned block_adr;
unsigned block_adr2;
unsigned char mode;
unsigned char cd_read_type;
// for data
} SCRCHK_CMDHDR;
typedef struct
{
unsigned session_total_sector;
MSF session_start;
} SESSION;
// for toc reading max try count
#define MAX_TRY_COUNT 3
// define SEEK_TIME_LIMIT 100
#define TOC_SEEK_TIME_OUT 4000
#define DEBUG_PRINT_USER_CMD 0x1
#define DEBUG_SEARCH_RETRY 0x2
#define DEBUG_PRINT_SERVO_CMD 0x4
#define DEBUG_SRC_CHK_STATE 0x8
#define DEBUG_CDTOC 0x10
#define DEBUG_BUFFER 0x20
#define DEBUG_COLLECT_SUM 0x40
#define DEBUG_COUNT_READ_SPEED 0x80
#define DEBUG_SUBQ 0x100
#define DEBUG_MONITOR_CDSTART DEBUG_SEARCH_RETRY
#define DEBUG_DESCRAMBLE DEBUG_SEARCH_RETRY
#ifndef __ROM_
#define DEBUG_TRACE_BUF 0x1000
#define DEBUG_CDDA_CONCEALMENT_DUMP 0x2000
#define DEBUG_BLOCKMOV_TYPE23 0x4000
#define DEBUG_FORCE_READCMD 0x8000
#define DEBUG_FORCE_READCMD1 0x10000
#define DEBUG_MONITOR_CDDA_SEAMLESS 0x20000
#endif
#define DOWITH_SCH_BUG
#define CHECKING_BEGIN 0
#define CHECKING_MECHANISM 1
#define CHECKING_TESTUNIT 2
#define CHECKING_READINFO 3
#define CHECKING_READINFO1 4
#define THOMSON_STOPED_STATUS 0x1
#define THOMSON_STOP_STATUS THOMSON_STOPED_STATUS
#define THOMSON_STOPING_STATUS THOMSON_STOPED_STATUS
#define THOMSON_PLAYING_STATUS 0x2
#define THOMSON_PAUSE_STATUS 0x3
#define THOMSON_DRAWER_OPEN_STATUS 0x4
#define THOMSON_DRAWER_MOVE_STATUS 0x5
#define MU (75 * 60)
#define SU 75
#define CDBASEADR SU * 2
extern unsigned char THOMSON_STAUTS1;
extern unsigned char THOMSON_STAUTS2;
extern unsigned char THOMSON_DATA1;
extern unsigned char THOMSON_DATA2;
extern unsigned char THOMSON_DATA3;
extern unsigned char THOMSON_DATA4;
extern unsigned char layer2;
extern unsigned char isptp;
extern unsigned char READ_STATUS_DATA(void);
extern unsigned char TVM_GLOC(void);
extern unsigned char TVM_GMOD(void);
extern unsigned char GetSWVersion(void);
extern unsigned char TVM_NDISC(void);
extern unsigned char TVM_SDISC(void);
extern unsigned char TVM_STOP(void);
extern unsigned char TVM_PAUSE(unsigned sector);
extern unsigned char TVM_PLSN(unsigned sector);
extern unsigned char TVM_PLMSF(unsigned sector);
extern unsigned char TVM_JUMPLAYER(void);
extern unsigned char TVM_FORCE_DL(void);
extern unsigned char TVM_PMOD(unsigned char content);
extern unsigned char TVM_OpenClose(unsigned char dir);
extern unsigned char TVM_TST_CMD(void);
extern void TVM_HARDWARE_RESET(void);
extern unsigned char TVM_UPDATE_FIRMWARE_CMD(void);
extern unsigned char TVM_ECCRESET(void);
extern unsigned char TVM_WRREGL(unsigned char adr0, unsigned char adr1, unsigned char val);
extern unsigned get_phyadr(unsigned uniadr);
extern unsigned char TVM_JUMPTRK(unsigned trks);
extern unsigned char TVM_FAST_PLSN(unsigned sector, unsigned fastseek_src_adr);
extern unsigned char TVM_STOP_NO_SLDMV(void);
extern unsigned char TVM_MRCR2SET(void);
extern unsigned char TVM_CHECK_CALIBRAION(void);
#define ADR_OFF 0
#if ((defined BLOCK_THOM2) || (defined BLOCK_THOM3))
#define ADR_OFF_1 0x20
#define ADR_OFF_2 0x10
#else
#define ADR_OFF_1 0
#define ADR_OFF_2 0
#endif
#ifdef AVOS
extern TOC DiscInfor;
#endif
unsigned char Block_Iserror(unsigned dbuf);
_Inline unsigned Block_Adr(unsigned dbuf, unsigned short headoffset);
extern unsigned short gheader_offset;
extern unsigned char board_index;
extern unsigned char board_type_count;
#define BOARD_TYPE_NUM 2
// define THOM_507
#define SMALL_BOARD
#define BOARD_3
void amlservo_pause(unsigned sector, unsigned char disktype);
void aml_pre_seek(unsigned sector);
extern unsigned aml_pre_seek_flag;
extern unsigned char IsTrayOpen(void);
extern unsigned char IsTrayClose(void);
extern unsigned char IsTrayOpening(void);
extern unsigned char IsTrayClosing(void);
extern void aml_servo_init(void);
extern unsigned char next_cmd_type(void);
extern int Servo_printf(const char *fmt, ...);
extern int Block_printf(const char *fmt, ...);
extern int Block_printf_none(const char *fmt, ...);
extern int Block_Print_Flag;
extern unsigned char cd_read_type;
extern unsigned short gs0s1_offset;
extern int address_diff;
unsigned short qch_crc_core(unsigned char *dbuf);
unsigned char GetQSubCode(unsigned char *dqsubcode, unsigned adr);
unsigned char GetQSubCode_Ext(unsigned char *dqsubcode, unsigned src, unsigned nextsrc, unsigned headoffset);
unsigned char Block_Isadrerror(unsigned dbuf, unsigned headoffset);
unsigned Block_Adr(unsigned dbuf, unsigned short headoffset);
void readdata(unsigned);
extern void SetPlayConfig(unsigned char, unsigned char);
extern void MonitorErrorRate(void);
void free_correct_data_buf(void);
void empty_thombuf(void);
extern void SetRetryConfig(unsigned char abex_scratch_flag, unsigned retry_count);
unsigned numoftable(struct list_head *head);
extern unsigned char Servo_Leadin_Seek_Flag(void);
extern unsigned short session;
extern unsigned char session_check_track1_type_stage;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?