blkdev.h

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

H
211
字号
/*******************************************************************
 * 
 *  Copyright C 2005 by Amlogic, Inc. All Rights Reserved.
 *
 *  Description: 
 *
 *  Author: Amlogic Software
 *  Created: Fri Nov 11 01:06:50 2005
 *
 *******************************************************************/
/* 
 * blkdev.h - block device driver interface definitions
 *
 * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia
 * Author: Victor V. Vengerov <vvv@oktet.ru>
 *
 * @(#) blkdev.h,v 1.2 2002/10/28 14:00:42 joel Exp
 */

#ifndef __AVFS_LIBBLOCK_BLKDEV_H__
#define __AVFS_LIBBLOCK_BLKDEV_H__

#if 0
//porting
#include <avfs.h>
#include <sys/ioctl.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif

/* Interface with device drivers
 * Block device looks, initialized and behaves like traditional AVFS device 
 * driver. Heart of the block device driver is in BIOREQUEST ioctl. This call
 * puts I/O request to the block device queue, in priority order, for
 * asynchronous processing. When driver executes request, req_done
 * function invoked, so callee knows about it. Look for details below.
 */


/* Block device block number datatype */
typedef avfs_unsigned32 blkdev_bnum;

/* Block device request type */
typedef enum blkdev_request_op_s {
    BLKDEV_REQ_READ,  /* Read operation */
    BLKDEV_REQ_WRITE,  /* Write operation */
    BLKDEV_REQ_ASYREAD_MEM,
    BLKDEV_REQ_ASYWRITE_MEM,
    BLKDEV_REQ_ASYREAD_DEV,
    BLKDEV_REQ_ASYWRITE_DEV,
    BLKDEV_REQ_READ_DEV,
    BLKDEV_REQ_WRITE_DEV
} blkdev_request_op;

/* Type for block device request done callback function.
 *
 * PARAMETERS:
 *     arg    - argument supplied in blkdev_request
 *     status - avfs status code for this operation
 *     errno  - errno value to be passed to the user when
 *              status != AVFS_SUCCESSFUL
 */
typedef void (* blkdev_request_cb)(void *arg, 
                                   avfs_status_code status,
                                   int error);

/* blkdev_sg_buffer
 * Block device scatter/gather buffer structure
 */
typedef struct blkdev_sg_buffer_s {
    avfs_unsigned32 length;  /* Buffer length */
    void            *buffer;  /* Buffer pointer */
} blkdev_sg_buffer;

/* blkdev_request (Block Device Request) structure is
 * used to read/write a number of blocks from/to device. 
 */
#define MAX_BLKDEV_REQUEST_BUF_NUM		3  //lichao ,2005-4-11 15:11
typedef struct blkdev_request_s {
    blkdev_request_op req;      /* Block device operation (read or write) */
    blkdev_request_cb req_done; /* Callback function */
    void             *done_arg; /* Argument to be passed to callback function*/
    avfs_status_code status;  /* Last I/O operation completion status */
    int               error;   /* If status != AVFS_SUCCESSFUL, this field 
                                * contains error code
                                */
    blkdev_bnum       start;    /* Start block number */
    avfs_unsigned32  count;    /* Number of blocks to be exchanged */
    avfs_unsigned32  bufnum;   /* Number of buffers provided */    
    
    blkdev_sg_buffer  bufs[MAX_BLKDEV_REQUEST_BUF_NUM];/* List of scatter/gather buffers */
} blkdev_request;

/* Block device IOCTL request codes */
#define BLKIO_REQUEST      _IOWR('B', 1, blkdev_request)
#define BLKIO_GETBLKSIZE   _IO('B', 2)
#define BLKIO_GETSIZE      _IO('B', 3)
#define BLKIO_SYNCDEV      _IO('B', 4)
#define BLKIO_SETBLKSIZE      _IO('B', 5)
#define BLKIO_RESET      _IO('B', 6)
#define BLKIO_GET_TYPE_STR _IO('B',7)

#define DVDROM_CMD_BASE   16
#define BLKIO_STOPREAD   _IO('B',DVDROM_CMD_BASE+0 )  
#define BLKIO_STOPWRITE   BLKIO_STOPREAD  
#define BLKIO_EJECTDISC   _IO('B',DVDROM_CMD_BASE+1)  
#define BLKIO_LOADDISC   _IO('B',DVDROM_CMD_BASE+2 )  
#define BLKIO_DESCRAMBLE  _IO('B',DVDROM_CMD_BASE+3) 
#define BLKIO_STOP       _IO('B',DVDROM_CMD_BASE+4     ) 
#define BLKIO_START      _IO('B',DVDROM_CMD_BASE+5    ) 
#define BLKIO_GETDISCINFO  _IO('B',DVDROM_CMD_BASE+6) 
#define BLKIO_GETSTATUS  _IO('B',DVDROM_CMD_BASE+7    ) 
#define BLKIO_SETTING   _IO('B',DVDROM_CMD_BASE+8    ) 
#define BLKIO_PREFILL   _IO('B',DVDROM_CMD_BASE+9    ) 
#define BLKIO_USB_CD  		 _IO('B',DVDROM_CMD_BASE+10    )
#define BLKIO_GETDISCTYPE   _IO('B',DVDROM_CMD_BASE+11    )  
#define BLKIO_USB_GET_BUS_NO  _IO('B',DVDROM_CMD_BASE+12    ) 

#define BLKIO_NAND_CLEAR  		 _IO('B',100 )  	/*by yangbin*/
#define BLKIO_NAND_BUF_ENABLE   	_IO('B',101 ) 
#define BLKIO_NAND_BUF_DISABLE   	_IO('B',102 ) 


#include "blkextend.h"
#include "fileextend.h"
/* Device driver interface conventions suppose that driver may
 * contain initialize/open/close/read/write/ioctl entry points. These 
 * primitives (except initialize) can be implemented in generic fashion, 
 * based upon supplied block device driver ioctl handler. Every block
 * device driver should provide initialize entry point, which is register
 * all block devices and appropriate ioctl handlers.
 */

#define GENERIC_BLOCK_DEVICE_DRIVER_ENTRIES \
      avfs_blkdev_generic_open, avfs_blkdev_generic_close, \
      avfs_blkdev_generic_read, avfs_blkdev_generic_write, \
      avfs_blkdev_generic_ioctl

/* blkdev_generic_read --
 *     Generic block device read primitive. Implemented using block device
 *     buffer management primitives.
 */
avfs_device_driver
avfs_blkdev_generic_read(
    avfs_device_major_number major,
    avfs_device_minor_number minor,
    void                    * arg
);

/* blkdev_generic_write --
 *     Generic block device driver write primitive. Implemented using block 
 *     device buffer management primitives. 
 */
avfs_device_driver
avfs_blkdev_generic_write(
    avfs_device_major_number major,
    avfs_device_minor_number minor,
    void                    * arg
);

/* blkdev_generic_open --
 *     Generic block device open primitive.
 */
avfs_device_driver
avfs_blkdev_generic_open(
    avfs_device_major_number major,
    avfs_device_minor_number minor,
    void                    * arg
);

/* blkdev_generic_close --
 *     Generic block device close primitive.
 */
avfs_device_driver
avfs_blkdev_generic_close(
    avfs_device_major_number major,
    avfs_device_minor_number minor,
    void                    * arg
);

/* blkdev_generic_ioctl --
 *     Generic block device ioctl primitive.
 */
avfs_device_driver
avfs_blkdev_generic_ioctl(
    avfs_device_major_number major,
    avfs_device_minor_number minor,
    void                    * arg
);

/* blkdev_generic_get --
 *     get mutex when some block device conflict .
 */
void 
avfs_blkdev_mutex_get();

/* blkdev_generic_put --
 *     put mutex when some block device conflict .
 */
void 
avfs_blkdev_mutex_put();

#ifdef __cplusplus
}
#endif

#define BLK_DUMP_ADDR	0xb00000

#endif

⌨️ 快捷键说明

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