1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /** @file
- PCH eMMC HS400 Tuning Protocol
- Copyright (c) 2019 Intel Corporation. All rights reserved. <BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef _PCH_EMMC_TUNING_PROTOCOL_H_
- #define _PCH_EMMC_TUNING_PROTOCOL_H_
- #define PCH_EMMC_TUNING_PROTOCOL_REVISION 1
- //
- // Extern the GUID for protocol users.
- //
- extern EFI_GUID gPchEmmcTuningProtocolGuid;
- //
- // Forward declaration for PCH_EMMC_TUNING_PROTOCOL
- //
- typedef struct _PCH_EMMC_TUNING_PROTOCOL PCH_EMMC_TUNING_PROTOCOL;
- /**
- This structure decribes the required Emmc info for HS400 tuning
- **/
- typedef struct {
- EFI_HANDLE PartitionHandle; ///< eMMC partition handle for block read/write
- EFI_LBA Lba; ///< Logical Block Address for HS400 Tuning block read/write
- UINT32 RelativeDevAddress; ///< Device system address, dynamically assigned by the host during initialization.
- UINT8 HS200BusWidth; ///< The value to be programmed for BUS_WIDTH[183] byte
- } EMMC_INFO;
- ///
- /// This structure describes the return value after HS400 tuning
- ///
- typedef struct {
- UINT8 Hs400DataValid; ///< Set if Hs400 Tuning Data is valid after tuning
- UINT8 Hs400RxStrobe1Dll; ///< Rx Strobe Delay Control - Rx Strobe Delay DLL 1 (HS400 Mode)
- UINT8 Hs400TxDataDll; ///< Tx Data Delay Control 1 - Tx Data Delay (HS400 Mode)
- } EMMC_TUNING_DATA;
- ///
- /// EMMC HS400 TUNING INTERFACE
- ///
- typedef EFI_STATUS (EFIAPI *EMMC_TUNE) (
- IN PCH_EMMC_TUNING_PROTOCOL *This, ///< This pointer to PCH_EMMC_TUNING_PROTOCOL
- /**
- Revision parameter is used to verify the layout of EMMC_INFO and TUNINGDATA.
- If the revision is not matched, means the revision of EMMC_INFO and TUNINGDATA is not matched.
- And function will return immediately.
- **/
- IN UINT8 Revision,
- IN EMMC_INFO *EmmcInfo, ///< Pointer to EMMC_INFO
- OUT EMMC_TUNING_DATA *EmmcTuningData ///< Pointer to EMMC_TUNING_DATA
- );
- /**
- PCH EMMC TUNING PROTOCOL INTERFACE
- Platform code uses this protocol to configure Emmc Hs400 mode, by passing the EMMC_INFO information.
- PCH will setting EMMC controller based on EMMC_INFO and return EMMC_TUNING_DATA to platform code.
- Platform should keep values of EMMC_TUNING_DATA and uses to configure EMMC through policies, to
- prevent from doing EMMC tuning every boot.
- **/
- struct _PCH_EMMC_TUNING_PROTOCOL {
- EMMC_TUNE EmmcTune; ///< Emmc Hs400 Tuning Interface
- };
- #endif
|