iPXE
|
EFI USB I/O PROTOCOL. More...
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <assert.h>
#include <ipxe/efi/efi.h>
#include <ipxe/efi/efi_path.h>
#include <ipxe/efi/efi_driver.h>
#include <ipxe/efi/efi_null.h>
#include <ipxe/efi/efi_usb.h>
#include <ipxe/usb.h>
Go to the source code of this file.
Functions | |
FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
static const char * | efi_usb_direction_name (EFI_USB_DATA_DIRECTION direction) |
Transcribe data direction (for debugging) More... | |
static VOID EFIAPI | efi_usb_timer (EFI_EVENT event __unused, VOID *context) |
Poll USB bus (from endpoint event timer) More... | |
static int | efi_usb_mtu (struct efi_usb_interface *usbintf, unsigned int endpoint) |
Get endpoint MTU. More... | |
static int | efi_usb_is_open (struct efi_usb_interface *usbintf, unsigned int endpoint) |
Check if endpoint is open. More... | |
static int | efi_usb_open (struct efi_usb_interface *usbintf, unsigned int endpoint, unsigned int attributes, unsigned int interval, struct usb_endpoint_driver_operations *driver) |
Open endpoint. More... | |
static void | efi_usb_close (struct efi_usb_endpoint *usbep) |
Close endpoint. More... | |
static void | efi_usb_close_all (struct efi_usb_interface *usbintf) |
Close all endpoints. More... | |
static void | efi_usb_free_all (struct efi_usb_interface *usbintf) |
Free all endpoints. More... | |
static void | efi_usb_sync_complete (struct usb_endpoint *ep, struct io_buffer *iobuf __unused, int rc) |
Complete synchronous transfer. More... | |
static int | efi_usb_sync_transfer (struct efi_usb_interface *usbintf, unsigned int endpoint, unsigned int attributes, unsigned int timeout, void *data, size_t *len) |
Perform synchronous transfer. More... | |
static void | efi_usb_async_complete (struct usb_endpoint *ep, struct io_buffer *iobuf, int rc) |
Complete asynchronous transfer. More... | |
static int | efi_usb_async_start (struct efi_usb_interface *usbintf, unsigned int endpoint, unsigned int interval, size_t len, EFI_ASYNC_USB_TRANSFER_CALLBACK callback, void *context) |
Start asynchronous transfer. More... | |
static void | efi_usb_async_stop (struct efi_usb_interface *usbintf, unsigned int endpoint) |
Stop asynchronous transfer. More... | |
static EFI_STATUS EFIAPI | efi_usb_control_transfer (EFI_USB_IO_PROTOCOL *usbio, EFI_USB_DEVICE_REQUEST *packet, EFI_USB_DATA_DIRECTION direction, UINT32 timeout, VOID *data, UINTN len, UINT32 *status) |
Perform control transfer. More... | |
static EFI_STATUS EFIAPI | efi_usb_bulk_transfer (EFI_USB_IO_PROTOCOL *usbio, UINT8 endpoint, VOID *data, UINTN *len, UINTN timeout, UINT32 *status) |
Perform bulk transfer. More... | |
static EFI_STATUS EFIAPI | efi_usb_sync_interrupt_transfer (EFI_USB_IO_PROTOCOL *usbio, UINT8 endpoint, VOID *data, UINTN *len, UINTN timeout, UINT32 *status) |
Perform synchronous interrupt transfer. More... | |
static EFI_STATUS EFIAPI | efi_usb_async_interrupt_transfer (EFI_USB_IO_PROTOCOL *usbio, UINT8 endpoint, BOOLEAN start, UINTN interval, UINTN len, EFI_ASYNC_USB_TRANSFER_CALLBACK callback, VOID *context) |
Perform asynchronous interrupt transfer. More... | |
static EFI_STATUS EFIAPI | efi_usb_isochronous_transfer (EFI_USB_IO_PROTOCOL *usbio, UINT8 endpoint, VOID *data, UINTN len, UINT32 *status) |
Perform synchronous isochronous transfer. More... | |
static EFI_STATUS EFIAPI | efi_usb_async_isochronous_transfer (EFI_USB_IO_PROTOCOL *usbio, UINT8 endpoint, VOID *data, UINTN len, EFI_ASYNC_USB_TRANSFER_CALLBACK callback, VOID *context) |
Perform asynchronous isochronous transfers. More... | |
static EFI_STATUS EFIAPI | efi_usb_get_device_descriptor (EFI_USB_IO_PROTOCOL *usbio, EFI_USB_DEVICE_DESCRIPTOR *efidesc) |
Get device descriptor. More... | |
static EFI_STATUS EFIAPI | efi_usb_get_config_descriptor (EFI_USB_IO_PROTOCOL *usbio, EFI_USB_CONFIG_DESCRIPTOR *efidesc) |
Get configuration descriptor. More... | |
static EFI_STATUS EFIAPI | efi_usb_get_interface_descriptor (EFI_USB_IO_PROTOCOL *usbio, EFI_USB_INTERFACE_DESCRIPTOR *efidesc) |
Get interface descriptor. More... | |
static EFI_STATUS EFIAPI | efi_usb_get_endpoint_descriptor (EFI_USB_IO_PROTOCOL *usbio, UINT8 index, EFI_USB_ENDPOINT_DESCRIPTOR *efidesc) |
Get endpoint descriptor. More... | |
static EFI_STATUS EFIAPI | efi_usb_get_string_descriptor (EFI_USB_IO_PROTOCOL *usbio, UINT16 language, UINT8 index, CHAR16 **string) |
Get string descriptor. More... | |
static EFI_STATUS EFIAPI | efi_usb_get_supported_languages (EFI_USB_IO_PROTOCOL *usbio, UINT16 **languages, UINT16 *len) |
Get supported languages. More... | |
static EFI_STATUS EFIAPI | efi_usb_port_reset (EFI_USB_IO_PROTOCOL *usbio) |
Reset port. More... | |
static int | efi_usb_install (struct efi_usb_device *usbdev, unsigned int interface) |
Install interface. More... | |
static void | efi_usb_uninstall (struct efi_usb_interface *usbintf) |
Uninstall interface. More... | |
static void | efi_usb_uninstall_all (struct efi_usb_device *efiusb) |
Uninstall all interfaces. More... | |
static int | efi_usb_probe (struct usb_function *func, struct usb_configuration_descriptor *config) |
Probe device. More... | |
static void | efi_usb_remove (struct usb_function *func) |
Remove device. More... | |
Variables | |
static struct usb_endpoint_driver_operations | efi_usb_sync_driver |
Synchronous endpoint operations. More... | |
static struct usb_endpoint_driver_operations | efi_usb_async_driver |
Asynchronous endpoint operations. More... | |
static EFI_USB_IO_PROTOCOL | efi_usb_io_protocol |
USB I/O protocol. More... | |
static struct usb_device_id | efi_usb_ids [] |
USB I/O protocol device IDs. More... | |
struct usb_driver usbio_driver | __usb_fallback_driver |
USB I/O protocol driver. More... | |
EFI USB I/O PROTOCOL.
Definition in file efi_usb.c.
FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
|
static |
Transcribe data direction (for debugging)
direction | Data direction |
text | Transcribed data direction |
Definition at line 51 of file efi_usb.c.
References direction, EfiUsbDataIn, EfiUsbDataOut, and EfiUsbNoData.
Referenced by efi_usb_control_transfer().
Poll USB bus (from endpoint event timer)
event | EFI event |
context | EFI USB endpoint |
Definition at line 74 of file efi_usb.c.
References usb_hub::bus, efi_usb_endpoint::context, efi_usb_endpoint::ep, efi_usb_device::func, usb_port::hub, usb_endpoint::open, usb_device::port, usb_function::usb, usb_poll(), usb_refill(), efi_usb_interface::usbdev, and efi_usb_endpoint::usbintf.
Referenced by efi_usb_open().
|
static |
Get endpoint MTU.
usbintf | EFI USB interface |
endpoint | Endpoint address |
mtu | Endpoint MTU, or negative error |
Definition at line 94 of file efi_usb.c.
References alternate, usb_interface_descriptor::alternate, DBGC, desc, ENOENT, for_each_interface_descriptor, usb_interface_descriptor::interface, le16_to_cpu, usb_interface_descriptor::name, USB_ENDPOINT_MTU, and efi_usb_interface::usbdev.
Referenced by efi_usb_open().
|
static |
Check if endpoint is open.
usbintf | EFI USB interface |
endpoint | Endpoint address |
is_open | Endpoint is open |
Definition at line 129 of file efi_usb.c.
References efi_usb_interface::endpoint, efi_usb_endpoint::ep, index, usb_endpoint::open, USB_ENDPOINT_IDX, and efi_usb_endpoint::usbintf.
Referenced by efi_usb_async_start(), efi_usb_async_stop(), and efi_usb_sync_transfer().
|
static |
Open endpoint.
usbintf | EFI USB interface |
endpoint | Endpoint address |
attributes | Endpoint attributes |
interval | Interval (in milliseconds) |
driver | Driver operations |
rc | Return status code |
Definition at line 147 of file efi_usb.c.
References EFI_SYSTEM_TABLE::BootServices, EFI_BOOT_SERVICES::CloseEvent, EFI_BOOT_SERVICES::CreateEvent, DBGC, EEFI, efi_systab, efi_usb_mtu(), efi_usb_timer(), efi_usb_interface::endpoint, ENOMEM, efi_usb_endpoint::ep, efi_usb_endpoint::event, EVT_NOTIFY_SIGNAL, EVT_TIMER, efi_usb_device::func, index, mtu, efi_usb_interface::name, rc, strerror(), TPL_CALLBACK, usb_function::usb, usb_endpoint_close(), usb_endpoint_describe(), USB_ENDPOINT_IDX, usb_endpoint_init(), usb_endpoint_name(), usb_endpoint_open(), efi_usb_interface::usbdev, efi_usb_endpoint::usbintf, and zalloc().
Referenced by efi_usb_async_start(), and efi_usb_sync_transfer().
|
static |
Close endpoint.
usbep | EFI USB endpoint |
Definition at line 224 of file efi_usb.c.
References usb_endpoint::address, assert(), EFI_SYSTEM_TABLE::BootServices, EFI_BOOT_SERVICES::CloseEvent, DBGC, efi_systab, efi_usb_interface::endpoint, efi_usb_endpoint::ep, efi_usb_endpoint::event, index, efi_usb_interface::name, EFI_BOOT_SERVICES::SetTimer, TimerCancel, usb_endpoint_close(), USB_ENDPOINT_IDX, usb_endpoint_name(), efi_usb_interface::usbdev, and efi_usb_endpoint::usbintf.
Referenced by efi_usb_async_start(), efi_usb_close_all(), and efi_usb_sync_transfer().
|
static |
Close all endpoints.
usbintf | EFI USB interface |
Definition at line 248 of file efi_usb.c.
References efi_usb_close(), efi_usb_interface::endpoint, efi_usb_endpoint::ep, usb_endpoint::open, and efi_usb_endpoint::usbintf.
Referenced by efi_usb_control_transfer(), efi_usb_install(), and efi_usb_uninstall().
|
static |
Free all endpoints.
usbintf | EFI USB interface |
Definition at line 265 of file efi_usb.c.
References assert(), efi_usb_interface::endpoint, efi_usb_endpoint::ep, free, NULL, usb_endpoint::open, and efi_usb_endpoint::usbintf.
Referenced by efi_usb_install(), and efi_usb_uninstall().
|
static |
Complete synchronous transfer.
ep | USB endpoint |
iobuf | I/O buffer |
rc | Completion status code |
Definition at line 287 of file efi_usb.c.
References container_of, efi_usb_endpoint::ep, efi_usb_endpoint::rc, and rc.
|
static |
Perform synchronous transfer.
usbintf | USB endpoint |
endpoint | Endpoint address |
attributes | Endpoint attributes |
timeout | Timeout (in milliseconds) |
data | Data buffer |
len | Length of data buffer |
rc | Return status code |
Definition at line 312 of file efi_usb.c.
References alloc_iob(), assert(), usb_hub::bus, data, io_buffer::data, DBGC, efi_usb_close(), efi_usb_is_open(), efi_usb_open(), efi_usb_sync_driver, EFIRC, EINPROGRESS, efi_usb_interface::endpoint, ENOMEM, efi_usb_endpoint::ep, ETIMEDOUT, free_iob(), efi_usb_device::func, usb_port::hub, index, iob_len(), iob_put, len, mdelay(), memcpy(), efi_usb_interface::name, usb_device::port, efi_usb_endpoint::rc, rc, strerror(), timeout(), usb_function::usb, USB_ENDPOINT_IDX, USB_ENDPOINT_IN, usb_endpoint_name(), usb_poll(), usb_stream(), and efi_usb_interface::usbdev.
Referenced by efi_usb_bulk_transfer(), and efi_usb_sync_interrupt_transfer().
|
static |
Complete asynchronous transfer.
ep | USB endpoint |
iobuf | I/O buffer |
rc | Completion status code |
Definition at line 405 of file efi_usb.c.
References efi_usb_endpoint::callback, container_of, efi_usb_endpoint::context, io_buffer::data, EFI_USB_ERR_SYSTEM, efi_usb_endpoint::ep, free_iob(), iob_len(), usb_endpoint::open, rc, status, and usb_recycle().
|
static |
Start asynchronous transfer.
usbintf | EFI USB interface |
endpoint | Endpoint address |
interval | Interval (in milliseconds) |
len | Transfer length |
callback | Callback function |
context | Context for callback function |
rc | Return status code |
Definition at line 449 of file efi_usb.c.
References EFI_SYSTEM_TABLE::BootServices, efi_usb_endpoint::callback, efi_usb_endpoint::context, DBGC, EEFI, efi_systab, efi_usb_async_driver, EFI_USB_ASYNC_FILL, efi_usb_close(), efi_usb_is_open(), efi_usb_open(), efi_usb_interface::endpoint, efi_usb_endpoint::ep, efi_usb_endpoint::event, index, len, efi_usb_interface::name, NULL, rc, EFI_BOOT_SERVICES::SetTimer, strerror(), TimerCancel, TimerPeriodic, USB_ENDPOINT_ATTR_INTERRUPT, USB_ENDPOINT_IDX, usb_endpoint_name(), usb_prefill(), usb_refill_init(), efi_usb_interface::usbdev, and efi_usb_endpoint::usbintf.
Referenced by efi_usb_async_interrupt_transfer().
|
static |
Stop asynchronous transfer.
usbintf | EFI USB interface |
endpoint | Endpoint address |
Definition at line 513 of file efi_usb.c.
References EFI_SYSTEM_TABLE::BootServices, efi_usb_endpoint::callback, efi_usb_endpoint::context, efi_systab, efi_usb_is_open(), efi_usb_interface::endpoint, efi_usb_endpoint::event, index, NULL, EFI_BOOT_SERVICES::SetTimer, TimerCancel, USB_ENDPOINT_IDX, and efi_usb_endpoint::usbintf.
Referenced by efi_usb_async_interrupt_transfer().
|
static |
Perform control transfer.
usbio | USB I/O protocol |
packet | Setup packet |
direction | Data direction |
timeout | Timeout (in milliseconds) |
data | Data buffer |
len | Length of data |
status | Transfer status |
efirc | EFI status code |
Definition at line 552 of file efi_usb.c.
References efi_usb_interface::alternate, efi_usb_device::config, usb_configuration_descriptor::config, container_of, data, DBGC, DBGC2, direction, efi_raise_tpl(), efi_restore_tpl(), efi_usb_close_all(), efi_usb_direction_name(), EFI_USB_ERR_SYSTEM, EFIRC, ENOTSUP, efi_usb_device::func, index, USB_DEVICE_REQUEST::Index, le16_to_cpu, len, USB_DEVICE_REQUEST::Length, efi_usb_interface::name, rc, request, USB_DEVICE_REQUEST::Request, USB_DEVICE_REQUEST::RequestType, status, strerror(), timeout(), usb_function::usb, usb_control(), USB_REQUEST_TYPE, USB_SET_CONFIGURATION, USB_SET_INTERFACE, efi_usb_interface::usbdev, efi_usb_interface::usbio, value, and USB_DEVICE_REQUEST::Value.
|
static |
Perform bulk transfer.
usbio | USB I/O protocol |
endpoint | Endpoint address |
data | Data buffer |
len | Length of data |
timeout | Timeout (in milliseconds) |
status | Transfer status |
efirc | EFI status code |
Definition at line 634 of file efi_usb.c.
References container_of, data, DBGC2, efi_raise_tpl(), efi_restore_tpl(), EFI_USB_ERR_TIMEOUT, efi_usb_sync_transfer(), EFIRC, len, efi_usb_interface::name, rc, status, timeout(), USB_ENDPOINT_ATTR_BULK, USB_ENDPOINT_IN, efi_usb_interface::usbdev, and efi_usb_interface::usbio.
|
static |
Perform synchronous interrupt transfer.
usbio | USB I/O protocol |
endpoint | Endpoint address |
data | Data buffer |
len | Length of data |
timeout | Timeout (in milliseconds) |
status | Transfer status |
efirc | EFI status code |
Definition at line 679 of file efi_usb.c.
References container_of, data, DBGC2, efi_raise_tpl(), efi_restore_tpl(), EFI_USB_ERR_TIMEOUT, efi_usb_sync_transfer(), EFIRC, len, efi_usb_interface::name, rc, status, timeout(), USB_ENDPOINT_ATTR_INTERRUPT, USB_ENDPOINT_IN, efi_usb_interface::usbdev, and efi_usb_interface::usbio.
|
static |
Perform asynchronous interrupt transfer.
usbio | USB I/O protocol |
endpoint | Endpoint address |
start | Start (rather than stop) transfer |
interval | Polling interval (in milliseconds) |
len | Data length |
callback | Callback function |
context | Context for callback function |
efirc | EFI status code |
Definition at line 726 of file efi_usb.c.
References container_of, DBGC2, efi_raise_tpl(), efi_restore_tpl(), efi_usb_async_start(), efi_usb_async_stop(), EFIRC, len, efi_usb_interface::name, rc, start, USB_ENDPOINT_IN, efi_usb_interface::usbdev, and efi_usb_interface::usbio.
|
static |
Perform synchronous isochronous transfer.
usbio | USB I/O protocol |
endpoint | Endpoint address |
data | Data buffer |
len | Length of data |
status | Transfer status |
efirc | EFI status code |
Definition at line 780 of file efi_usb.c.
References container_of, data, DBGC2, EFI_UNSUPPORTED, len, efi_usb_interface::name, status, USB_ENDPOINT_IN, efi_usb_interface::usbdev, and efi_usb_interface::usbio.
|
static |
Perform asynchronous isochronous transfers.
usbio | USB I/O protocol |
endpoint | Endpoint address |
data | Data buffer |
len | Length of data |
callback | Callback function |
context | Context for callback function |
status | Transfer status |
efirc | EFI status code |
Definition at line 810 of file efi_usb.c.
References container_of, data, DBGC2, EFI_UNSUPPORTED, len, efi_usb_interface::name, USB_ENDPOINT_IN, efi_usb_interface::usbdev, and efi_usb_interface::usbio.
|
static |
Get device descriptor.
usbio | USB I/O protocol |
efidesc | EFI device descriptor |
efirc | EFI status code |
Definition at line 834 of file efi_usb.c.
References container_of, DBGC2, usb_device::device, efi_usb_device::func, memcpy(), efi_usb_interface::name, usb_function::usb, efi_usb_interface::usbdev, and efi_usb_interface::usbio.
|
static |
Get configuration descriptor.
usbio | USB I/O protocol |
efidesc | EFI interface descriptor |
efirc | EFI status code |
Definition at line 856 of file efi_usb.c.
References efi_usb_device::config, container_of, DBGC2, memcpy(), efi_usb_interface::name, efi_usb_interface::usbdev, and efi_usb_interface::usbio.
|
static |
Get interface descriptor.
usbio | USB I/O protocol |
efidesc | EFI interface descriptor |
efirc | EFI status code |
Definition at line 879 of file efi_usb.c.
References efi_usb_interface::alternate, efi_usb_device::config, container_of, DBGC, DBGC2, desc, ENOENT, efi_usb_interface::interface, memcpy(), efi_usb_interface::name, usb_interface_descriptor(), efi_usb_interface::usbdev, and efi_usb_interface::usbio.
|
static |
Get endpoint descriptor.
usbio | USB I/O protocol |
address | Endpoint index |
efidesc | EFI interface descriptor |
efirc | EFI status code |
Definition at line 912 of file efi_usb.c.
References alternate, usb_interface_descriptor::alternate, container_of, DBGC, DBGC2, desc, ENOENT, for_each_interface_descriptor, index, usb_interface_descriptor::interface, memcpy(), efi_usb_interface::name, usb_interface_descriptor::name, efi_usb_interface::usbdev, and efi_usb_interface::usbio.
|
static |
Get string descriptor.
usbio | USB I/O protocol |
language | Language ID |
index | String index |
string | String |
efirc | EFI status code |
Definition at line 954 of file efi_usb.c.
References EFI_BOOT_SERVICES::AllocatePool, EFI_SYSTEM_TABLE::BootServices, buffer, container_of, DBGC, DBGC2, EEFI, efi_raise_tpl(), efi_restore_tpl(), efi_systab, EfiBootServicesData, EFIRC, EINVAL, EFI_BOOT_SERVICES::FreePool, efi_usb_device::func, header, index, len, memmove(), memset(), efi_usb_interface::name, rc, strerror(), usb_function::usb, usb_get_descriptor(), USB_STRING_DESCRIPTOR, efi_usb_interface::usbdev, efi_usb_interface::usbio, and VOID.
|
static |
Get supported languages.
usbio | USB I/O protocol |
languages | Language ID table |
len | Length of language ID table |
efirc | EFI status code |
Definition at line 1038 of file efi_usb.c.
References container_of, DBGC2, efi_usb_device::lang, efi_usb_device::lang_len, len, efi_usb_interface::name, efi_usb_interface::usbdev, and efi_usb_interface::usbio.
|
static |
Reset port.
usbio | USB I/O protocol |
efirc | EFI status code |
Definition at line 1060 of file efi_usb.c.
References container_of, DBGC2, EFI_INVALID_PARAMETER, efi_usb_interface::name, efi_usb_interface::usbdev, and efi_usb_interface::usbio.
|
static |
Install interface.
usbdev | EFI USB device |
interface | Interface number |
rc | Return status code |
Definition at line 1107 of file efi_usb.c.
References EFI_SYSTEM_TABLE::BootServices, DBGC, EEFI, efi_device_path_protocol_guid, efi_handle_name(), efi_nullify_usbio(), efi_systab, efi_usb_close_all(), efi_usb_free_all(), efi_usb_io_protocol, efi_usb_io_protocol_guid, efi_usb_path(), ENODEV, ENOMEM, free, efi_usb_device::func, efi_usb_interface::handle, EFI_BOOT_SERVICES::InstallMultipleProtocolInterfaces, efi_usb_interface::interface, efi_usb_device::interfaces, efi_usb_interface::list, list_add_tail, list_del, memcpy(), efi_usb_device::name, efi_usb_interface::name, NULL, efi_usb_interface::path, rc, snprintf(), strerror(), EFI_BOOT_SERVICES::UninstallMultipleProtocolInterfaces, efi_usb_interface::usbdev, efi_usb_interface::usbio, and zalloc().
Referenced by efi_usb_probe().
|
static |
Uninstall interface.
usbintf | EFI USB interface |
Definition at line 1187 of file efi_usb.c.
References EFI_SYSTEM_TABLE::BootServices, DBGC, EFI_BOOT_SERVICES::DisconnectController, EEFI, efi_device_path_protocol_guid, efi_handle_name(), efi_nullify_usbio(), efi_shutdown_in_progress, efi_systab, efi_usb_close_all(), efi_usb_free_all(), efi_usb_io_protocol_guid, free, efi_usb_interface::handle, efi_usb_interface::list, list_del, efi_usb_interface::name, NULL, efi_usb_interface::path, strerror(), EFI_BOOT_SERVICES::UninstallMultipleProtocolInterfaces, efi_usb_interface::usbdev, and efi_usb_interface::usbio.
Referenced by efi_usb_uninstall_all().
|
static |
Uninstall all interfaces.
usbdev | EFI USB device |
Definition at line 1243 of file efi_usb.c.
References efi_usb_uninstall(), efi_usb_device::interfaces, efi_usb_interface::list, and list_first_entry.
Referenced by efi_usb_probe(), and efi_usb_remove().
|
static |
Probe device.
func | USB function |
config | Configuration descriptor |
rc | Return status code |
Definition at line 1261 of file efi_usb.c.
References assert(), EFI_SYSTEM_TABLE::BootServices, efi_usb_device::config, EFI_BOOT_SERVICES::ConnectController, usb_function_descriptor::count, DBGC, usb_function::desc, efi_systab, efi_usb_install(), efi_usb_uninstall_all(), ENOMEM, free, efi_usb_device::func, efi_usb_interface::handle, header, INIT_LIST_HEAD, usb_function::interface, efi_usb_device::interfaces, efi_usb_device::lang, efi_usb_device::lang_len, le16_to_cpu, usb_configuration_descriptor::len, list_empty, list_for_each_entry, memcpy(), efi_usb_device::name, usb_function::name, NULL, rc, strerror(), TRUE, usb_function::usb, usb_func_set_drvdata(), usb_get_descriptor(), USB_STRING_DESCRIPTOR, and zalloc().
|
static |
Remove device.
func | USB function |
Definition at line 1339 of file efi_usb.c.
References assert(), efi_usb_uninstall_all(), free, efi_usb_device::func, efi_usb_device::interfaces, list_empty, and usb_func_get_drvdata().
|
static |
Synchronous endpoint operations.
Definition at line 297 of file efi_usb.c.
Referenced by efi_usb_sync_transfer().
|
static |
Asynchronous endpoint operations.
Definition at line 434 of file efi_usb.c.
Referenced by efi_usb_async_start().
|
static |
USB I/O protocol.
Definition at line 1077 of file efi_usb.c.
Referenced by efi_usb_install().
|
static |
USB I/O protocol device IDs.
struct usb_driver usbio_driver __usb_fallback_driver |
USB I/O protocol driver.