+ UINT16 PortStatus; ///< Contains current port status bitmap.\r
+ UINT16 PortChangeStatus; ///< Contains current port status change bitmap.\r
+} EFI_USB_PORT_STATUS;\r
+\r
+///\r
+/// EFI_USB_PORT_STATUS.PortStatus bit definition \r
+///\r
+#define USB_PORT_STAT_CONNECTION 0x0001\r
+#define USB_PORT_STAT_ENABLE 0x0002\r
+#define USB_PORT_STAT_SUSPEND 0x0004\r
+#define USB_PORT_STAT_OVERCURRENT 0x0008\r
+#define USB_PORT_STAT_RESET 0x0010\r
+#define USB_PORT_STAT_POWER 0x0100\r
+#define USB_PORT_STAT_LOW_SPEED 0x0200\r
+#define USB_PORT_STAT_HIGH_SPEED 0x0400\r
+#define USB_PORT_STAT_SUPER_SPEED 0x0800\r
+#define USB_PORT_STAT_OWNER 0x2000\r
+\r
+///\r
+/// EFI_USB_PORT_STATUS.PortChangeStatus bit definition \r
+///\r
+#define USB_PORT_STAT_C_CONNECTION 0x0001\r
+#define USB_PORT_STAT_C_ENABLE 0x0002\r
+#define USB_PORT_STAT_C_SUSPEND 0x0004\r
+#define USB_PORT_STAT_C_OVERCURRENT 0x0008\r
+#define USB_PORT_STAT_C_RESET 0x0010\r
+\r
+\r
+///\r
+/// Usb port features value\r
+/// Each value indicates its bit index in the port status and status change bitmaps, \r
+/// if combines these two bitmaps into a 32-bit bitmap.\r
+///\r
+typedef enum {\r
+ EfiUsbPortEnable = 1,\r
+ EfiUsbPortSuspend = 2,\r
+ EfiUsbPortReset = 4,\r
+ EfiUsbPortPower = 8,\r
+ EfiUsbPortOwner = 13,\r
+ EfiUsbPortConnectChange = 16,\r
+ EfiUsbPortEnableChange = 17,\r
+ EfiUsbPortSuspendChange = 18,\r
+ EfiUsbPortOverCurrentChange = 19,\r
+ EfiUsbPortResetChange = 20\r
+} EFI_USB_PORT_FEATURE;\r
+\r
+#define EFI_USB_SPEED_FULL 0x0000 ///< 12 Mb/s, USB 1.1 OHCI and UHCI HC.\r
+#define EFI_USB_SPEED_LOW 0x0001 ///< 1 Mb/s, USB 1.1 OHCI and UHCI HC.\r
+#define EFI_USB_SPEED_HIGH 0x0002 ///< 480 Mb/s, USB 2.0 EHCI HC.\r
+#define EFI_USB_SPEED_SUPER 0x0003 ///< 4.8 Gb/s, USB 3.0 XHCI HC.\r
+\r
+typedef struct {\r
+ UINT8 TranslatorHubAddress; ///< device address\r
+ UINT8 TranslatorPortNumber; ///< the port number of the hub that device is connected to.\r