

/*******************************************************************************
Copyright (C) Marvell International Ltd. and its affiliates

This software file (the "File") is owned and distributed by Marvell
International Ltd. and/or its affiliates ("Marvell") under the following
alternative licensing terms.  Once you have made an election to distribute the
File under one of the following license alternatives, please (i) delete this
introductory statement regarding license alternatives, (ii) delete the two
license alternatives that you have not elected to use and (iii) preserve the
Marvell copyright notice above.

********************************************************************************
Marvell Commercial License Option

If you received this File from Marvell and you have entered into a commercial
license agreement (a "Commercial License") with Marvell, the File is licensed
to you under the terms of the applicable Commercial License.

********************************************************************************
Marvell GPL License Option

If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File in accordance with the terms and conditions of the General
Public License Version 2, June 1991 (the "GPL License"), a copy of which is
available along with the File in the license.txt file or by writing to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
on the worldwide web at http://www.gnu.org/licenses/gpl.txt.

THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
DISCLAIMED.  The GPL License provides additional details about this warranty
disclaimer.
********************************************************************************
Marvell BSD License Option

If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File under the following licensing terms.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

    *   Redistributions of source code must retain the above copyright notice,
	    this list of conditions and the following disclaimer.

    *   Redistributions in binary form must reproduce the above copyright
		notice, this list of conditions and the following disclaimer in the
		documentation and/or other materials provided with the distribution.

    *   Neither the name of Marvell nor the names of its contributors may be
		used to endorse or promote products derived from this software without
		specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*******************************************************************************/
#ifndef _DDR_TOPOLOGY_CONFIG_H
#define _DDR_TOPOLOGY_CONFIG_H

#include "mvDdr3TrainingIpDef.h"

#ifdef CONFIG_DDR3
typedef enum
{
   SPEED_BIN_DDR_800D,
   SPEED_BIN_DDR_800E,
   SPEED_BIN_DDR_1066E,
   SPEED_BIN_DDR_1066F,
   SPEED_BIN_DDR_1066G,
   SPEED_BIN_DDR_1333F,
   SPEED_BIN_DDR_1333G,
   SPEED_BIN_DDR_1333H,
   SPEED_BIN_DDR_1333J,
   SPEED_BIN_DDR_1600G,
   SPEED_BIN_DDR_1600H,
   SPEED_BIN_DDR_1600J,
   SPEED_BIN_DDR_1600K,
   SPEED_BIN_DDR_1866J,
   SPEED_BIN_DDR_1866K,
   SPEED_BIN_DDR_1866L,
   SPEED_BIN_DDR_1866M,
   SPEED_BIN_DDR_2133K,
   SPEED_BIN_DDR_2133L,
   SPEED_BIN_DDR_2133M,
   SPEED_BIN_DDR_2133N,

   SPEED_BIN_DDR_1333H_EXT,
   SPEED_BIN_DDR_1600K_EXT,
   SPEED_BIN_DDR_1866M_EXT
}MV_HWS_SPEED_BIN;

typedef enum 
{
  DDR_FREQ_LOW_FREQ,
  DDR_FREQ_400,
  DDR_FREQ_533,
  DDR_FREQ_667,
  DDR_FREQ_800,
  DDR_FREQ_933,
  DDR_FREQ_1066,
  DDR_FREQ_311,
  DDR_FREQ_333,
  DDR_FREQ_467,
  DDR_FREQ_850,
  DDR_FREQ_600,
  DDR_FREQ_300,
  DDR_FREQ_900,
  DDR_FREQ_360,
  DDR_FREQ_1000,
   DDR_FREQ_LIMIT
}MV_HWS_DDR_FREQ;

typedef enum
{
    speedBinTableElements_tRCD,
    speedBinTableElements_tRP,
    speedBinTableElements_tRAS,
    speedBinTableElements_tRC,
    speedBinTableElements_tRRD1K,
    speedBinTableElements_tRRD2K,
    speedBinTableElements_tPD,
    speedBinTableElements_tFAW1K,
    speedBinTableElements_tFAW2K,
    speedBinTableElements_tWTR,
    speedBinTableElements_tRTP,
    speedBinTableElements_tWR,
    speedBinTableElements_tMOD
}speedBinTableElements;

#elif defined(CONFIG_DDR4)

typedef enum
{
    SPEED_BIN_DDR_1600J,
    SPEED_BIN_DDR_1600K,
    SPEED_BIN_DDR_1600L,
    SPEED_BIN_DDR_1866L,
    SPEED_BIN_DDR_1866M,
    SPEED_BIN_DDR_1866N,
    SPEED_BIN_DDR_2133N,
    SPEED_BIN_DDR_2133P,
    SPEED_BIN_DDR_2133R,
    SPEED_BIN_DDR_2400P,
    SPEED_BIN_DDR_2400R,
    SPEED_BIN_DDR_2400U,
}MV_HWS_SPEED_BIN;

typedef enum 
{
    DDR_FREQ_LOW_FREQ,
    DDR_FREQ_667,
    DDR_FREQ_800,
    DDR_FREQ_933,
    DDR_FREQ_1066,
	DDR_FREQ_900,
	DDR_FREQ_1000,
    DDR_FREQ_LIMIT
}MV_HWS_DDR_FREQ;

typedef enum
{
    speedBinTableElements_tRCD,
    speedBinTableElements_tRP,
    speedBinTableElements_tRAS,
    speedBinTableElements_tRC,
    speedBinTableElements_tRRD0_5K,
    speedBinTableElements_tRRD1K,
    speedBinTableElements_tRRD2K,
    speedBinTableElements_tRRDL0_5K,
    speedBinTableElements_tRRDL1K,
    speedBinTableElements_tRRDL2K,
    speedBinTableElements_tPD,
    speedBinTableElements_tFAW0_5K,
    speedBinTableElements_tFAW1K,
    speedBinTableElements_tFAW2K,
    speedBinTableElements_tWTR,
    speedBinTableElements_tWTRL,
    speedBinTableElements_tRTP,
    speedBinTableElements_tWR,
    speedBinTableElements_tMOD
}speedBinTableElements;

#else
# error "CONFIG_DDR3 or CONFIG_DDR4 must be defined !!!"
#endif

/************************* Definitions *******************************************/

#if defined(CONFIG_BOBCAT2) || (defined(CHX_FAMILY) || defined(EXMXPM_FAMILY))
#define MAX_INTERFACE_NUM  		(5)
#else
#define MAX_INTERFACE_NUM  		(1)
#endif

#define MAX_BUS_NUM        		(5)

#define SDRAM_CS_SIZE				0xFFFFFFF
#define MV_PARAMS_UNDEFINED 		0xFFFFFFFF
/************************* Topology *******************************************/

/* bus width in bits */
typedef enum
{
   BUS_WIDTH_4,
   BUS_WIDTH_8,
   BUS_WIDTH_16,
   BUS_WIDTH_32

} MV_HWS_BUS_WIDTH;

typedef enum
{
   MV_HWS_TEMP_LOW,
   MV_HWS_TEMP_NORMAL,
   MV_HWS_TEMP_HIGH

}MV_HWS_TEMPERTURE;

typedef enum 
{
   MEM_512M,
   MEM_1G,
   MEM_2G,
   MEM_4G,
   MEM_8G,
   MEM_SIZE_LAST
}MV_HWS_MEM_SIZE;

typedef struct 
{
   /* Chip Select (CS) bitmask (bits 0-CS0, bit 1- CS1 ...) */
   GT_U8      csBitmask;

   /* mirror enable/disable (bits 0-CS0 mirroring, bit 1- CS1 mirroring ...)*/
   GT_BOOL      mirrorEnableBitmask;

   /* DQS Swap (polarity) - true if enable*/
   GT_BOOL      isDqsSwap;

   /* CK swap (polarity) - true if enable*/
   GT_BOOL      isCkSwap;

} BusParams;

typedef struct 
{
   /* bus configuration */
   BusParams   asBusParams[MAX_BUS_NUM];
      
   /* Speed Bin Table*/
   MV_HWS_SPEED_BIN      speedBinIndex;

   /* bus width of memory */
   MV_HWS_BUS_WIDTH   busWidth;

   /* Bus memory size (MBit) */
   MV_HWS_MEM_SIZE      memorySize;

   /* The DDR frequency for each interfaces */
   MV_HWS_DDR_FREQ      memoryFreq;

   /* delay CAS Write Latency - 0 for using default value (jedec suggested) */
   GT_U8      casWL;

   /* delay CAS Latency - 0 for using default value (jedec suggested) */
   GT_U8      casL;

   /* operation temperature */
   MV_HWS_TEMPERTURE   interfaceTemp;

} InterfaceParams;

/***********************************/

typedef struct
{
    /* Number of interfaces (default is 12)*/
    GT_U8              interfaceActiveMask;

   /* Controller configuration per interface */
   InterfaceParams      interfaceParams[MAX_INTERFACE_NUM];

   /* Bit mask for active buses*/
   GT_U8               activeBusMask;

} MV_HWS_TOPOLOGY_MAP;

/***********************************
DDR3 training global configuration parameters*/
typedef struct
{
	GT_U32	ckDelay;
	GT_U32	PhyReg3Val;

	GT_U32 gZpriData;
	GT_U32 gZnriData;
	GT_U32 gZpriCtrl;
	GT_U32 gZnriCtrl;
	GT_U32 gZpodtData;
	GT_U32 gZnodtData;
	GT_U32 gZpodtCtrl;
	GT_U32 gZnodtCtrl;
	GT_U32 gDic;
	GT_U32 uiODTConfig;
	GT_U32 gRttNom;
	GT_U32 gRttWR;
} GT_TUNE_TRAINING_PARAMS;

#endif /* _DDR_TOPOLOGY_CONFIG_H */


