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