diff options
Diffstat (limited to 'src/VBox/Devices/EFI/Firmware/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.h')
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.h | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/src/VBox/Devices/EFI/Firmware/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.h b/src/VBox/Devices/EFI/Firmware/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.h new file mode 100644 index 00000000..4138bf61 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.h @@ -0,0 +1,197 @@ +/** @file + + USB bus enumeration interface. + +Copyright (c) 2007, Intel Corporation. All rights reserved.<BR> +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _USB_ENUMERATION_H_ +#define _USB_ENUMERATION_H_ + +// +// Advance the byte and bit to the next bit, adjust byte accordingly. +// +#define USB_NEXT_BIT(Byte, Bit) \ + do { \ + (Bit)++; \ + if ((Bit) > 7) { \ + (Byte)++; \ + (Bit) = 0; \ + } \ + } while (0) + + +// +// Common interface used by usb bus enumeration process. +// This interface is defined to mask the difference between +// the root hub and normal hub. So, bus enumeration code +// can be shared by both root hub and normal hub +// +typedef +EFI_STATUS +(*USB_HUB_INIT) ( + IN USB_INTERFACE *UsbIf + ); + +// +// Get the port status. This function is required to +// ACK the port change bits although it will return +// the port changes in PortState. Bus enumeration code +// doesn't need to ACK the port change bits. +// +typedef +EFI_STATUS +(*USB_HUB_GET_PORT_STATUS) ( + IN USB_INTERFACE *UsbIf, + IN UINT8 Port, + OUT EFI_USB_PORT_STATUS *PortState + ); + +typedef +VOID +(*USB_HUB_CLEAR_PORT_CHANGE) ( + IN USB_INTERFACE *HubIf, + IN UINT8 Port + ); + +typedef +EFI_STATUS +(*USB_HUB_SET_PORT_FEATURE) ( + IN USB_INTERFACE *UsbIf, + IN UINT8 Port, + IN EFI_USB_PORT_FEATURE Feature + ); + +typedef +EFI_STATUS +(*USB_HUB_CLEAR_PORT_FEATURE) ( + IN USB_INTERFACE *UsbIf, + IN UINT8 Port, + IN EFI_USB_PORT_FEATURE Feature + ); + +typedef +EFI_STATUS +(*USB_HUB_RESET_PORT) ( + IN USB_INTERFACE *UsbIf, + IN UINT8 Port + ); + +typedef +EFI_STATUS +(*USB_HUB_RELEASE) ( + IN USB_INTERFACE *UsbIf + ); + +/** + Return the endpoint descriptor in this interface. + + @param UsbIf The interface to search in. + @param EpAddr The address of the endpoint to return. + + @return The endpoint descriptor or NULL. + +**/ +USB_ENDPOINT_DESC* +UsbGetEndpointDesc ( + IN USB_INTERFACE *UsbIf, + IN UINT8 EpAddr + ); + +/** + Select an alternate setting for the interface. + Each interface can have several mutually exclusive + settings. Only one setting is active. It will + also reset its endpoints' toggle to zero. + + @param IfDesc The interface descriptor to set. + @param Alternate The alternate setting number to locate. + + @retval EFI_NOT_FOUND There is no setting with this alternate index. + @retval EFI_SUCCESS The interface is set to Alternate setting. + +**/ +EFI_STATUS +UsbSelectSetting ( + IN USB_INTERFACE_DESC *IfDesc, + IN UINT8 Alternate + ); + +/** + Select a new configuration for the device. Each + device may support several configurations. + + @param Device The device to select configuration. + @param ConfigIndex The index of the configuration ( != 0). + + @retval EFI_NOT_FOUND There is no configuration with the index. + @retval EFI_OUT_OF_RESOURCES Failed to allocate resource. + @retval EFI_SUCCESS The configuration is selected. + +**/ +EFI_STATUS +UsbSelectConfig ( + IN USB_DEVICE *Device, + IN UINT8 ConfigIndex + ); + +/** + Remove the current device configuration. + + @param Device The USB device to remove configuration from. + + @return None. + +**/ +EFI_STATUS +UsbRemoveConfig ( + IN USB_DEVICE *Device + ); + +/** + Remove the device and all its children from the bus. + + @param Device The device to remove. + + @retval EFI_SUCCESS The device is removed. + +**/ +EFI_STATUS +UsbRemoveDevice ( + IN USB_DEVICE *Device + ); + +/** + Enumerate all the changed hub ports. + + @param Event The event that is triggered. + @param Context The context to the event. + + @return None. + +**/ +VOID +EFIAPI +UsbHubEnumeration ( + IN EFI_EVENT Event, + IN VOID *Context + ); + +/** + Enumerate all the changed hub ports. + + @param Event The event that is triggered. + @param Context The context to the event. + + @return None. + +**/ +VOID +EFIAPI +UsbRootHubEnumeration ( + IN EFI_EVENT Event, + IN VOID *Context + ); +#endif |