2 EDKII_UFS_HC_PLATFORM_PROTOCOL definition.
4 Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
9 #ifndef __EDKII_UFS_HC_PLATFORM_PROTOCOL_H__
10 #define __EDKII_UFS_HC_PLATFORM_PROTOCOL_H__
12 #include <Protocol/UfsHostController.h>
14 #define EDKII_UFS_HC_PLATFORM_PROTOCOL_VERSION 1
16 extern EFI_GUID gEdkiiUfsHcPlatformProtocolGuid
;
18 typedef struct _EDKII_UFS_HC_PLATFORM_PROTOCOL EDKII_UFS_HC_PLATFORM_PROTOCOL
;
20 typedef struct _EDKII_UFS_HC_DRIVER_INTERFACE EDKII_UFS_HC_DRIVER_INTERFACE
;
32 @param[in] This Pointer to driver interface produced by the UFS controller.
33 @param[in, out] UicCommand Descriptor of the command that will be executed.
35 @retval EFI_SUCCESS Command executed successfully.
36 @retval EFI_INVALID_PARAMETER This or UicCommand is NULL.
37 @retval Others Command failed to execute.
41 (EFIAPI
*EDKII_UFS_EXEC_UIC_COMMAND
) (
42 IN EDKII_UFS_HC_DRIVER_INTERFACE
*This
,
43 IN OUT EDKII_UIC_COMMAND
*UicCommand
46 struct _EDKII_UFS_HC_DRIVER_INTERFACE
{
48 /// Protocol to accesss host controller MMIO and PCI registers.
50 EDKII_UFS_HOST_CONTROLLER_PROTOCOL
*UfsHcProtocol
;
52 /// Function implementing UIC command execution.
54 EDKII_UFS_EXEC_UIC_COMMAND UfsExecUicCommand
;
63 Allows platform protocol to override host controller information
65 @param[in] ControllerHandle Handle of the UFS controller.
66 @param[in, out] HcInfo Pointer EDKII_UFS_HC_INFO associated with host controller.
68 @retval EFI_SUCCESS Function completed successfully.
69 @retval EFI_INVALID_PARAMETER HcInfo is NULL.
70 @retval Others Function failed to complete.
74 (EFIAPI
*EDKII_UFS_HC_PLATFORM_OVERRIDE_HC_INFO
) (
75 IN EFI_HANDLE ControllerHandle
,
76 IN OUT EDKII_UFS_HC_INFO
*HcInfo
82 EdkiiUfsHcPreLinkStartup
,
83 EdkiiUfsHcPostLinkStartup
84 } EDKII_UFS_HC_PLATFORM_CALLBACK_PHASE
;
87 Callback function for platform driver.
89 @param[in] ControllerHandle Handle of the UFS controller.
90 @param[in] CallbackPhase Specifies when the platform protocol is called
91 @param[in, out] CallbackData Data specific to the callback phase.
92 For PreHce and PostHce - EDKII_UFS_HC_DRIVER_INTERFACE.
93 For PreLinkStartup and PostLinkStartup - EDKII_UFS_HC_DRIVER_INTERFACE.
95 @retval EFI_SUCCESS Override function completed successfully.
96 @retval EFI_INVALID_PARAMETER CallbackPhase is invalid or CallbackData is NULL when phase expects valid data.
97 @retval Others Function failed to complete.
101 (EFIAPI
*EDKII_UFS_HC_PLATFORM_CALLBACK
) (
102 IN EFI_HANDLE ControllerHandle
,
103 IN EDKII_UFS_HC_PLATFORM_CALLBACK_PHASE CallbackPhase
,
104 IN OUT VOID
*CallbackData
107 struct _EDKII_UFS_HC_PLATFORM_PROTOCOL
{
109 /// Version of the protocol.
113 /// Allows platform driver to override host controller information.
115 EDKII_UFS_HC_PLATFORM_OVERRIDE_HC_INFO OverrideHcInfo
;
117 /// Allows platform driver to implement platform specific flows
118 /// for host controller.
120 EDKII_UFS_HC_PLATFORM_CALLBACK Callback
;