3 Copyright (c) 2007, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 The definition for USB hub
28 #include <IndustryStandard/Usb.h>
30 #define USB_ENDPOINT_ADDR(EpAddr) ((EpAddr) & 0x7F)
31 #define USB_ENDPOINT_TYPE(Desc) ((Desc)->Attributes & USB_ENDPOINT_TYPE_MASK)
34 USB_DESC_TYPE_HUB
= 0x29,
37 // Hub class control transfer target
39 USB_HUB_TARGET_HUB
= 0,
40 USB_HUB_TARGET_PORT
= 3,
43 // HUB class specific contrl transfer request type
45 USB_HUB_REQ_GET_STATUS
= 0,
46 USB_HUB_REQ_CLEAR_FEATURE
= 1,
47 USB_HUB_REQ_SET_FEATURE
= 3,
48 USB_HUB_REQ_GET_DESC
= 6,
49 USB_HUB_REQ_SET_DESC
= 7,
50 USB_HUB_REQ_CLEAR_TT
= 8,
51 USB_HUB_REQ_RESET_TT
= 9,
52 USB_HUB_REQ_GET_TT_STATE
= 10,
53 USB_HUB_REQ_STOP_TT
= 11,
57 // USB hub class feature selector
59 USB_HUB_C_HUB_LOCAL_POWER
= 0,
60 USB_HUB_C_HUB_OVER_CURRENT
= 1,
61 USB_HUB_PORT_CONNECTION
= 0,
62 USB_HUB_PORT_ENABLE
= 1,
63 USB_HUB_PORT_SUSPEND
= 2,
64 USB_HUB_PORT_OVER_CURRENT
= 3,
65 USB_HUB_PORT_RESET
= 4,
66 USB_HUB_PORT_POWER
= 8,
67 USB_HUB_PORT_LOW_SPEED
= 9,
68 USB_HUB_C_PORT_CONNECT
= 16,
69 USB_HUB_C_PORT_ENABLE
= 17,
70 USB_HUB_C_PORT_SUSPEND
= 18,
71 USB_HUB_C_PORT_OVER_CURRENT
= 19,
72 USB_HUB_C_PORT_RESET
= 20,
73 USB_HUB_PORT_TEST
= 21,
74 USB_HUB_PORT_INDICATOR
= 22,
77 // USB hub power control method. In gang power control
79 USB_HUB_GANG_POWER_CTRL
= 0,
80 USB_HUB_PORT_POWER_CTRL
= 0x01,
83 // USB hub status bits
85 USB_HUB_STAT_LOCAL_POWER
= 0x01,
86 USB_HUB_STAT_OVER_CURRENT
= 0x02,
87 USB_HUB_STAT_C_LOCAL_POWER
= 0x01,
88 USB_HUB_STAT_C_OVER_CURRENT
= 0x02,
90 USB_HUB_CLASS_CODE
= 0x09,
91 USB_HUB_SUBCLASS_CODE
= 0x00,
94 // Host software return timeout if port status doesn't change
95 // after 500ms(LOOP * STALL = 100 * 5ms), set by experience
97 USB_WAIT_PORT_STS_CHANGE_LOOP
= 100
102 // Hub descriptor, the last two fields are of variable lenght.
110 UINT8 HubContrCurrent
;
112 } EFI_USB_HUB_DESCRIPTOR
;
118 EFI_USB_PORT_FEATURE Feature
;
119 } USB_CHANGE_FEATURE_MAP
;
123 UsbHubCtrlClearTTBuffer (
124 IN USB_DEVICE
*UsbDev
,
134 IN USB_INTERFACE
*UsbIf
139 IN USB_DEVICE
*UsbDev
142 extern USB_HUB_API mUsbHubApi
;
143 extern USB_HUB_API mUsbRootHubApi
;