storage.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef __STORAGE_H
00036 #define __STORAGE_H
00037 void usb_storage_probe();
00038 void usb_storage_check();
00039
00040
00041 #define CSW_CMD_PASSED 0x00
00042 #define CSW_CMD_FAILED 0x01
00043 #define CSW_PHASE_ERROR 0x02
00044
00045
00046
00047 #define SCSI_TEST_UNIT_READY 0x00
00048 #define SCSI_REQUEST_SENSE 0x03
00049 #define SCSI_FORMAT_UNIT 0x04
00050 #define SCSI_INQUIRY 0x12
00051 #define SCSI_MODE_SELECT6 0x15
00052 #define SCSI_MODE_SENSE6 0x1A
00053 #define SCSI_START_STOP_UNIT 0x1B
00054 #define SCSI_MEDIA_REMOVAL 0x1E
00055 #define SCSI_READ_FORMAT_CAPACITIES 0x23
00056 #define SCSI_READ_CAPACITY 0x25
00057 #define SCSI_READ10 0x28
00058 #define SCSI_WRITE10 0x2A
00059 #define SCSI_VERIFY10 0x2F
00060 #define SCSI_MODE_SELECT10 0x55
00061 #define SCSI_MODE_SENSE10 0x5A
00062
00063
00064 typedef struct usb_storage_cbw_t usb_storage_cbw;
00065 struct usb_storage_cbw_t {
00066 u32 dCBWSignature;
00067 u32 dCBWTag;
00068 u32 dCBWDataTransferLength;
00069 u8 bCWDFlags;
00070 u8 bCBWLun;
00071 u8 bCBWCBLength;
00072 u8 CBWCB[16];
00073 };
00074
00075 typedef struct usb_storage_csw_t usb_storage_csw;
00076 struct usb_storage_csw_t {
00077 u32 dCSWSignature;
00078 u32 dCSWTag;
00079 u32 dCSWDataResidue;
00080 u8 bCSWStatus;
00081 };
00082
00083
00084 void usb_storage_init();
00085
00086 u8 usb_storage_open(u8 device);
00087
00088 u8 usb_storage_read_capacity(u8 device);
00089 u8 usb_storage_inquiry(u8 device);
00090 u8 usb_storage_read_sector(u8 device, u32 sector, char * buf);
00091 u8 usb_storage_write_sector(u8 device, u32 sector, char * buf);
00092 #endif
00093