blkextend.h

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

H
233
字号
/*******************************************************************
 * 
 *  Copyright C 2005 by Amlogic, Inc. All Rights Reserved.
 *
 *  Description: 
 *
 *  Author: Amlogic Software
 *  Created: Fri Nov 11 01:06:55 2005
 *
 *******************************************************************/
/* the designing sepc can be found in "AVOS BLOCK DEVICE DRIVER DESIGN SPEC" */
 /* below is extended by rain */



typedef	struct blkdev_cmdarg{
	unsigned32 type;
	unsigned32 data0;
	unsigned32 data1;
	unsigned32 data2;
	unsigned32 data3;
	unsigned32 data4;
}blkdev_cmdarg;

/*****************************************
* argment for BLKIO_DESCRAMBLE		 
*  type: descramble type				
*  data0: block address (css: address of title key; cppm/acss: 0 )
*  data1: target fd
*****************************************/
#define DESCRAMBLE_TYPE_CSS  0
#define DESCRAMBLE_TYPE_CPPM 1
#define DESCRAMBLE_TYPE_ACSS 2

/****************************************
* argmentBLKIO_STOP
*
*****************************************/
#define BLK_STOPMODE_NORMAL 0
#define BLK_STOPMODE_STANDBY 1
#define BLK_STOPMODE_STOPREAD 2
#define BLK_STOPMODE_POWEROFF 3


/****************************************
* argment for BLKIO_REQUEST 
*   ( BLKDEV_REQ_ASYREAD_MEM, BLKDEV_REQ_ASYWRITE_MEM,
*    BLKDEV_REQ_ASYREAD_DEV,BLKDEV_REQ_ASYWRITE_DEV)
*
*****************************************/

typedef struct blkdev_asyreqs {
	unsigned32 start; /* Start block number */
	unsigned32 count; /* Number of blocks to be exchanged */
} blkdev_asyreqs;


#define MODE_2048 0 
/*DVD/CDROM general data format, one sector has 2048 bytes*/
//below only valid for cd
#define MODE_2340 1 
/*one sector has 2340 bytes, read to dest_adr*/
#define MODE_CDDA 3 
/*one sector has 2352 bytes ,read to dest_adr*/
#define MODE_VCD 4 
/*one sector has 12+2324 bytes, 12 bytes is read into dest_adr_ext, other is read into dest_adr*/
#define MODE_CDG 5 
/*one sector has 96 bytes subcode and 2352 bytes data, subcode is read into dest_adr_ext, and 2352 bytes data is read into dest_adr */


#define ADR_TYPE_SECTOR 	0
#define ADR_TYPE_MSF 		1

typedef struct blkdev_asyrwarg{
	unsigned dest_adr; /* it is block address for req of BLKDEV_REQ_ASYXXX_MEM,
				and is istarget devicelt fd (or iosource devicele fd) for req of
				BLKDEV_REQ_ASYXXX_DEV
				*/
	unsigned dest_adr_ext; /* for some specially CD reading mode, have another target memory
				address*/
#define CONTROL_FORCE_SEND 	0x0001
#define CONTROL_CDDA_REPAIR     0x0002
#define CONTROL_WITHINFO_ERRFLAG 0x0004
#define CONTROL_WITHINFO_SUBCH  0x0008
#define CONTROL_CSS_TITLEKEY    0x0010
	unsigned short control; /* bit0: error force send flag; bit1: cdda repair flag;
				 bit4~bit7: descramble mode */
	unsigned char endian;
	unsigned char adrtype; /*ADR_TYPE_SECTOR:sector, ADR_TYPE_MSF:MSF (only for cd)*/
	unsigned char mode; /* MODE_2048,etc, see above defines*/
	unsigned char trytimes; /* 0 if need not retry*/
}blkdev_asyrwarg;


#define MAX_REQ_NUM 64
typedef struct blkdev_asyrequest {
	blkdev_request_op req; /* Block device operation :
					BLKDEV_REQ_ASYREAD_MEM
					BLKDEV_REQ_ASYWRITE_MEM
					BLKDEV_REQ_ASYREAD_DEV
					BLKDEV_REQ_ASYWRITE_DEV
				*/
	blkdev_request_cb req_done; /* Callback function */
	void *done_arg; /* Argument to be passed to callback function*/
	unsigned32 reqcount; /* internal use*/
	blkdev_asyrwarg target;
	unsigned32 reqnum; /*it has the ability to read separated areas in one request, this define the
				number separated areas*/
	blkdev_asyreqs reqs[MAX_REQ_NUM]; /*block address and size for each separated area*/
} blkdev_asyrequest;


/****************************************
* argment of BLKIO_GETDISCINFO
*
*****************************************/
#pragma Pack(4)
typedef struct
{
	unsigned short Pmin;
	unsigned char Psec;
	unsigned char Pframe;
} MSF;
typedef struct
{
	unsigned char BookType_Version;
	unsigned char DiscSize_MinRate;
	unsigned char LayerNos_TrackPath_LayerType;
	unsigned char Linear_Track_Density;
	unsigned StartSectorNum;
	unsigned EndSectorNum;
	unsigned FirstLayerSectorNum;
} DVDPHYINFO ;
typedef struct
{
	unsigned char DiscType;
	unsigned char FirstTrack;
	unsigned char LastTrack;
	unsigned char reserved;
	MSF Total;
	MSF Track[99];
	DVDPHYINFO DvdPhyInfo;
} TOC;
typedef struct{
	union{
	TOC cddvdinfo;
	}discinfo;
} DiscInformation;
#pragma Pack()
/****************************************
* define for BLKIO_GETSTATUS
*
*****************************************/
/*general*/
#define BGET_STATE 			0x00
#define BGET_VERSION			0x01

/***********************************************
 * add by tom cao for USB DVD ROM 06,08,18
 ************************************************/
#define BGET_UNIT_READY			 0x5
#define BGET_MECHANISM_STATUS    0x6
#define BGET_USB_MS_DEVICE       0x13

/* 
 *DVD ROM BLKIO_CD command's command case
 */
#define READ_TOC_CMD               	 0x0
#define READ_MSF_CMD               	 0x1
#define READ_CDDA_MSF_CMD     0X2



/*device id for BGET_VERSION*/
#define BLKID_ATAPIDVD 			0x00
#define BLKID_THOMDVD			0x01
#define BLKID_AMLDVD			0x02
#define BLKID_HARDDISC			0x03


/*dvd/cd device*/
#define BGET_SPEED			0x10
#define BGET_DISCTYPE			0x11

/*disk type*/
#define BLOCK_DISCTYPE_NULL		0
#define BLOCK_DISCTYPE_DVD		1
#define BLOCK_DISCTYPE_CDROM		2
#define BLOCK_DISCTYPE_CDDA		3
#define BLOCK_DISCTYPE_VCD		4
#define BGET_PATHTABLESTART		0x12

/*device dependent*/
/*atapi dvd/cd*/
#define BGET_ATADVD_TRACKBUF_ENABLE 	0xe0
#define BGET_ATADVD_TRACKBUF_SET	0xe1
#define BGET_ATADVD_TRACKBUF_SECTORUNIT 0xe2

/****************************************
* define for BLKIO_SETTING
*
*****************************************/
/*general*/


/*dvd/cd device*/
#define BSET_SPEED 			0x10

/*device dependent*/
/*atapi dvd/cd*/
#define BSET_ATADVD_TRACKBUF_ENABLE	0xe0
#define BSET_ATADVD_TRACKBUF_SET	0xe1
#define BSET_ATADVD_TRACKBUF_SECTORUNIT	0xe2
#define BSET_ATADVD_START_HOOK		0xe3
#define BSET_ATADVD_TRACKBUF_ADD 	0xe4

/****************************************
* states of device
*
*****************************************/
#define BLOCK_STATE_STOP 		0
#define BLOCK_STATE_DOOROPEN 		1
#define BLOCK_STATE_CHECKINGDISC 	2
#define BLOCK_STATE_READINGINFO 	3
#define BLOCK_STATE_NODISC 		4
#define BLOCK_STATE_DISCERROR 		5
#define BLOCK_STATE_IDLE 		6
#define BLOCK_STATE_PROCESSING 		7
#define BLOCK_STATE_READING 		8
#define BLOCK_STATE_WRITING 		BLOCK_STATE_READING

//end by rain

⌨️ 快捷键说明

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