text: /** @file
  
  Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent
  
  **/
  
  // Definition Flag:
  //                  1. KTI_HW_PLATFORM   -> run with real hardware or SoftIVT
  //                  2. KTI_SW_SIMULATION -> run with KTIRC Simulation
  //                  3. IA32              -> run with IA32 mode
  
  
  #ifndef _KTI_HOST_H_
  #define _KTI_HOST_H_
  #ifdef _MSC_VER
  #pragma warning (disable: 4127 4214 4100)     // disable C4127: constant conditional expression
  #endif
  #include "DataTypes.h"
  #include "PlatformHost.h"
  #include "KtiSi.h"
  #include "KtiDisc.h"
  
  #pragma pack(1)
  
  typedef INT32  KTI_STATUS;
  #ifndef NULL
  #define NULL  0
  #endif
  #define CONST       const
  #define STATIC      static
  #define VOID        void
  #define VOLATILE    volatile
  #define KTI_SUCCESS 0
  #define KTI_REBOOT  1
  #define KTI_SNC_CHANGED 2
  #define KTI_IGNORE  3
  #define KTI_FAILURE -1
  
  //
  // Warning log
  //
  #define MAX_WARNING_LOGS      16
  
  typedef enum {
    NORMAL_OPERATION = 0,
    RECOVERY_OPERATION
  } SNC_COLDRESET_REGISTER_OPERATION_TYPE;
  
  typedef enum {
    KTI_GROUP = 0,
  } GROUP_TYPE;
  
  /*********************************************************
                  KTIRC Host Structure Related
  *********************************************************/
  
  typedef enum {
    KTI_LINK0 =  0x0,
    KTI_LINK1,
    KTI_LINK2
  } KTI_LOGIC_LINK;
  
  typedef enum {
    FULL_SPEED = 0,
    HALF_SPEED
  } KTI_LINK_SPEED_TYPE;
  
  
  //
  // Definitions to be used in Eparam tables:
  //
  typedef enum {
    PER_LANES_TXEQ_ENABLED   = 0,         // each lane use different TXEQ value
    ALL_LANES_TXEQ_ENABLED                // all lanes use same TXEQ value
  } LANE_TXEQ_TYPE;
  
  //
  // Number of Clusters.
  //
  typedef enum {
    CLUSTER_MODE_1,
    CLUSTER_MODE_2,
  } CLUSTER_MODE;
  
  typedef enum {
    LCC = 0, // 10c
    MCC,     // 14c
    HCC,     // 22c
    XCC,     // 28c
    MAX_CHOP_TYPES
  } PHYSICAL_CHOP;
  
  
  //
  // PHY settings that are system dependent.   Need 1 of these for each socket/link/freq.
  //
  
  typedef struct {
    UINT8  SocketID;
    UINT8  AllLanesUseSameTxeq;
    UINT8  Freq;
    UINT32 Link;
    UINT32 TXEQL[20];
    UINT32 CTLEPEAK[5];
  } PER_LANE_EPARAM_LINK_INFO;
  
  //
  // This is for full speed mode, all lanes have the same TXEQ setting
  //
  typedef struct {
    UINT8  SocketID;
    UINT8  Freq;
    UINT32 Link;
    UINT32 AllLanesTXEQ;
    UINT8  CTLEPEAK;
  } ALL_LANES_EPARAM_LINK_INFO;
  
  #define ADAPTIVE_CTLE 0x3f
  #define PER_LANE_ADAPTIVE_CTLE 0X3f3f3f3f
  
  typedef enum {
    TYPE_UBOX = 0,
    TYPE_UBOX_IIO,
    TYPE_MCP,
    TYPE_FPGA,
    TYPE_DISABLED,              // This item must be prior to stack specific disable types
    TYPE_UBOX_IIO_DIS,
    TYPE_MCP_DIS,
    TYPE_FPGA_DIS,
    TYPE_NONE
  } STACK_TYPE;
  
  #pragma pack()
  
  #endif // _KTI_HOST_H_
  