87 lines
3.2 KiB
C
87 lines
3.2 KiB
C
/*******************************************************************************
|
|
|
|
This software file (the "File") is distributed by Marvell International Ltd.
|
|
or its affiliate(s) under the terms of the GNU General Public License Version 2,
|
|
June 1991 (the "License"). You may use, redistribute and/or modify this File
|
|
in accordance with the terms and conditions of the License, a copy of which
|
|
is available along with the File in the license.txt file or by writing to the
|
|
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
|
|
|
|
THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
|
|
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
|
|
DISCLAIMED. The GPL License provides additional details about this warranty
|
|
disclaimer.
|
|
|
|
(C) Copyright 2004 - 2007 Marvell Semiconductor Israel Ltd. All Rights Reserved.
|
|
(C) Copyright 1999 - 2004 Chipidea Microelectronica, S.A. All Rights Reserved.
|
|
|
|
*******************************************************************************/
|
|
|
|
#ifndef __disk_h__
|
|
#define __disk_h__
|
|
|
|
#define USB_DCBWSIGNATURE (0x43425355)
|
|
#define USB_DCSWSIGNATURE (0x53425355)
|
|
#define USB_CBW_DIRECTION_BIT (0x80)
|
|
|
|
/* USB Command Block Wrapper */
|
|
typedef struct cbw_struct {
|
|
uint_32 DCBWSIGNATURE;
|
|
uint_32 DCBWTAG;
|
|
uint_32 DCBWDATALENGTH;
|
|
uint_8 BMCBWFLAGS;
|
|
/* 4 MSBs bits reserved */
|
|
uint_8 BCBWCBLUN;
|
|
/* 3 MSB reserved */
|
|
uint_8 BCBWCBLENGTH;
|
|
uint_8 CBWCB[16];
|
|
} CBW_STRUCT, _PTR_ CBW_STRUCT_PTR;
|
|
|
|
/* USB Command Status Wrapper */
|
|
typedef struct csw_struct {
|
|
uint_32 DCSWSIGNATURE;
|
|
uint_32 DCSWTAG;
|
|
uint_32 DCSWDATARESIDUE;
|
|
uint_8 BCSWSTATUS;
|
|
} CSW_STRUCT, _PTR_ CSW_STRUCT_PTR;
|
|
|
|
/* USB Mass storage Inquiry Command */
|
|
typedef struct mass_storage_inquiry {
|
|
uint_8 OPCODE;
|
|
uint_8 LUN;
|
|
uint_8 PAGE_CODE;
|
|
uint_8 RESERVED1;
|
|
uint_8 ALLOCATION_LENGTH;
|
|
uint_8 RESERVED2[7];
|
|
} DISK_INQUIRY, _PTR_ DISK_INQUIRY_PTR;
|
|
|
|
/* USB Mass storage READ CAPACITY Data */
|
|
typedef struct mass_storage_read_capacity {
|
|
uint_8 LAST_LOGICAL_BLOCK_ADDRESS[4];
|
|
uint_8 BLOCK_LENGTH_IN_BYTES[4];
|
|
} DISK_READ_CAPACITY, _PTR_ DISK_READ_CAPACITY_PTR;
|
|
|
|
/* USB Mass storage Device information */
|
|
typedef struct mass_storage_device_info {
|
|
uint_8 PERIPHERAL_DEVICE_TYPE; /* Bits 0-4. All other bits reserved */
|
|
uint_8 RMB; /* Bit 7. All other bits reserved */
|
|
uint_8 ANSI_ECMA_ISO_VERSION; /* ANSI: bits 0-2, ECMA: bits 3-5,
|
|
** ISO: bits 6-7
|
|
*/
|
|
uint_8 RESPONSE_DATA_FORMAT; /* bits 0-3. All other bits reserved */
|
|
uint_8 ADDITIONAL_LENGTH; /* For UFI device: always set to 0x1F */
|
|
uint_8 RESERVED1[3];
|
|
uint_8 VENDOR_INFORMATION[8];
|
|
uint_8 PRODUCT_ID[16];
|
|
uint_8 PRODUCT_REVISION_LEVEL[4];
|
|
} DISK_DEVICE_INFO, _PTR_ DISK_DEVICE_INFO_PTR;
|
|
|
|
|
|
extern _usb_device_handle usbDiskLoad(int devNo, int diskSize);
|
|
extern void usbDiskUnload(_usb_device_handle handle);
|
|
|
|
#endif /* __disk_h__ */
|
|
|
|
/* EOF */
|