/** @file Scs policy Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _SCS_CONFIG_H_ #define _SCS_CONFIG_H_ #define SCS_CONFIG_REVISION 1 extern EFI_GUID gScsConfigGuid; #pragma pack (push,1) typedef enum { PchScsSdDisabled = 0, PchScsSdcardMode = 2 } PCH_SCS_DEV_SD_MODE; typedef enum { DriverStrength33Ohm = 0, DriverStrength40Ohm, DriverStrength50Ohm } PCH_SCS_EMMC_DRIVER_STRENGTH; /// /// The PCH_SCS_CONFIG block describes Storage and Communication Subsystem (SCS) settings for PCH. /// typedef struct { CONFIG_BLOCK_HEADER Header; ///< Config Block Header UINT32 ScsEmmcEnabled : 2; ///< Determine if eMMC is enabled - 0: Disabled, 1: Enabled. UINT32 ScsEmmcHs400Enabled : 1; ///< Determine eMMC HS400 Mode if ScsEmmcEnabled - 0: Disabled, 1: Enabled /** Determine if HS400 Training is required, set to FALSE if Hs400 Data is valid. 0: Disabled, 1: Enabled. First Boot or CMOS clear, system boot with Default settings, set tuning required. Subsequent Boots, Get Variable 'Hs400TuningData' - if failed to get variable, set tuning required - if passed, retrieve Hs400DataValid, Hs400RxStrobe1Dll and Hs400TxDataDll from variable. Set tuning not required. - if driver strength value changes (ScsEmmcHs400DriverStrength) re-tuning is required. **/ UINT32 ScsEmmcHs400TuningRequired : 1; UINT32 ScsEmmcHs400DllDataValid : 1; ///< Set if HS400 Tuning Data Valid UINT32 ScsEmmcHs400RxStrobeDll1 : 7; ///< Rx Strobe Delay Control - Rx Strobe Delay DLL 1 (HS400 Mode) UINT32 ScsEmmcHs400TxDataDll : 7; ///< Tx Data Delay Control 1 - Tx Data Delay (HS400 Mode) UINT32 ScsEmmcHs400DriverStrength : 3; ///< I/O driver strength: 0 - 33 Ohm, 1 - 40 Ohm, 2 - 50 Ohm UINT32 ScsSdSwitch : 3; ///< Determine the operating mode of SDHC. Refer to PCH_SCS_DEV_SD_MODE for each value - 0: Disabled, 2: SDCard. UINT32 RsvdBits : 7; UINT32 Rsvd0; ///< Reserved bytes } PCH_SCS_CONFIG; #pragma pack (pop) #endif // _SCS_CONFIG_H_