/* $NoKeywords */
/**
 * @file
 *
 * MemSetup.h
 *
 * Contains common MemSetup-related structures and defines.
 *
 * @xrefitem bom "File Content Label" "Release Content"
 * @e project: FDK
 * @e sub-project: UEFI
 * @e version: $Revision: 317558 $ @e date: $Date: 2015-04-24 17:20:55 -0700 (Fri, 24 Apr 2015) $
 *
 */
/*****************************************************************************
*
*  Copyright 2013 - 2016 ADVANCED MICRO DEVICES, INC.  All Rights Reserved.
*
*  This program and the accompanying materials are licensed and made available
*  under the terms and conditions of the BSD License which accompanies this
*  distribution. The full text of the license may be found at
*  http://opensource.org/licenses/bsd-license.php
*
*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
*  IMPLIED.
*
***************************************************************************/

//#########################################################################
//#########################################################################
//#########################################################################
//        NOTE: This file shared between SCP and UEFI, make sure all     //
//              changes are reflected in both copies.                    //
//#########################################################################
//#########################################################################
//#########################################################################

#ifndef MEMSETUP_H_
#define MEMSETUP_H_

#ifdef __cplusplus
  extern "C" {
  #endif

/*----------------------------------------------------------------------------------------
 *                             M O D U L E S    U S E D
 *----------------------------------------------------------------------------------------
 */


/*----------------------------------------------------------------------------------------
 *                  T Y P E D E F S     A N D     S T R U C T U R E S
 *----------------------------------------------------------------------------------------
 */

  /// Memory Set up Structure for customer visibility
  typedef struct {
    UINT8  MemoryClockSpeed;                   ///< Memory clock speed
    UINT8  DDR3RttWr;                          ///< DDR3 Rtt_Wr
    UINT8  DDR3RttNom;                         ///< DDR3 Rtt_Nom
    UINT8  DDR4RttWr;                          ///< DDR4 Rtt_Wr
    UINT8  DDR4RttNom;                         ///< DDR4 Rtt_Nom
    UINT8  AddCtrlDriveStrength;               ///< Address/Control Drive Strength
    UINT8  ClockDriveStrengt;                  ///< Clock Drive Strength
    UINT8  DataDMDriveStrength;                ///< Data/DM Drive Strength
    UINT8  DQSDriveStrength;                   ///< DQS Drive Strength
    UINT8  PowerdownEnable;                    ///< Power down Enable
    UINT16 PowerdownIdleClocks;                ///< Power down Idle Clocks
    UINT8  LongCountMask;                      ///< Long Count Mask
    UINT8  ECCEnable;                          ///< ECC Enable/Disable
    UINT16  tref;                              ///< tref
    UINT16  tselseldq;                         ///< tsel_sel_dq
    UINT16  tselseldqs;                        ///< tsel_sel_dqs
    UINT16  trainingProgress;                  ///< training progress
    UINT16  trainingRestore;                   ///< restore training results
  } MEM_SETUP_VAR;

  #ifdef __cplusplus
  }
#endif


#endif /* MEMSETUP_H_ */
