]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.h
1. Sync the latest network stack. Add NetLibCreateIPv4DPathNode () in netlib library.
[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
c52fa98c 28#include <IndustryStandard/Usb.h>\r
29\r
e237e7ae 30#define USB_ENDPOINT_ADDR(EpAddr) ((EpAddr) & 0x7F)\r
31#define USB_ENDPOINT_TYPE(Desc) ((Desc)->Attributes & USB_ENDPOINT_TYPE_MASK)\r
32\r
33enum {\r
34 USB_DESC_TYPE_HUB = 0x29,\r
35\r
36 //\r
37 // Hub class control transfer target\r
38 //\r
39 USB_HUB_TARGET_HUB = 0,\r
40 USB_HUB_TARGET_PORT = 3,\r
41\r
42 //\r
43 // HUB class specific contrl transfer request type\r
44 //\r
45 USB_HUB_REQ_GET_STATUS = 0,\r
46 USB_HUB_REQ_CLEAR_FEATURE = 1,\r
47 USB_HUB_REQ_SET_FEATURE = 3,\r
48 USB_HUB_REQ_GET_DESC = 6,\r
49 USB_HUB_REQ_SET_DESC = 7,\r
50 USB_HUB_REQ_CLEAR_TT = 8,\r
51 USB_HUB_REQ_RESET_TT = 9,\r
52 USB_HUB_REQ_GET_TT_STATE = 10,\r
53 USB_HUB_REQ_STOP_TT = 11,\r
54\r
55\r
56 //\r
57 // USB hub class feature selector\r
58 //\r
59 USB_HUB_C_HUB_LOCAL_POWER = 0,\r
60 USB_HUB_C_HUB_OVER_CURRENT = 1,\r
61 USB_HUB_PORT_CONNECTION = 0,\r
62 USB_HUB_PORT_ENABLE = 1,\r
63 USB_HUB_PORT_SUSPEND = 2,\r
64 USB_HUB_PORT_OVER_CURRENT = 3,\r
65 USB_HUB_PORT_RESET = 4,\r
66 USB_HUB_PORT_POWER = 8,\r
67 USB_HUB_PORT_LOW_SPEED = 9,\r
68 USB_HUB_C_PORT_CONNECT = 16,\r
69 USB_HUB_C_PORT_ENABLE = 17,\r
70 USB_HUB_C_PORT_SUSPEND = 18,\r
71 USB_HUB_C_PORT_OVER_CURRENT = 19,\r
72 USB_HUB_C_PORT_RESET = 20,\r
73 USB_HUB_PORT_TEST = 21,\r
74 USB_HUB_PORT_INDICATOR = 22,\r
75\r
76 //\r
77 // USB hub power control method. In gang power control\r
78 //\r
79 USB_HUB_GANG_POWER_CTRL = 0,\r
80 USB_HUB_PORT_POWER_CTRL = 0x01,\r
81\r
82 //\r
83 // USB hub status bits\r
84 //\r
85 USB_HUB_STAT_LOCAL_POWER = 0x01,\r
86 USB_HUB_STAT_OVER_CURRENT = 0x02,\r
87 USB_HUB_STAT_C_LOCAL_POWER = 0x01,\r
88 USB_HUB_STAT_C_OVER_CURRENT = 0x02,\r
89\r
90 USB_HUB_CLASS_CODE = 0x09,\r
91 USB_HUB_SUBCLASS_CODE = 0x00,\r
92\r
93\r
c52fa98c 94 USB_HUB_LOOP = 50\r
e237e7ae 95};\r
96\r
97#pragma pack(1)\r
98//\r
99// Hub descriptor, the last two fields are of variable lenght.\r
100//\r
101typedef struct {\r
102 UINT8 Length;\r
103 UINT8 DescType;\r
104 UINT8 NumPorts;\r
105 UINT16 HubCharacter;\r
106 UINT8 PwrOn2PwrGood;\r
107 UINT8 HubContrCurrent;\r
108 UINT8 Filler[16];\r
109} EFI_USB_HUB_DESCRIPTOR;\r
110#pragma pack()\r
111\r
112\r
113typedef struct {\r
114 UINT16 ChangedBit;\r
c52fa98c 115 UINT8 Feature;\r
e237e7ae 116} USB_CHANGE_FEATURE_MAP;\r
117\r
118\r
119EFI_STATUS\r
120UsbHubCtrlClearTTBuffer (\r
121 IN USB_DEVICE *UsbDev,\r
122 IN UINT8 Port,\r
123 IN UINT16 DevAddr,\r
124 IN UINT16 EpNum,\r
125 IN UINT16 EpType\r
126 );\r
127\r
128\r
129BOOLEAN\r
130UsbIsHubInterface (\r
131 IN USB_INTERFACE *UsbIf\r
132 );\r
133\r
134EFI_STATUS\r
135UsbHubAckHubStatus (\r
136 IN USB_DEVICE *UsbDev\r
137 );\r
138\r
139extern USB_HUB_API mUsbHubApi;\r
140extern USB_HUB_API mUsbRootHubApi;\r
141#endif\r
142\r