/* _____ ___ ____ ____| | ____| PSX2 OpenSource Project | ___| |____ (C)2002, Pedro J. Cabrera (rc5stint@yahoo.com) ------------------------------------------------------------------------ iop_usbd.s USB Driver Import functions. Figured out from IRX files with symbol tables in Unreal Tournament and JamPak demo discs. */ .text .set noreorder .local usbd_stub usbd_stub: # Module Import Information .word 0x41e00000 # Import Tag .word 0x00000000 # Minor Version? .word 0x00000101 # Major Version? .ascii "usbd\0\0\0\0" # Library ID .align 2 /* initialize USBD.IRX * Note: UsbInit is automatically called first whenever USBD.IRX is loaded. * There should never be a need to reinitialize the driver. In fact, it may * not even work. But I'm providing the function hook anyhow. */ .globl UsbInit UsbInit: j $31 li $0, 0x00 /* * These two functions are used to register and unregister device drivers for * listening for USB bus events. The events are device probe, connect, and disconnect. */ # register a USB device driver .globl UsbRegisterDriver UsbRegisterDriver: j $31 li $0, 0x04 # unregister a USB device driver .globl UsbUnregisterDriver UsbUnregisterDriver: j $31 li $0, 0x05 /* * This function is used to get the static descriptors for the specific USB * device. These descriptors identify the device uniquely and help determine * what type of device we are dealing with, and what its capabilities and * features are. */ .globl UsbGetDeviceStaticDescriptor UsbGetDeviceStaticDescriptor: j $31 li $0, 0x06 /* * These two functions are used to assign relevant data to a specific device. * The type of data is entirely up to the caller. For example, a particular * USB device driver may store configuration data for each specific device * under its control. */ # set the private data pointer for a device .globl UsbSetDevicePrivateData UsbSetDevicePrivateData: j $31 li $0, 0x07 # get the private data pointer for a device .globl UsbGetDevicePrivateData UsbGetDevicePrivateData: j $31 li $0, 0x08 /* * This function returns an endpoint ID for the device ID and endpoint descriptor * passed in. This endpoint ID is then used when transfering data to the device, * and to close the endpoint. */ .globl UsbOpenEndpoint UsbOpenEndpoint: j $31 li $0, 0x09 # close an endpoint .globl UsbCloseEndpoint UsbCloseEndpoint: j $31 li $0, 0x0A /* * This function is used for all types of USB data transfers. Which type of * transfer is determined by the parameters that are passed in. The types are: * control, isochronous, interrupt, and bulk transfers. More details can be * found in usbd.h. */ .globl UsbTransfer UsbTransfer: j $31 li $0, 0x0B .globl UsbOpenBulkEndpoint UsbOpenBulkEndpoint: j $31 li $0, 0x0C .word 0 .word 0