]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.h
fixed memcpy link issue.
[mirror_edk2.git] / MdeModulePkg / Bus / Usb / UsbBusDxe / UsbHub.h
CommitLineData
e237e7ae 1/** @file\r
2\r
3Copyright (c) 2007, Intel Corporation\r
4All rights reserved. This program and the accompanying materials\r
5are licensed and made available under the terms and conditions of the BSD License\r
6which accompanies this distribution. The full text of the license may be found at\r
7http://opensource.org/licenses/bsd-license.php\r
8\r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11\r
12 Module Name:\r
13\r
14 UsbHub.h\r
15\r
16 Abstract:\r
17\r
18 The definition for USB hub\r
19\r
20 Revision History\r
21\r
22\r
23**/\r
24\r
25#ifndef _USB_HUB_H_\r
26#define _USB_HUB_H_\r
27\r
28#define USB_ENDPOINT_ADDR(EpAddr) ((EpAddr) & 0x7F)\r
29#define USB_ENDPOINT_TYPE(Desc) ((Desc)->Attributes & USB_ENDPOINT_TYPE_MASK)\r
30\r
31enum {\r
32 USB_DESC_TYPE_HUB = 0x29,\r
33\r
34 //\r
35 // Hub class control transfer target\r
36 //\r
37 USB_HUB_TARGET_HUB = 0,\r
38 USB_HUB_TARGET_PORT = 3,\r
39\r
40 //\r
41 // HUB class specific contrl transfer request type\r
42 //\r
43 USB_HUB_REQ_GET_STATUS = 0,\r
44 USB_HUB_REQ_CLEAR_FEATURE = 1,\r
45 USB_HUB_REQ_SET_FEATURE = 3,\r
46 USB_HUB_REQ_GET_DESC = 6,\r
47 USB_HUB_REQ_SET_DESC = 7,\r
48 USB_HUB_REQ_CLEAR_TT = 8,\r
49 USB_HUB_REQ_RESET_TT = 9,\r
50 USB_HUB_REQ_GET_TT_STATE = 10,\r
51 USB_HUB_REQ_STOP_TT = 11,\r
52\r
53\r
54 //\r
55 // USB hub class feature selector\r
56 //\r
57 USB_HUB_C_HUB_LOCAL_POWER = 0,\r
58 USB_HUB_C_HUB_OVER_CURRENT = 1,\r
59 USB_HUB_PORT_CONNECTION = 0,\r
60 USB_HUB_PORT_ENABLE = 1,\r
61 USB_HUB_PORT_SUSPEND = 2,\r
62 USB_HUB_PORT_OVER_CURRENT = 3,\r
63 USB_HUB_PORT_RESET = 4,\r
64 USB_HUB_PORT_POWER = 8,\r
65 USB_HUB_PORT_LOW_SPEED = 9,\r
66 USB_HUB_C_PORT_CONNECT = 16,\r
67 USB_HUB_C_PORT_ENABLE = 17,\r
68 USB_HUB_C_PORT_SUSPEND = 18,\r
69 USB_HUB_C_PORT_OVER_CURRENT = 19,\r
70 USB_HUB_C_PORT_RESET = 20,\r
71 USB_HUB_PORT_TEST = 21,\r
72 USB_HUB_PORT_INDICATOR = 22,\r
73\r
74 //\r
75 // USB hub power control method. In gang power control\r
76 //\r
77 USB_HUB_GANG_POWER_CTRL = 0,\r
78 USB_HUB_PORT_POWER_CTRL = 0x01,\r
79\r
80 //\r
81 // USB hub status bits\r
82 //\r
83 USB_HUB_STAT_LOCAL_POWER = 0x01,\r
84 USB_HUB_STAT_OVER_CURRENT = 0x02,\r
85 USB_HUB_STAT_C_LOCAL_POWER = 0x01,\r
86 USB_HUB_STAT_C_OVER_CURRENT = 0x02,\r
87\r
88 USB_HUB_CLASS_CODE = 0x09,\r
89 USB_HUB_SUBCLASS_CODE = 0x00,\r
90\r
91\r
92 USB_HUB_LOOP = 50,\r
93};\r
94\r
95#pragma pack(1)\r
96//\r
97// Hub descriptor, the last two fields are of variable lenght.\r
98//\r
99typedef struct {\r
100 UINT8 Length;\r
101 UINT8 DescType;\r
102 UINT8 NumPorts;\r
103 UINT16 HubCharacter;\r
104 UINT8 PwrOn2PwrGood;\r
105 UINT8 HubContrCurrent;\r
106 UINT8 Filler[16];\r
107} EFI_USB_HUB_DESCRIPTOR;\r
108#pragma pack()\r
109\r
110\r
111typedef struct {\r
112 UINT16 ChangedBit;\r
113 EFI_USB_PORT_FEATURE Feature;\r
114} USB_CHANGE_FEATURE_MAP;\r
115\r
116\r
117EFI_STATUS\r
118UsbHubCtrlClearTTBuffer (\r
119 IN USB_DEVICE *UsbDev,\r
120 IN UINT8 Port,\r
121 IN UINT16 DevAddr,\r
122 IN UINT16 EpNum,\r
123 IN UINT16 EpType\r
124 );\r
125\r
126\r
127BOOLEAN\r
128UsbIsHubInterface (\r
129 IN USB_INTERFACE *UsbIf\r
130 );\r
131\r
132EFI_STATUS\r
133UsbHubAckHubStatus (\r
134 IN USB_DEVICE *UsbDev\r
135 );\r
136\r
137extern USB_HUB_API mUsbHubApi;\r
138extern USB_HUB_API mUsbRootHubApi;\r
139#endif\r
140\r