blob: 2746fad1fd4edce880b28c4e75c8b9e2b8c2fe64 [file] [log] [blame]
/******************************************************************************
* 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.
* 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.
*******************************************************************************
* mvDdr3TrainingIPDef.h
*
* DESCRIPTION:
*
*
* FILE REVISION NUMBER:
* $Revision: 42 $
*
*******************************************************************************/
#ifndef __mvDdr3TrainingIPDef_H
#define __mvDdr3TrainingIPDef_H
#include <gtOs/gtGenTypes.h>
#include "common/siliconIf/mvSiliconIf.h"
#if defined(CHX_FAMILY) || defined(EXMXPM_FAMILY)
#define CPSS_BUILD
#endif
#if defined(CHX_FAMILY) || defined(EXMXPM_FAMILY)
#define osMemCpy hwsOsMemCopyFuncPtr
#else
#include <gtOs/gtOsMem.h>
#include <gtOs/gtOsIo.h>
#endif
#if defined(CHX_FAMILY) || defined(EXMXPM_FAMILY) || defined (WIN32)
#define INLINE
#else
#define INLINE inline
#endif
#if !defined(CHX_FAMILY) && !defined(EXMXPM_FAMILY) /* to avoid duplicated definition
of ASIC_SIMULATION in case it was defined */
#ifdef WIN32
#define ASIC_SIMULATION
#endif
#endif
#define PATTERN_55 (0x55555555)
#define PATTERN_AA (0xAAAAAAAA)
#define PATTERN_80 (0x80808080)
#define PATTERN_20 (0x20202020)
#define PATTERN_01 (0x01010101)
#define PATTERN_FF (0xFFFFFFFF)
#define PATTERN_00 (0x00000000)
/*16bit bus width patterns*/
#define PATTERN_55AA (0x5555AAAA)
#define PATTERN_00FF (0x0000FFFF)
#define PATTERN_0080 (0x00008080)
#define INVALID_VALUE (0xffffffff)
#define MAX_NUM_OF_DUNITS (32)
/* length *2 = length in words of pattern, first low address, second high address */
#define TEST_PATTERN_LENGTH (4)
#define KILLER_PATTERN_DQ_NUMBER (8)
#define SSO_DQ_NUMBER (4)
#define PATTERN_MAXIMUM_LENGTH (64)
#define ADLL_TX_LENGTH (64)
#define ADLL_RX_LENGTH (32)
#define PARAM_NOT_CARE (0)
#define READ_LEVELING_PHY_OFFSET (2)
#define WRITE_LEVELING_PHY_OFFSET (0)
#define MASK_ALL_BITS (0xffffffff)
#define CS_BIT_MASK (0xF)
/* DFX access */
#define BROADCAST_ID (28)
#define MULTICAST_ID (29)
#define XSB_BASE_ADDR (0x00004000)
#define XSB_CTRL_0_REG (0x00000000)
#define XSB_CTRL_1_REG (0x00000004)
#define XSB_CMD_REG (0x00000008)
#define XSB_ADDRESS_REG (0x0000000C)
#define XSB_DATA_REG (0x00000010)
#define PIPE_ENABLE_ADDR (0x000f8000)
#define ENABLE_DDR_TUNING_ADDR (0x000f829C)
#define CLIENT_BASE_ADDR (0x00002000)
#define CLIENT_CTRL_REG (0x00000000)
#define TARGET_INT (0x1801)
#define TARGET_EXT (0x180E)
#define BYTE_EN (0)
#define CMD_READ (0)
#define CMD_WRITE (1)
#define INTERNAL_ACCESS_PORT (1)
#define EXECUTING (1)
#define ACCESS_EXT (1)
#define CS2_EXIST_BIT (2)
#define TRAINING_ID (0xF)
#define EXT_TRAINING_ID (1)
#define EXT_MODE (0x4)
#define GET_RESULT_STATE(res) (res )
#define SET_RESULT_STATE(res, state) (res = state)
#if !defined(CHX_FAMILY) && !defined(EXMXPM_FAMILY)
#define _1K 0x00000400
#define _4K 0x00001000
#define _8K 0x00002000
#define _16K 0x00004000
#define _32K 0x00008000
#define _64K 0x00010000
#define _128K 0x00020000
#define _256K 0x00040000
#define _512K 0x00080000
#define _1M 0x00100000
#define _2M 0x00200000
#define _4M 0x00400000
#define _8M 0x00800000
#define _16M 0x01000000
#define _32M 0x02000000
#define _64M 0x04000000
#define _128M 0x08000000
#define _256M 0x10000000
#define _512M 0x20000000
#define _1G 0x40000000
#endif
#define _2G 0x80000000
#define ADDR_SIZE_512Mb 0x04000000
#define ADDR_SIZE_1Gb 0x08000000
#define ADDR_SIZE_2Gb 0x10000000
#define ADDR_SIZE_4Gb 0x20000000
#define ADDR_SIZE_8Gb 0x40000000
/******************************** enum ***************************************/
typedef enum
{
FreqField_PLL_NDIV,
FreqField_PLL_MDIV,
FreqField_PLL_KDIV,
FreqField_PLL_VCO_BAND,
FreqField_PLL_LPF_R1_CTRL,
MV_HWS_FreqField_LIMIT
}MV_HWS_FreqField;
typedef enum
{
EDGE_PF,
EDGE_FP,
EDGE_FPF,
EDGE_PFP
}MV_HWS_EdgeCompare;
typedef enum
{
MV_HWS_ControlElement_ADLL, /* per bit 1 edge */
MV_HWS_ControlElement_DQ_SKEW,
MV_HWS_ControlElement_DQS_SKEW
}MV_HWS_ControlElement;
typedef enum
{
MV_HWS_TrainingType_PBS, /* per bit 1 edge */
MV_HWS_TrainingType_ADLL_SHIFT, /* per pup 1 edge */
MV_HWS_TrainingType_CENTRALIZATION /* per pup 2 edge */
}MV_HWS_TrainingType;
typedef enum
{
MV_HWS_Low2High,
MV_HWS_High2Low,
MV_HWS_SearchDirLimit
}MV_HWS_SearchDirection;
typedef enum
{
PageSize_1K,
PageSize_2K
}MV_HWS_PageSize;
typedef enum
{
MV_HWS_InitialValues_ADLL,
MV_HWS_InitialValues_PBS
}MV_HWS_InitialValues;
typedef enum
{
Operation_READ = 0,
Operation_WRITE = 1
} MV_HWS_Operation;
typedef enum
{
MV_HWS_TrainingIpStatus_FAIL,
MV_HWS_TrainingIpStatus_SUCCESS,
MV_HWS_TrainingIpStatus_TIMEOUT
}MV_HWS_TrainingIpStatus;
typedef enum _MV_HWS_CsType
{
CS_SINGLE,
CS_NON_SINGLE
}MV_HWS_DDR_CS;
typedef enum
{
DDR_PHY_DATA = 0,
DDR_PHY_CONTROL = 1
} MV_HWS_DDR_PHY;
typedef enum
{
MV_HWS_MemoryType_Dummy
} MV_HWS_MemoryType;
typedef enum
{
OPER_WRITE,
OPER_READ,
OPER_WRITE_AND_READ
}MV_HWS_DIRECTION;
typedef enum
{
PHASE_SHIFT,
CLOCK_SHIFT,
ALIGN_SHIFT
}MV_HWS_WL_SUPP;
/************************* Structures ***********************************************/
typedef struct
{
GT_U32 regAddr;
GT_U32 regData;
GT_U32 regMask;
} RegData;
#endif /* __mvDdr3TrainingIPDef_H */