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 + -
显示快捷键?