#ifndef _EFI_USB_BUS_H_\r
#define _EFI_USB_BUS_H_\r
\r
-\r
#include <Uefi.h>\r
\r
#include <Protocol/Usb2HostController.h>\r
#include <Library/MemoryAllocationLib.h>\r
#include <Library/ReportStatusCodeLib.h>\r
\r
-\r
#include <IndustryStandard/Usb.h>\r
\r
typedef struct _USB_DEVICE USB_DEVICE;\r
typedef struct _USB_BUS USB_BUS;\r
typedef struct _USB_HUB_API USB_HUB_API;\r
\r
-\r
#include "UsbUtility.h"\r
#include "UsbDesc.h"\r
#include "UsbHub.h"\r
// USB bus timeout experience values\r
//\r
\r
-#define USB_MAX_LANG_ID 16\r
-#define USB_MAX_INTERFACE 16\r
-#define USB_MAX_DEVICES 128\r
+#define USB_MAX_LANG_ID 16\r
+#define USB_MAX_INTERFACE 16\r
+#define USB_MAX_DEVICES 128\r
\r
-#define USB_BUS_1_MILLISECOND 1000\r
+#define USB_BUS_1_MILLISECOND 1000\r
\r
//\r
// Roothub and hub's polling interval, set by experience,\r
// The unit of roothub is 100us, means 100ms as interval, and\r
// the unit of hub is 1ms, means 64ms as interval.\r
//\r
-#define USB_ROOTHUB_POLL_INTERVAL (100 * 10000U)\r
-#define USB_HUB_POLL_INTERVAL 64\r
+#define USB_ROOTHUB_POLL_INTERVAL (100 * 10000U)\r
+#define USB_HUB_POLL_INTERVAL 64\r
\r
//\r
// Wait for port stable to work, refers to specification\r
//\r
// Wait for port statue reg change, set by experience\r
//\r
-#define USB_WAIT_PORT_STS_CHANGE_STALL (100)\r
+#define USB_WAIT_PORT_STS_CHANGE_STALL (100)\r
\r
//\r
// Wait for set device address, refers to specification\r
// [USB20-9.2.6.3, it says 2ms]\r
//\r
-#define USB_SET_DEVICE_ADDRESS_STALL (2 * USB_BUS_1_MILLISECOND)\r
+#define USB_SET_DEVICE_ADDRESS_STALL (2 * USB_BUS_1_MILLISECOND)\r
\r
//\r
// Wait for retry max packet size, set by experience\r
// Wait for hub port power-on, refers to specification\r
// [USB20-11.23.2]\r
//\r
-#define USB_SET_PORT_POWER_STALL (2 * USB_BUS_1_MILLISECOND)\r
+#define USB_SET_PORT_POWER_STALL (2 * USB_BUS_1_MILLISECOND)\r
\r
//\r
// Wait for port reset, refers to specification\r
// Wait for port recovery to accept SetAddress, refers to specification\r
// [USB20-7.1.7.5, it says 10 ms for TRSTRCY]\r
//\r
-#define USB_SET_PORT_RECOVERY_STALL (10 * USB_BUS_1_MILLISECOND)\r
+#define USB_SET_PORT_RECOVERY_STALL (10 * USB_BUS_1_MILLISECOND)\r
\r
//\r
// Wait for clear roothub port reset, set by experience\r
//\r
// Wait for set roothub port enable, set by experience\r
//\r
-#define USB_SET_ROOT_PORT_ENABLE_STALL (20 * USB_BUS_1_MILLISECOND)\r
+#define USB_SET_ROOT_PORT_ENABLE_STALL (20 * USB_BUS_1_MILLISECOND)\r
\r
//\r
// Send general device request timeout.\r
// 50 milliseconds. We use a value of 500 milliseconds to work\r
// around slower hubs and devices.\r
//\r
-#define USB_GENERAL_DEVICE_REQUEST_TIMEOUT 500\r
+#define USB_GENERAL_DEVICE_REQUEST_TIMEOUT 500\r
\r
//\r
// Send clear feature request timeout, set by experience\r
// Bus raises TPL to TPL_NOTIFY to serialize all its operations\r
// to protect shared data structures.\r
//\r
-#define USB_BUS_TPL TPL_NOTIFY\r
+#define USB_BUS_TPL TPL_NOTIFY\r
\r
-#define USB_INTERFACE_SIGNATURE SIGNATURE_32 ('U', 'S', 'B', 'I')\r
-#define USB_BUS_SIGNATURE SIGNATURE_32 ('U', 'S', 'B', 'B')\r
+#define USB_INTERFACE_SIGNATURE SIGNATURE_32 ('U', 'S', 'B', 'I')\r
+#define USB_BUS_SIGNATURE SIGNATURE_32 ('U', 'S', 'B', 'B')\r
\r
-#define USB_BIT(a) ((UINTN)(1 << (a)))\r
-#define USB_BIT_IS_SET(Data, Bit) ((BOOLEAN)(((Data) & (Bit)) == (Bit)))\r
+#define USB_BIT(a) ((UINTN)(1 << (a)))\r
+#define USB_BIT_IS_SET(Data, Bit) ((BOOLEAN)(((Data) & (Bit)) == (Bit)))\r
\r
#define USB_INTERFACE_FROM_USBIO(a) \\r
CR(a, USB_INTERFACE, UsbIo, USB_INTERFACE_SIGNATURE)\r
// gEfiCallerIdGuid will be used as its protocol guid.\r
//\r
typedef struct _EFI_USB_BUS_PROTOCOL {\r
- UINT64 Reserved;\r
+ UINT64 Reserved;\r
} EFI_USB_BUS_PROTOCOL;\r
\r
-\r
//\r
// Stands for the real USB device. Each device may\r
// has several separately working interfaces.\r
//\r
struct _USB_DEVICE {\r
- USB_BUS *Bus;\r
+ USB_BUS *Bus;\r
\r
//\r
// Configuration information\r
//\r
- UINT8 Speed;\r
- UINT8 Address;\r
- UINT32 MaxPacket0;\r
+ UINT8 Speed;\r
+ UINT8 Address;\r
+ UINT32 MaxPacket0;\r
\r
//\r
// The device's descriptors and its configuration\r
//\r
- USB_DEVICE_DESC *DevDesc;\r
- USB_CONFIG_DESC *ActiveConfig;\r
+ USB_DEVICE_DESC *DevDesc;\r
+ USB_CONFIG_DESC *ActiveConfig;\r
\r
- UINT16 LangId [USB_MAX_LANG_ID];\r
- UINT16 TotalLangId;\r
+ UINT16 LangId[USB_MAX_LANG_ID];\r
+ UINT16 TotalLangId;\r
\r
- UINT8 NumOfInterface;\r
- USB_INTERFACE *Interfaces [USB_MAX_INTERFACE];\r
+ UINT8 NumOfInterface;\r
+ USB_INTERFACE *Interfaces[USB_MAX_INTERFACE];\r
\r
//\r
// Parent child relationship\r
//\r
- EFI_USB2_HC_TRANSACTION_TRANSLATOR Translator;\r
+ EFI_USB2_HC_TRANSACTION_TRANSLATOR Translator;\r
\r
- UINT8 ParentAddr;\r
- USB_INTERFACE *ParentIf;\r
- UINT8 ParentPort; // Start at 0\r
- UINT8 Tier;\r
- BOOLEAN DisconnectFail;\r
+ UINT8 ParentAddr;\r
+ USB_INTERFACE *ParentIf;\r
+ UINT8 ParentPort; // Start at 0\r
+ UINT8 Tier;\r
+ BOOLEAN DisconnectFail;\r
};\r
\r
//\r
// Stands for different functions of USB device\r
//\r
struct _USB_INTERFACE {\r
- UINTN Signature;\r
- USB_DEVICE *Device;\r
- USB_INTERFACE_DESC *IfDesc;\r
- USB_INTERFACE_SETTING *IfSetting;\r
+ UINTN Signature;\r
+ USB_DEVICE *Device;\r
+ USB_INTERFACE_DESC *IfDesc;\r
+ USB_INTERFACE_SETTING *IfSetting;\r
\r
//\r
// Handles and protocols\r
//\r
- EFI_HANDLE Handle;\r
- EFI_USB_IO_PROTOCOL UsbIo;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
- BOOLEAN IsManaged;\r
+ EFI_HANDLE Handle;\r
+ EFI_USB_IO_PROTOCOL UsbIo;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ BOOLEAN IsManaged;\r
\r
//\r
// Hub device special data\r
//\r
- BOOLEAN IsHub;\r
- USB_HUB_API *HubApi;\r
- UINT8 NumOfPort;\r
- EFI_EVENT HubNotify;\r
+ BOOLEAN IsHub;\r
+ USB_HUB_API *HubApi;\r
+ UINT8 NumOfPort;\r
+ EFI_EVENT HubNotify;\r
\r
//\r
// Data used only by normal hub devices\r
//\r
- USB_ENDPOINT_DESC *HubEp;\r
- UINT8 *ChangeMap;\r
+ USB_ENDPOINT_DESC *HubEp;\r
+ UINT8 *ChangeMap;\r
\r
//\r
// Data used only by root hub to hand over device to\r
// companion UHCI driver if low/full speed devices are\r
// connected to EHCI.\r
//\r
- UINT8 MaxSpeed;\r
+ UINT8 MaxSpeed;\r
};\r
\r
//\r
// Stands for the current USB Bus\r
//\r
struct _USB_BUS {\r
- UINTN Signature;\r
- EFI_USB_BUS_PROTOCOL BusId;\r
+ UINTN Signature;\r
+ EFI_USB_BUS_PROTOCOL BusId;\r
\r
//\r
// Managed USB host controller\r
//\r
- EFI_HANDLE HostHandle;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
- EFI_USB2_HC_PROTOCOL *Usb2Hc;\r
- EFI_USB_HC_PROTOCOL *UsbHc;\r
+ EFI_HANDLE HostHandle;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ EFI_USB2_HC_PROTOCOL *Usb2Hc;\r
+ EFI_USB_HC_PROTOCOL *UsbHc;\r
\r
//\r
// Recorded the max supported usb devices.\r
// XHCI can support up to 255 devices.\r
// EHCI/UHCI/OHCI supports up to 127 devices.\r
//\r
- UINT32 MaxDevices;\r
+ UINT32 MaxDevices;\r
//\r
// An array of device that is on the bus. Devices[0] is\r
// for root hub. Device with address i is at Devices[i].\r
//\r
- USB_DEVICE *Devices[256];\r
+ USB_DEVICE *Devices[256];\r
\r
//\r
// USB Bus driver need to control the recursive connect policy of the bus, only those wanted\r
// every wanted child device is stored in a item of the WantedUsbIoDPList, whose structure is\r
// DEVICE_PATH_LIST_ITEM\r
//\r
- LIST_ENTRY WantedUsbIoDPList;\r
-\r
+ LIST_ENTRY WantedUsbIoDPList;\r
};\r
\r
//\r
// USB Hub Api\r
//\r
-struct _USB_HUB_API{\r
- USB_HUB_INIT Init;\r
- USB_HUB_GET_PORT_STATUS GetPortStatus;\r
- USB_HUB_CLEAR_PORT_CHANGE ClearPortChange;\r
- USB_HUB_SET_PORT_FEATURE SetPortFeature;\r
- USB_HUB_CLEAR_PORT_FEATURE ClearPortFeature;\r
- USB_HUB_RESET_PORT ResetPort;\r
- USB_HUB_RELEASE Release;\r
+struct _USB_HUB_API {\r
+ USB_HUB_INIT Init;\r
+ USB_HUB_GET_PORT_STATUS GetPortStatus;\r
+ USB_HUB_CLEAR_PORT_CHANGE ClearPortChange;\r
+ USB_HUB_SET_PORT_FEATURE SetPortFeature;\r
+ USB_HUB_CLEAR_PORT_FEATURE ClearPortFeature;\r
+ USB_HUB_RESET_PORT ResetPort;\r
+ USB_HUB_RELEASE Release;\r
};\r
\r
-#define USB_US_LAND_ID 0x0409\r
+#define USB_US_LAND_ID 0x0409\r
\r
-#define DEVICE_PATH_LIST_ITEM_SIGNATURE SIGNATURE_32('d','p','l','i')\r
-typedef struct _DEVICE_PATH_LIST_ITEM{\r
- UINTN Signature;\r
- LIST_ENTRY Link;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+#define DEVICE_PATH_LIST_ITEM_SIGNATURE SIGNATURE_32('d','p','l','i')\r
+typedef struct _DEVICE_PATH_LIST_ITEM {\r
+ UINTN Signature;\r
+ LIST_ENTRY Link;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
} DEVICE_PATH_LIST_ITEM;\r
\r
typedef struct {\r
- USB_CLASS_DEVICE_PATH UsbClass;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
+ USB_CLASS_DEVICE_PATH UsbClass;\r
+ EFI_DEVICE_PATH_PROTOCOL End;\r
} USB_CLASS_FORMAT_DEVICE_PATH;\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UsbBusFreeUsbDPList (\r
- IN LIST_ENTRY *UsbIoDPList\r
+ IN LIST_ENTRY *UsbIoDPList\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UsbBusAddWantedUsbIoDP (\r
- IN EFI_USB_BUS_PROTOCOL *UsbBusId,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
+ IN EFI_USB_BUS_PROTOCOL *UsbBusId,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
);\r
\r
/**\r
BOOLEAN\r
EFIAPI\r
UsbBusIsWantedUsbIO (\r
- IN USB_BUS *Bus,\r
- IN USB_INTERFACE *UsbIf\r
+ IN USB_BUS *Bus,\r
+ IN USB_INTERFACE *UsbIf\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UsbBusRecursivelyConnectWantedUsbIo (\r
- IN EFI_USB_BUS_PROTOCOL *UsbBusId\r
+ IN EFI_USB_BUS_PROTOCOL *UsbBusId\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UsbIoBulkTransfer (\r
- IN EFI_USB_IO_PROTOCOL *This,\r
- IN UINT8 Endpoint,\r
- IN OUT VOID *Data,\r
- IN OUT UINTN *DataLength,\r
- IN UINTN Timeout,\r
- OUT UINT32 *UsbStatus\r
+ IN EFI_USB_IO_PROTOCOL *This,\r
+ IN UINT8 Endpoint,\r
+ IN OUT VOID *Data,\r
+ IN OUT UINTN *DataLength,\r
+ IN UINTN Timeout,\r
+ OUT UINT32 *UsbStatus\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UsbIoSyncInterruptTransfer (\r
- IN EFI_USB_IO_PROTOCOL *This,\r
- IN UINT8 Endpoint,\r
- IN OUT VOID *Data,\r
- IN OUT UINTN *DataLength,\r
- IN UINTN Timeout,\r
- OUT UINT32 *UsbStatus\r
+ IN EFI_USB_IO_PROTOCOL *This,\r
+ IN UINT8 Endpoint,\r
+ IN OUT VOID *Data,\r
+ IN OUT UINTN *DataLength,\r
+ IN UINTN Timeout,\r
+ OUT UINT32 *UsbStatus\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UsbIoIsochronousTransfer (\r
- IN EFI_USB_IO_PROTOCOL *This,\r
- IN UINT8 DeviceEndpoint,\r
- IN OUT VOID *Data,\r
- IN UINTN DataLength,\r
- OUT UINT32 *Status\r
+ IN EFI_USB_IO_PROTOCOL *This,\r
+ IN UINT8 DeviceEndpoint,\r
+ IN OUT VOID *Data,\r
+ IN UINTN DataLength,\r
+ OUT UINT32 *Status\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UsbIoGetDeviceDescriptor (\r
- IN EFI_USB_IO_PROTOCOL *This,\r
- OUT EFI_USB_DEVICE_DESCRIPTOR *Descriptor\r
+ IN EFI_USB_IO_PROTOCOL *This,\r
+ OUT EFI_USB_DEVICE_DESCRIPTOR *Descriptor\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UsbIoGetActiveConfigDescriptor (\r
- IN EFI_USB_IO_PROTOCOL *This,\r
- OUT EFI_USB_CONFIG_DESCRIPTOR *Descriptor\r
+ IN EFI_USB_IO_PROTOCOL *This,\r
+ OUT EFI_USB_CONFIG_DESCRIPTOR *Descriptor\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UsbIoGetEndpointDescriptor (\r
- IN EFI_USB_IO_PROTOCOL *This,\r
- IN UINT8 Index,\r
- OUT EFI_USB_ENDPOINT_DESCRIPTOR *Descriptor\r
+ IN EFI_USB_IO_PROTOCOL *This,\r
+ IN UINT8 Index,\r
+ OUT EFI_USB_ENDPOINT_DESCRIPTOR *Descriptor\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UsbIoGetSupportedLanguages (\r
- IN EFI_USB_IO_PROTOCOL *This,\r
- OUT UINT16 **LangIDTable,\r
- OUT UINT16 *TableSize\r
+ IN EFI_USB_IO_PROTOCOL *This,\r
+ OUT UINT16 **LangIDTable,\r
+ OUT UINT16 *TableSize\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UsbIoGetStringDescriptor (\r
- IN EFI_USB_IO_PROTOCOL *This,\r
- IN UINT16 LangID,\r
- IN UINT8 StringIndex,\r
- OUT CHAR16 **String\r
+ IN EFI_USB_IO_PROTOCOL *This,\r
+ IN UINT16 LangID,\r
+ IN UINT8 StringIndex,\r
+ OUT CHAR16 **String\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UsbBusDriverEntryPoint (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
);\r
\r
/**\r
IN EFI_HANDLE *ChildHandleBuffer\r
);\r
\r
-extern EFI_USB_IO_PROTOCOL mUsbIoProtocol;\r
-extern EFI_DRIVER_BINDING_PROTOCOL mUsbBusDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL mUsbBusComponentName;\r
-extern EFI_COMPONENT_NAME2_PROTOCOL mUsbBusComponentName2;\r
+extern EFI_USB_IO_PROTOCOL mUsbIoProtocol;\r
+extern EFI_DRIVER_BINDING_PROTOCOL mUsbBusDriverBinding;\r
+extern EFI_COMPONENT_NAME_PROTOCOL mUsbBusComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL mUsbBusComponentName2;\r
\r
#endif\r