Description of controller-specific data and functions. More...
Public Attributes | |
| dd | Version |
| dd | ID |
| dd | DataSize |
| dd | BeforeInit |
| dd | Init |
| dd | ProcessDeferred |
| dd | SetDeviceAddress |
| dd | GetDeviceAddress |
| dd | PortDisable |
| dd | InitiateReset |
| dd | SetEndpointPacketSize |
| dd | AllocPipe |
| dd | FreePipe |
| dd | InitPipe |
| dd | UnlinkPipe |
| dd | AllocTD |
| dd | FreeTD |
| dd | AllocTransfer |
| dd | InsertTransfer |
| dd | NewDevice |
| dd | DisablePipe |
| dd | EnablePipe |
Description of controller-specific data and functions.
| dd usb_hardware_func::AllocPipe |
in: esi -> usb_controller, ebx -> usb_pipe, ecx = packet size
| dd usb_hardware_func::AllocTD |
esi -> usb_controller, ebx -> usb_pipe
| dd usb_hardware_func::AllocTransfer |
void stdcall with one argument = pointer to previously allocated usb_gtd
| dd usb_hardware_func::BeforeInit |
| dd usb_hardware_func::DataSize |
sizeof(*hci_controller)
| dd usb_hardware_func::DisablePipe |
Initiate configuration of a new device (create pseudo-pipe describing that device and call usb_new_device). esi -> usb_controller, eax = speed (one of USB_SPEED_* constants).
| dd usb_hardware_func::EnablePipe |
This procedure temporarily removes the given pipe from hardware queue. esi -> usb_controller, ebx -> usb_pipe
| dd usb_hardware_func::FreePipe |
out: eax = pointer to allocated usb_pipe
| dd usb_hardware_func::FreeTD |
out: eax = pointer to allocated usb_gtd
| dd usb_hardware_func::GetDeviceAddress |
in: esi -> usb_controller, ebx -> usb_pipe, cl = address
| dd usb_hardware_func::ID |
'*HCI'
| dd usb_hardware_func::Init |
Early initialization: take ownership from BIOS. in: [ebp-4] = (bus shl 8) + devfn
| dd usb_hardware_func::InitiateReset |
Disable the given port in the root hub. in: esi -> usb_controller, ecx = port (zero-based)
| dd usb_hardware_func::InitPipe |
void stdcall with one argument = pointer to previously allocated usb_pipe
| dd usb_hardware_func::InsertTransfer |
Allocate and initialize one stage of a transfer. ebx -> usb_pipe, other parameters are passed through the stack: buffer,size = data to transfer flags = same as in usb_open_pipe: bit 0 = allow short transfer, other bits reserved td = pointer to the current end-of-queue descriptor direction = 0000b for normal transfers, 1000b for control SETUP transfer, 1101b for control OUT transfer, 1110b for control IN transfer returns eax = pointer to the new end-of-queue descriptor (not included in the queue itself) or 0 on error
| dd usb_hardware_func::NewDevice |
Activate previously initialized transfer (maybe with multiple stages). esi -> usb_controller, ebx -> usb_pipe, [esp+4] -> first usb_gtd for the transfer, ecx -> last descriptor for the transfer
| dd usb_hardware_func::PortDisable |
in: esi -> usb_controller, ebx -> usb_pipe out: eax = address
| dd usb_hardware_func::ProcessDeferred |
Initialize controller-specific part of controller data. in: eax -> *hci_controller to initialize, [ebp-4] = (bus shl 8) + devfn out: eax = 0 <=> failed, otherwise eax -> usb_controller
| dd usb_hardware_func::SetDeviceAddress |
Called regularly from the main loop of USB thread (either due to timeout from a previous call, or due to explicit wakeup). in: esi -> usb_controller out: eax = maximum timeout for next call (-1 = infinity)
| dd usb_hardware_func::SetEndpointPacketSize |
Start reset signalling on the given port. in: esi -> usb_controller, ecx = port (zero-based)
| dd usb_hardware_func::UnlinkPipe |
in: edi -> usb_pipe for target, ecx -> usb_pipe for config pipe, esi -> usb_controller, eax -> usb_gtd for the first TD, [ebp+12] = endpoint, [ebp+16] = maxpacket, [ebp+20] = type
| dd usb_hardware_func::Version |
must be USBHC_VERSION