ossupport.h

来自「AMLOGIC DPF source code」· C头文件 代码 · 共 187 行

H
187
字号
/*******************************************************************
 * 
 *  Copyright C 2005 by Amlogic, Inc. All Rights Reserved.
 *
 *  Description: 
 *
 *  Author: Amlogic Software
 *  Created: Thu Nov 10 23:57:52 2005
 *
 *******************************************************************/
#define DVDROM

#ifdef MINIOS
#define gprintf printf
#else
/*for AVOS*/
#define gprintf printf
#endif

#ifndef __inline__
#define __inline__ _Inline
#endif

typedef struct _MINIMSG
{
    struct _MINIMSG * pNext;       
    unsigned int     STask;       /* source task  */
}MINIMSG;



typedef struct
{
	unsigned BaseAddr;
	unsigned xferCount      :22;
	unsigned Dst            :1;
	unsigned                :1;
	unsigned DmaMode        :3;
	unsigned Dir            :1;
	unsigned Csel           :1;
	unsigned Endian         :2;
	unsigned Eot            :1;
} IDEDMA_DESCRIPTOR;

typedef  struct
{
	unsigned char abs_Min;
	unsigned char abs_Sec;
	unsigned char abs_Frame;
	unsigned char msf_Min;
	unsigned char msf_Sec;
	unsigned char msf_Frame;
	/* for DVD seek used */
	unsigned char SeekType;
	unsigned char StartAddrH;
	unsigned char StartAddrM;
	unsigned char StartAddrL;
	unsigned char StartCountH;
	unsigned char StartCountM;
	unsigned char StartCountL;
	unsigned char NextAddrH;
	unsigned char NextAddrM;
	unsigned char NextAddrL;
	unsigned char NextCountH;
	unsigned char NextCountM;
	unsigned char NextCountL;
	unsigned char Dest;  


	unsigned char Start_Min; // for VCD
	unsigned char Start_Sec;
	unsigned char Start_Frame;
	unsigned char End_Min;
	unsigned char End_Sec;
	unsigned char End_Frame;
	unsigned char Useless1;
	unsigned char Useless2;
	
	unsigned StartAddr; // for DVD
	unsigned NextStartAddr;
	unsigned StartCount;
	unsigned NextStartCount;

} SEEKPARAM;

typedef struct
{
	unsigned char SenseKey;
	unsigned char ASC;
	unsigned char ASCQ;
}SENSE;

typedef struct
{
	SENSE               sense;
	SEEKPARAM           seek;
	unsigned char		packet_cmd[12];     /* save atapi command packet */
	unsigned char		status;
	unsigned char		half_wait;
	unsigned char		door_status;
	unsigned char		AllData_Done; // used in read(12) command
	unsigned char command_time; 
	unsigned short	host_read_point;
	unsigned current_lba;
	unsigned current_lba_num;
	unsigned char current_dest;
	unsigned char COMMAND_FAIL_CNT;
	char VOBU_play_status;
	unsigned VOBU_SA;
	unsigned VOBU_EA;
	unsigned CELL_EA;
}ATAPIPARAM;

#define NODISC		BLOCK_DISCTYPE_NULL
#define DVDDISC		BLOCK_DISCTYPE_DVD
#define CDDA		BLOCK_DISCTYPE_CDDA
#define CDROM		BLOCK_DISCTYPE_CDROM
#define VCD20		BLOCK_DISCTYPE_VCD

#define MAX_SET_NUMBER 8
typedef struct track_buf_set
{
	struct track_buf_set* next;
	unsigned start;
	unsigned size;
}track_buf_set;
extern unsigned cur_set_index;
extern track_buf_set* track_buf_set_headers[MAX_SET_NUMBER];

extern int IDE_DMA_COUNT;
extern IDEDMA_DESCRIPTOR ide_descriptor[512];
///////////////////////////////////
//os support
#define CLI     OS_ENTER_CRITICAL();
#define CLI2     OS_ENTER_CRITICAL();
#define STI OS_EXIT_CRITICAL();
//#define CLI _ASM("FLAG 4");
//#define STI _ASM("FLAG 6");
//#define CLI2 _ASM("FLAG 0");

#define SCH_OK_EVENT 0

#define Mini_Sleep(time) AVTimeDly(time);
#define  timer_jiffies (AVTimeGet())

void * Mini_AllocMsg();
int Mini_DeallocMsg(void * p);
int Mini_printf(const char* fmt, ...);
unsigned int Mini_CreatTask(void (*routine)(void*), unsigned char pri, unsigned char* stack_start,unsigned int stack_size);
unsigned char Mini_SendMessage(MINIMSG * pRtkeMsg, unsigned int DTask);
unsigned char Mini_SendMessage2(MINIMSG * pRtkeMsg, unsigned int DTask,unsigned int STask);
unsigned char Mini_PushMessage(MINIMSG * pRtkeMsg, unsigned int DTask);
MINIMSG*  Mini_PopMessage();
MINIMSG*  Mini_GetMessage() ;
void Mini_EmptyMessage(unsigned int handle) ;
MINIMSG*  Mini_WaitMessage() ;
unsigned char  Mini_SetEvent(unsigned char event) ;
unsigned char  Mini_WaitEvent(unsigned char event) ;


//other functions
unsigned int Block_Stop();
//static unsigned send_descramble_msg(unsigned char state);
//static unsigned send_ind_msg1(unsigned char state, unsigned target,unsigned data);

unsigned char READ_PIO_8(unsigned addr);
void Start_IDE_Dma_(unsigned sectornum,unsigned dest,unsigned char endian);
void WRITE_PIO_8(unsigned addr, unsigned char data);
unsigned char DVDROM_StartCmd_();
unsigned char IssueATAPICommand(unsigned char dmamode);
unsigned char DVDROM_Read_12_i(unsigned lba, unsigned lba_num, unsigned  dest,unsigned char endian);
unsigned DVDROM_Read_CDDA_MSF_(unsigned short Pmin,unsigned short Psec,unsigned short Pframe,unsigned short len,unsigned dest,unsigned char endian);
unsigned char DVDROM_Read_CD_MSF_(unsigned short Pmin,unsigned short Psec,unsigned short Pframe, unsigned char sector_num, unsigned dest,unsigned dest_ext ,unsigned mode);
void Process_ATAPIInt();
unsigned char DVDROM_MechanismStatus_(void);
unsigned char DVDStopCmd(unsigned type);
unsigned char Init_ATAPI_(int i);
unsigned char DVDROM_CloseCmd_(void);
unsigned char DVDROM_OpenCmd_(void);
unsigned char DVDROM_INQUIRY_Cmd(void);
unsigned char DVDROM_ReadDiscType_(void);
extern void (*start_hook) (void* );
extern unsigned start_hook_arg;
extern unsigned char css_disc;


⌨️ 快捷键说明

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