LibXenon
Bare-metal Xbox 360 homebrew library
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Functions | Variables
usbstorage.c File Reference
#include "xetypes.h"
#include "diskio/disc_io.h"
#include "usb.h"
Include dependency graph for usbstorage.c:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ehci_device_data
 

Macros

#define s_printf   printf
 
#define ROUNDDOWN32(v)   (((u32)(v)-0x1f)&~0x1f)
 
#define TAG_START   0x22112211
 
#define CBW_SIZE   31
 
#define CBW_SIGNATURE   0x43425355
 
#define CBW_IN   (1 << 7)
 
#define CBW_OUT   0
 
#define CSW_SIZE   13
 
#define CSW_SIGNATURE   0x53425355
 
#define SCSI_TEST_UNIT_READY   0x00
 
#define SCSI_INQUIRY   0x12
 
#define SCSI_REQUEST_SENSE   0x03
 
#define SCSI_START_STOP   0x1b
 
#define SCSI_READ_CAPACITY   0x25
 
#define SCSI_READ_10   0x28
 
#define SCSI_WRITE_10   0x2A
 
#define SCSI_SENSE_REPLY_SIZE   18
 
#define SCSI_SENSE_NOT_READY   0x02
 
#define SCSI_SENSE_MEDIUM_ERROR   0x03
 
#define SCSI_SENSE_HARDWARE_ERROR   0x04
 
#define USB_CLASS_MASS_STORAGE   0x08
 
#define USB_CLASS_HUB   0x09
 
#define MASS_STORAGE_RBC_COMMANDS   0x01
 
#define MASS_STORAGE_ATA_COMMANDS   0x02
 
#define MASS_STORAGE_QIC_COMMANDS   0x03
 
#define MASS_STORAGE_UFI_COMMANDS   0x04
 
#define MASS_STORAGE_SFF8070_COMMANDS   0x05
 
#define MASS_STORAGE_SCSI_COMMANDS   0x06
 
#define MASS_STORAGE_BULK_ONLY   0x50
 
#define USBSTORAGE_GET_MAX_LUN   0xFE
 
#define USBSTORAGE_RESET   0xFF
 
#define USB_ENDPOINT_BULK   0x02
 
#define USBSTORAGE_CYCLE_RETRIES   10
 
#define MAX_TRANSFER_SIZE   4096
 
#define DEVLIST_MAXSIZE   8
 

Typedefs

typedef struct ehci_device_data ehci_device_data
 

Functions

ehci_device_datafind_ehci_data (struct ehci_hcd *ehci)
 
int my_memcmp (char *a, char *b, int size_b)
 
s32 USBStorage_Open (ehci_device_data *device_data)
 
s32 USBStorage_Close (usbstorage_handle *dev)
 
s32 USBStorage_Reset (struct ehci_hcd *ehci, usbstorage_handle *dev)
 
s32 USBStorage_GetMaxLUN (usbstorage_handle *dev)
 
s32 USBStorage_MountLUN (struct ehci_hcd *ehci, usbstorage_handle *dev, u8 lun)
 
s32 USBStorage_Inquiry (struct ehci_hcd *ehci, usbstorage_handle *dev, u8 lun)
 
s32 USBStorage_ReadCapacity (struct ehci_hcd *ehci, usbstorage_handle *dev, u8 lun, u32 *sector_size, u32 *n_sectors)
 
s32 USBStorage_Read (struct ehci_hcd *ehci, usbstorage_handle *dev, u8 lun, u32 sector, u16 n_sectors, u8 *buffer)
 
s32 USBStorage_Write (struct ehci_hcd *ehci, usbstorage_handle *dev, u8 lun, u32 sector, u16 n_sectors, const u8 *buffer)
 
s32 USBStorage_Try_Device (ehci_device_data *device_data)
 
s32 USBStorage_Init (void)
 
s32 USBStorage_Get_Capacity (int device, u32 *sector_size)
 
int unplug_procedure (int device)
 
s32 USBStorage_Read_Sectors (int device, u32 sector, u32 numSectors, void *buffer)
 
s32 USBStorage_Write_Sectors (int device, u32 sector, u32 numSectors, const void *buffer)
 
s32 USBStorage_Read_Sectors_0 (u32 sector, u32 numSectors, void *buffer)
 
s32 USBStorage_Write_Sectors_0 (u32 sector, u32 numSectors, const void *buffer)
 
s32 USBStorage_Read_Sectors_1 (u32 sector, u32 numSectors, void *buffer)
 
s32 USBStorage_Write_Sectors_1 (u32 sector, u32 numSectors, const void *buffer)
 
s32 USBStorage_Read_Sectors_2 (u32 sector, u32 numSectors, void *buffer)
 
s32 USBStorage_Write_Sectors_2 (u32 sector, u32 numSectors, const void *buffer)
 
s32 USBStorage_Inserted_0 ()
 
s32 USBStorage_Inserted_1 ()
 
s32 USBStorage_Inserted_2 ()
 
s32 USBStorage_devsectors_0 (void)
 
s32 USBStorage_devsectors_1 (void)
 
s32 USBStorage_devsectors_2 (void)
 

Variables

void(* mount_usb_device )(int device)=0
 
int handshake_mode
 
u32 usb_timeout
 
s32 try_status = 0
 
DISC_INTERFACE usb2mass_ops
 
DISC_INTERFACE usb2mass_ops_0
 
DISC_INTERFACE usb2mass_ops_1
 
DISC_INTERFACE usb2mass_ops_2
 

Macro Definition Documentation

◆ CBW_IN

#define CBW_IN   (1 << 7)

Definition at line 47 of file usbstorage.c.

◆ CBW_OUT

#define CBW_OUT   0

Definition at line 48 of file usbstorage.c.

◆ CBW_SIGNATURE

#define CBW_SIGNATURE   0x43425355

Definition at line 46 of file usbstorage.c.

◆ CBW_SIZE

#define CBW_SIZE   31

Definition at line 45 of file usbstorage.c.

◆ CSW_SIGNATURE

#define CSW_SIGNATURE   0x53425355

Definition at line 52 of file usbstorage.c.

◆ CSW_SIZE

#define CSW_SIZE   13

Definition at line 51 of file usbstorage.c.

◆ DEVLIST_MAXSIZE

#define DEVLIST_MAXSIZE   8

Definition at line 92 of file usbstorage.c.

◆ MASS_STORAGE_ATA_COMMANDS

#define MASS_STORAGE_ATA_COMMANDS   0x02

Definition at line 71 of file usbstorage.c.

◆ MASS_STORAGE_BULK_ONLY

#define MASS_STORAGE_BULK_ONLY   0x50

Definition at line 77 of file usbstorage.c.

◆ MASS_STORAGE_QIC_COMMANDS

#define MASS_STORAGE_QIC_COMMANDS   0x03

Definition at line 72 of file usbstorage.c.

◆ MASS_STORAGE_RBC_COMMANDS

#define MASS_STORAGE_RBC_COMMANDS   0x01

Definition at line 70 of file usbstorage.c.

◆ MASS_STORAGE_SCSI_COMMANDS

#define MASS_STORAGE_SCSI_COMMANDS   0x06

Definition at line 75 of file usbstorage.c.

◆ MASS_STORAGE_SFF8070_COMMANDS

#define MASS_STORAGE_SFF8070_COMMANDS   0x05

Definition at line 74 of file usbstorage.c.

◆ MASS_STORAGE_UFI_COMMANDS

#define MASS_STORAGE_UFI_COMMANDS   0x04

Definition at line 73 of file usbstorage.c.

◆ MAX_TRANSFER_SIZE

#define MAX_TRANSFER_SIZE   4096

Definition at line 90 of file usbstorage.c.

◆ ROUNDDOWN32

#define ROUNDDOWN32 (   v)    (((u32)(v)-0x1f)&~0x1f)

Definition at line 39 of file usbstorage.c.

◆ s_printf

#define s_printf   printf

Definition at line 37 of file usbstorage.c.

◆ SCSI_INQUIRY

#define SCSI_INQUIRY   0x12

Definition at line 55 of file usbstorage.c.

◆ SCSI_READ_10

#define SCSI_READ_10   0x28

Definition at line 59 of file usbstorage.c.

◆ SCSI_READ_CAPACITY

#define SCSI_READ_CAPACITY   0x25

Definition at line 58 of file usbstorage.c.

◆ SCSI_REQUEST_SENSE

#define SCSI_REQUEST_SENSE   0x03

Definition at line 56 of file usbstorage.c.

◆ SCSI_SENSE_HARDWARE_ERROR

#define SCSI_SENSE_HARDWARE_ERROR   0x04

Definition at line 65 of file usbstorage.c.

◆ SCSI_SENSE_MEDIUM_ERROR

#define SCSI_SENSE_MEDIUM_ERROR   0x03

Definition at line 64 of file usbstorage.c.

◆ SCSI_SENSE_NOT_READY

#define SCSI_SENSE_NOT_READY   0x02

Definition at line 63 of file usbstorage.c.

◆ SCSI_SENSE_REPLY_SIZE

#define SCSI_SENSE_REPLY_SIZE   18

Definition at line 62 of file usbstorage.c.

◆ SCSI_START_STOP

#define SCSI_START_STOP   0x1b

Definition at line 57 of file usbstorage.c.

◆ SCSI_TEST_UNIT_READY

#define SCSI_TEST_UNIT_READY   0x00

Definition at line 54 of file usbstorage.c.

◆ SCSI_WRITE_10

#define SCSI_WRITE_10   0x2A

Definition at line 60 of file usbstorage.c.

◆ TAG_START

#define TAG_START   0x22112211

Definition at line 43 of file usbstorage.c.

◆ USB_CLASS_HUB

#define USB_CLASS_HUB   0x09

Definition at line 68 of file usbstorage.c.

◆ USB_CLASS_MASS_STORAGE

#define USB_CLASS_MASS_STORAGE   0x08

Definition at line 67 of file usbstorage.c.

◆ USB_ENDPOINT_BULK

#define USB_ENDPOINT_BULK   0x02

Definition at line 82 of file usbstorage.c.

◆ USBSTORAGE_CYCLE_RETRIES

#define USBSTORAGE_CYCLE_RETRIES   10

Definition at line 87 of file usbstorage.c.

◆ USBSTORAGE_GET_MAX_LUN

#define USBSTORAGE_GET_MAX_LUN   0xFE

Definition at line 79 of file usbstorage.c.

◆ USBSTORAGE_RESET

#define USBSTORAGE_RESET   0xFF

Definition at line 80 of file usbstorage.c.

Typedef Documentation

◆ ehci_device_data

Function Documentation

◆ find_ehci_data()

ehci_device_data * find_ehci_data ( struct ehci_hcd ehci)

Definition at line 134 of file usbstorage.c.

◆ my_memcmp()

int my_memcmp ( char *  a,
char *  b,
int  size_b 
)

Definition at line 631 of file usbstorage.c.

◆ unplug_procedure()

int unplug_procedure ( int  device)

Definition at line 1316 of file usbstorage.c.

◆ USBStorage_Close()

s32 USBStorage_Close ( usbstorage_handle dev)

Definition at line 878 of file usbstorage.c.

◆ USBStorage_devsectors_0()

s32 USBStorage_devsectors_0 ( void  )

Definition at line 1441 of file usbstorage.c.

◆ USBStorage_devsectors_1()

s32 USBStorage_devsectors_1 ( void  )

Definition at line 1446 of file usbstorage.c.

◆ USBStorage_devsectors_2()

s32 USBStorage_devsectors_2 ( void  )

Definition at line 1451 of file usbstorage.c.

◆ USBStorage_Get_Capacity()

s32 USBStorage_Get_Capacity ( int  device,
u32 sector_size 
)

Definition at line 1306 of file usbstorage.c.

◆ USBStorage_GetMaxLUN()

s32 USBStorage_GetMaxLUN ( usbstorage_handle dev)

Definition at line 894 of file usbstorage.c.

◆ USBStorage_Init()

s32 USBStorage_Init ( void  )

Definition at line 1215 of file usbstorage.c.

◆ USBStorage_Inquiry()

s32 USBStorage_Inquiry ( struct ehci_hcd ehci,
usbstorage_handle dev,
u8  lun 
)

Definition at line 935 of file usbstorage.c.

◆ USBStorage_Inserted_0()

s32 USBStorage_Inserted_0 ( )

Definition at line 1431 of file usbstorage.c.

◆ USBStorage_Inserted_1()

s32 USBStorage_Inserted_1 ( )

Definition at line 1434 of file usbstorage.c.

◆ USBStorage_Inserted_2()

s32 USBStorage_Inserted_2 ( )

Definition at line 1437 of file usbstorage.c.

◆ USBStorage_MountLUN()

s32 USBStorage_MountLUN ( struct ehci_hcd ehci,
usbstorage_handle dev,
u8  lun 
)

Definition at line 899 of file usbstorage.c.

◆ USBStorage_Open()

s32 USBStorage_Open ( ehci_device_data device_data)

Definition at line 646 of file usbstorage.c.

◆ USBStorage_Read()

s32 USBStorage_Read ( struct ehci_hcd ehci,
usbstorage_handle dev,
u8  lun,
u32  sector,
u16  n_sectors,
u8 buffer 
)

Definition at line 1017 of file usbstorage.c.

◆ USBStorage_Read_Sectors()

s32 USBStorage_Read_Sectors ( int  device,
u32  sector,
u32  numSectors,
void *  buffer 
)

Definition at line 1342 of file usbstorage.c.

◆ USBStorage_Read_Sectors_0()

s32 USBStorage_Read_Sectors_0 ( u32  sector,
u32  numSectors,
void *  buffer 
)

Definition at line 1413 of file usbstorage.c.

◆ USBStorage_Read_Sectors_1()

s32 USBStorage_Read_Sectors_1 ( u32  sector,
u32  numSectors,
void *  buffer 
)

Definition at line 1419 of file usbstorage.c.

◆ USBStorage_Read_Sectors_2()

s32 USBStorage_Read_Sectors_2 ( u32  sector,
u32  numSectors,
void *  buffer 
)

Definition at line 1425 of file usbstorage.c.

◆ USBStorage_ReadCapacity()

s32 USBStorage_ReadCapacity ( struct ehci_hcd ehci,
usbstorage_handle dev,
u8  lun,
u32 sector_size,
u32 n_sectors 
)

Definition at line 948 of file usbstorage.c.

◆ USBStorage_Reset()

s32 USBStorage_Reset ( struct ehci_hcd ehci,
usbstorage_handle dev 
)

Definition at line 886 of file usbstorage.c.

◆ USBStorage_Try_Device()

s32 USBStorage_Try_Device ( ehci_device_data device_data)

Definition at line 1092 of file usbstorage.c.

◆ USBStorage_Write()

s32 USBStorage_Write ( struct ehci_hcd ehci,
usbstorage_handle dev,
u8  lun,
u32  sector,
u16  n_sectors,
const u8 buffer 
)

Definition at line 1037 of file usbstorage.c.

◆ USBStorage_Write_Sectors()

s32 USBStorage_Write_Sectors ( int  device,
u32  sector,
u32  numSectors,
const void *  buffer 
)

Definition at line 1378 of file usbstorage.c.

◆ USBStorage_Write_Sectors_0()

s32 USBStorage_Write_Sectors_0 ( u32  sector,
u32  numSectors,
const void *  buffer 
)

Definition at line 1416 of file usbstorage.c.

◆ USBStorage_Write_Sectors_1()

s32 USBStorage_Write_Sectors_1 ( u32  sector,
u32  numSectors,
const void *  buffer 
)

Definition at line 1422 of file usbstorage.c.

◆ USBStorage_Write_Sectors_2()

s32 USBStorage_Write_Sectors_2 ( u32  sector,
u32  numSectors,
const void *  buffer 
)

Definition at line 1428 of file usbstorage.c.

Variable Documentation

◆ handshake_mode

int handshake_mode
extern

Definition at line 166 of file ehci.c.

◆ mount_usb_device

void(* mount_usb_device) (int device)=0 ( int  device)

Definition at line 35 of file usbstorage.c.

◆ try_status

s32 try_status = 0

Definition at line 644 of file usbstorage.c.

◆ usb2mass_ops

DISC_INTERFACE usb2mass_ops
Initial value:
= {
.clearStatus = (FN_MEDIUM_CLEARSTATUS) & USBStorage_True,
.shutdown = (FN_MEDIUM_SHUTDOWN) & USBStorage_True,
.startup = (FN_MEDIUM_STARTUP) & USBStorage_True,
.ioType = FEATURE_XENON_USB,
}
bool(* FN_MEDIUM_STARTUP)(void)
Definition: disc_io.h:47
bool(* FN_MEDIUM_CLEARSTATUS)(void)
Definition: disc_io.h:51
#define FEATURE_MEDIUM_CANREAD
Definition: disc_io.h:39
s32(* FN_MEDIUM_DEVSECTORS)(void)
Definition: disc_io.h:53
bool(* FN_MEDIUM_SHUTDOWN)(void)
Definition: disc_io.h:52
#define FEATURE_XENON_USB
Definition: disc_io.h:43
bool(* FN_MEDIUM_READSECTORS)(sec_t sector, sec_t numSectors, void *buffer)
Definition: disc_io.h:49
bool(* FN_MEDIUM_WRITESECTORS)(sec_t sector, sec_t numSectors, const void *buffer)
Definition: disc_io.h:50
#define FEATURE_MEDIUM_CANWRITE
Definition: disc_io.h:40
bool(* FN_MEDIUM_ISINSERTED)(void)
Definition: disc_io.h:48
s32 USBStorage_Read_Sectors_0(u32 sector, u32 numSectors, void *buffer)
Definition: usbstorage.c:1413
s32 USBStorage_Inserted_0()
Definition: usbstorage.c:1431
s32 USBStorage_Write_Sectors_0(u32 sector, u32 numSectors, const void *buffer)
Definition: usbstorage.c:1416
s32 USBStorage_devsectors_0(void)
Definition: usbstorage.c:1441
u8 features
Definition: xenos_edid.h:15

Definition at line 1456 of file usbstorage.c.

◆ usb2mass_ops_0

DISC_INTERFACE usb2mass_ops_0
Initial value:
= {
.clearStatus = (FN_MEDIUM_CLEARSTATUS) & USBStorage_True,
.shutdown = (FN_MEDIUM_SHUTDOWN) & USBStorage_True,
.startup = (FN_MEDIUM_STARTUP) & USBStorage_True,
.ioType = FEATURE_XENON_USB,
}

Definition at line 1468 of file usbstorage.c.

◆ usb2mass_ops_1

DISC_INTERFACE usb2mass_ops_1
Initial value:
= {
.clearStatus = (FN_MEDIUM_CLEARSTATUS) & USBStorage_True,
.shutdown = (FN_MEDIUM_SHUTDOWN) & USBStorage_True,
.startup = (FN_MEDIUM_STARTUP) & USBStorage_True,
.ioType = FEATURE_XENON_USB,
}
s32 USBStorage_Write_Sectors_1(u32 sector, u32 numSectors, const void *buffer)
Definition: usbstorage.c:1422
s32 USBStorage_Read_Sectors_1(u32 sector, u32 numSectors, void *buffer)
Definition: usbstorage.c:1419
s32 USBStorage_Inserted_1()
Definition: usbstorage.c:1434
s32 USBStorage_devsectors_1(void)
Definition: usbstorage.c:1446

Definition at line 1480 of file usbstorage.c.

◆ usb2mass_ops_2

DISC_INTERFACE usb2mass_ops_2
Initial value:
= {
.clearStatus = (FN_MEDIUM_CLEARSTATUS) & USBStorage_True,
.shutdown = (FN_MEDIUM_SHUTDOWN) & USBStorage_True,
.startup = (FN_MEDIUM_STARTUP) & USBStorage_True,
.ioType = FEATURE_XENON_USB,
}
s32 USBStorage_devsectors_2(void)
Definition: usbstorage.c:1451
s32 USBStorage_Inserted_2()
Definition: usbstorage.c:1437
s32 USBStorage_Read_Sectors_2(u32 sector, u32 numSectors, void *buffer)
Definition: usbstorage.c:1425
s32 USBStorage_Write_Sectors_2(u32 sector, u32 numSectors, const void *buffer)
Definition: usbstorage.c:1428

Definition at line 1492 of file usbstorage.c.

◆ usb_timeout

u32 usb_timeout
extern

Definition at line 502 of file ehci.c.