]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.h
Import Usb/UsbBusDxe and Usb/UsbMassStorageDxe into MdeModulePkg.
[mirror_edk2.git] / MdeModulePkg / Bus / Usb / UsbBusDxe / UsbHub.h
diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.h b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.h
new file mode 100644 (file)
index 0000000..0238ea0
--- /dev/null
@@ -0,0 +1,140 @@
+/** @file\r
+\r
+Copyright (c) 2007, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+  Module Name:\r
+\r
+    UsbHub.h\r
+\r
+  Abstract:\r
+\r
+    The definition for USB hub\r
+\r
+  Revision History\r
+\r
+\r
+**/\r
+\r
+#ifndef _USB_HUB_H_\r
+#define _USB_HUB_H_\r
+\r
+#define USB_ENDPOINT_ADDR(EpAddr) ((EpAddr) & 0x7F)\r
+#define USB_ENDPOINT_TYPE(Desc)   ((Desc)->Attributes & USB_ENDPOINT_TYPE_MASK)\r
+\r
+enum {\r
+  USB_DESC_TYPE_HUB           = 0x29,\r
+\r
+  //\r
+  // Hub class control transfer target\r
+  //\r
+  USB_HUB_TARGET_HUB          = 0,\r
+  USB_HUB_TARGET_PORT         = 3,\r
+\r
+  //\r
+  // HUB class specific contrl transfer request type\r
+  //\r
+  USB_HUB_REQ_GET_STATUS      = 0,\r
+  USB_HUB_REQ_CLEAR_FEATURE   = 1,\r
+  USB_HUB_REQ_SET_FEATURE     = 3,\r
+  USB_HUB_REQ_GET_DESC        = 6,\r
+  USB_HUB_REQ_SET_DESC        = 7,\r
+  USB_HUB_REQ_CLEAR_TT        = 8,\r
+  USB_HUB_REQ_RESET_TT        = 9,\r
+  USB_HUB_REQ_GET_TT_STATE    = 10,\r
+  USB_HUB_REQ_STOP_TT         = 11,\r
+\r
+\r
+  //\r
+  // USB hub class feature selector\r
+  //\r
+  USB_HUB_C_HUB_LOCAL_POWER   = 0,\r
+  USB_HUB_C_HUB_OVER_CURRENT  = 1,\r
+  USB_HUB_PORT_CONNECTION     = 0,\r
+  USB_HUB_PORT_ENABLE         = 1,\r
+  USB_HUB_PORT_SUSPEND        = 2,\r
+  USB_HUB_PORT_OVER_CURRENT   = 3,\r
+  USB_HUB_PORT_RESET          = 4,\r
+  USB_HUB_PORT_POWER          = 8,\r
+  USB_HUB_PORT_LOW_SPEED      = 9,\r
+  USB_HUB_C_PORT_CONNECT      = 16,\r
+  USB_HUB_C_PORT_ENABLE       = 17,\r
+  USB_HUB_C_PORT_SUSPEND      = 18,\r
+  USB_HUB_C_PORT_OVER_CURRENT = 19,\r
+  USB_HUB_C_PORT_RESET        = 20,\r
+  USB_HUB_PORT_TEST           = 21,\r
+  USB_HUB_PORT_INDICATOR      = 22,\r
+\r
+  //\r
+  // USB hub power control method. In gang power control\r
+  //\r
+  USB_HUB_GANG_POWER_CTRL     = 0,\r
+  USB_HUB_PORT_POWER_CTRL     = 0x01,\r
+\r
+  //\r
+  // USB hub status bits\r
+  //\r
+  USB_HUB_STAT_LOCAL_POWER    = 0x01,\r
+  USB_HUB_STAT_OVER_CURRENT   = 0x02,\r
+  USB_HUB_STAT_C_LOCAL_POWER  = 0x01,\r
+  USB_HUB_STAT_C_OVER_CURRENT = 0x02,\r
+\r
+  USB_HUB_CLASS_CODE          = 0x09,\r
+  USB_HUB_SUBCLASS_CODE       = 0x00,\r
+\r
+\r
+  USB_HUB_LOOP                = 50,\r
+};\r
+\r
+#pragma pack(1)\r
+//\r
+// Hub descriptor, the last two fields are of variable lenght.\r
+//\r
+typedef struct {\r
+  UINT8           Length;\r
+  UINT8           DescType;\r
+  UINT8           NumPorts;\r
+  UINT16          HubCharacter;\r
+  UINT8           PwrOn2PwrGood;\r
+  UINT8           HubContrCurrent;\r
+  UINT8           Filler[16];\r
+} EFI_USB_HUB_DESCRIPTOR;\r
+#pragma pack()\r
+\r
+\r
+typedef struct {\r
+  UINT16                ChangedBit;\r
+  EFI_USB_PORT_FEATURE  Feature;\r
+} USB_CHANGE_FEATURE_MAP;\r
+\r
+\r
+EFI_STATUS\r
+UsbHubCtrlClearTTBuffer (\r
+  IN USB_DEVICE           *UsbDev,\r
+  IN UINT8                Port,\r
+  IN UINT16               DevAddr,\r
+  IN UINT16               EpNum,\r
+  IN UINT16               EpType\r
+  );\r
+\r
+\r
+BOOLEAN\r
+UsbIsHubInterface (\r
+  IN USB_INTERFACE        *UsbIf\r
+  );\r
+\r
+EFI_STATUS\r
+UsbHubAckHubStatus (\r
+  IN  USB_DEVICE         *UsbDev\r
+  );\r
+\r
+extern USB_HUB_API        mUsbHubApi;\r
+extern USB_HUB_API        mUsbRootHubApi;\r
+#endif\r
+\r