X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=usb%2Fdrivers%2Fclass%2Fstorage.h;h=fa028edf58e91596d1872c9764fb18f68104ac77;hb=HEAD;hp=4d216f6d5b9c7cb91ee1b96f8e4eb099173964a3;hpb=251726c276ab844095583d4c8d7607a30c0a802c;p=ppcskel.git diff --git a/usb/drivers/class/storage.h b/usb/drivers/class/storage.h index 4d216f6..fa028ed 100644 --- a/usb/drivers/class/storage.h +++ b/usb/drivers/class/storage.h @@ -89,5 +89,67 @@ u8 usb_storage_read_capacity(u8 device); u8 usb_storage_inquiry(u8 device); u8 usb_storage_read_sector(u8 device, u32 sector, char * buf); u8 usb_storage_write_sector(u8 device, u32 sector, char * buf); -#endif /* __STORAGE_H */ +#define USBSTORAGE_OK 0 +#define USBSTORAGE_ENOINTERFACE -10000 +#define USBSTORAGE_ESENSE -10001 +#define USBSTORAGE_ESHORTWRITE -10002 +#define USBSTORAGE_ESHORTREAD -10003 +#define USBSTORAGE_ESIGNATURE -10004 +#define USBSTORAGE_ETAG -10005 +#define USBSTORAGE_ESTATUS -10006 +#define USBSTORAGE_EDATARESIDUE -10007 +#define USBSTORAGE_ETIMEDOUT -10008 +#define USBSTORAGE_EINIT -10009 +#define USBSTORAGE_PROCESSING -10010 + +typedef struct +{ + u8 configuration; + u32 interface; + u32 altInterface; + + u8 ep_in; + u8 ep_out; + + u8 max_lun; + u32 *sector_size; + + s32 usb_fd; + + s32 retval; + + u32 tag; + u8 suspended; + + u8 *buffer; +} usbstorage_handle; + +s32 USBStorage_Initialize(); + +s32 USBStorage_Open(usbstorage_handle *dev, const char *bus, u16 vid, u16 pid); +s32 USBStorage_Close(usbstorage_handle *dev); +s32 USBStorage_Reset(usbstorage_handle *dev); + +s32 USBStorage_GetMaxLUN(usbstorage_handle *dev); +s32 USBStorage_MountLUN(usbstorage_handle *dev, u8 lun); +s32 USBStorage_Suspend(usbstorage_handle *dev); + +s32 USBStorage_ReadCapacity(usbstorage_handle *dev, u8 lun, u32 *sector_size, u32 *n_sectors); +s32 USBStorage_Read(usbstorage_handle *dev, u8 lun, u32 sector, u16 n_sectors, u8 *buffer); +s32 USBStorage_Write(usbstorage_handle *dev, u8 lun, u32 sector, u16 n_sectors, const u8 *buffer); + +#if 0 +#define DEVICE_TYPE_WII_USB (('W'<<24)|('U'<<16)|('S'<<8)|'B') + +extern const DISC_INTERFACE __io_usbstorage; +#endif +#define __stwbrx(base,index,value) \ + __asm__ volatile ("stwbrx %0,%1,%2" : : "r"(value), "b%"(index), "r"(base) : "memory") + +#define __lwbrx(base,index) \ +({ register u32 res; \ + __asm__ volatile ("lwbrx %0,%1,%2" : "=r"(res) : "b%"(index), "r"(base) : "memory"); \ + res; }) + +#endif /* __STORAGE_H */