blob: f0537ecb6684c9fc5108ab70d86568a51a3e8510 [file] [log] [blame]
Vishal Bhoj82c80712015-12-15 21:13:33 +05301/** @file
2 Define APIs to retrieve USB Host Controller Info such as controller type and
3 I/O Port Base Address.
4
5Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
6
7This program and the accompanying materials
8are licensed and made available under the terms and conditions
9of the BSD License which accompanies this distribution. The
10full text of the license may be found at
11http://opensource.org/licenses/bsd-license.php
12
13THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
14WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15
16**/
17
18#ifndef _PEI_USB_CONTROLLER_PPI_H_
19#define _PEI_USB_CONTROLLER_PPI_H_
20
21///
22/// Global ID for the PEI_USB_CONTROLLER_PPI.
23///
24#define PEI_USB_CONTROLLER_PPI_GUID \
25 { \
26 0x3bc1f6de, 0x693e, 0x4547,{ 0xa3, 0x0, 0x21, 0x82, 0x3c, 0xa4, 0x20, 0xb2} \
27 }
28
29///
30/// Forward declaration for the PEI_USB_CONTROLLER_PPI.
31///
32typedef struct _PEI_USB_CONTROLLER_PPI PEI_USB_CONTROLLER_PPI;
33
34///
35/// This bit is used in the ControllerType return parameter of GetUsbController()
36/// to identify the USB Host Controller type as UHCI
37///
38#define PEI_UHCI_CONTROLLER 0x01
39
40///
41/// This bit is used in the ControllerType return parameter of GetUsbController()
42/// to identify the USB Host Controller type as OHCI
43///
44#define PEI_OHCI_CONTROLLER 0x02
45
46///
47/// This bit is used in the ControllerType return parameter of GetUsbController()
48/// to identify the USB Host Controller type as EHCI
49///
50#define PEI_EHCI_CONTROLLER 0x03
51
52///
53/// This bit is used in the ControllerType return parameter of GetUsbController()
54/// to identify the USB Host Controller type as XHCI
55///
56#define PEI_XHCI_CONTROLLER 0x04
57
58/**
59 Retrieve USB Host Controller Info such as controller type and I/O Base Address.
60
61 @param[in] PeiServices The pointer to the PEI Services Table.
62 @param[in] This The pointer to this instance of the PEI_USB_CONTROLLER_PPI.
63 @param[in] ControllerId The ID of the USB controller.
64 @param[out] ControllerType On output, returns the type of the USB controller.
65 @param[out] BaseAddress On output, returns the base address of UHCI's I/O ports
66 if UHCI is enabled or the base address of EHCI's MMIO
67 if EHCI is enabled.
68
69 @retval EFI_SUCCESS USB controller attributes were returned successfully.
70 @retval EFI_INVALID_PARAMETER ControllerId is greater than the maximum number
71 of USB controller supported by this platform.
72
73**/
74typedef
75EFI_STATUS
76(EFIAPI *PEI_GET_USB_CONTROLLER)(
77 IN EFI_PEI_SERVICES **PeiServices,
78 IN PEI_USB_CONTROLLER_PPI *This,
79 IN UINT8 UsbControllerId,
80 OUT UINTN *ControllerType,
81 OUT UINTN *BaseAddress
82 );
83
84///
85/// This PPI contains a single service to retrieve the USB Host Controller type
86/// and the base address of the I/O ports used to access the USB Host Controller.
87///
88struct _PEI_USB_CONTROLLER_PPI {
89 PEI_GET_USB_CONTROLLER GetUsbController;
90};
91
92extern EFI_GUID gPeiUsbControllerPpiGuid;
93
94#endif