blob: 4cf4cbf3d487fa879f9e8d0c1776e744304ab2fd [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.
*******************************************************************************
* mvHwsDdr3Bc2.h
*
* DESCRIPTION:
*
*
* FILE REVISION NUMBER:
* $Revision: 9 $
*
*******************************************************************************/
#ifndef __mvHwsDdr3_BC2_H
#define __mvHwsDdr3_BC2_H
#include "mvDdr3TrainingIpStatic.h"
#include "mvDdr3TrainingIp.h"
#ifdef __cplusplus
extern "C" {
#endif
/************************* Definitions ***********************************************/
#define BC2_NUMBER_OF_INTERFACES (5)
#define BC2_NUMBER_OF_PUP (4)
#define BC2_NUMBER_OF_BOARDS (2)
#define BC2_DEVICE_SAR1_REG_ADDR 0xF8200
#define BC2_DEVICE_SAR2_REG_ADDR 0xF8204
#define BC2_JTAG_DEV_ID_STATUS_REG_ADDR 0x000F8244
#define BC2_DEV_GENERAL_STATUS_REG1_ADDR_A0 0x000F82B4
#define BC2_DEV_GENERAL_STATUS_REG1_ADDR_B0 0x000F8C84
#define BC2_JTAG_DEV_ID_STATUS_VERSION_OFFSET 28
#define BC2_DEVICE_SAR1_MSYS_TM_SDRAM_SEL_OFFSET 11
#define BC2_DEVICE_SAR1_MSYS_TM_SDRAM_SEL_MASK 0x1
/************************* Enums ***********************************************/
typedef enum {
TM_EN,
MSYS_EN
}DDR_IF_ASSIGNMENT;
/************************* Globals ***********************************************/
#ifndef DEFINE_GLOBALS
extern TripDelayElement bc2BoardRoundTripDelayArray[BC2_NUMBER_OF_INTERFACES*BC2_NUMBER_OF_PUP*BC2_NUMBER_OF_BOARDS];
#else
/* this array hold the board round trip delay (DQ and CK) per <interfcae,bus> */
TripDelayElement bc2BoardRoundTripDelayArray[BC2_NUMBER_OF_INTERFACES*BC2_NUMBER_OF_PUP*BC2_NUMBER_OF_BOARDS] =
{
/* 1st board */
/*interface bus DQS-delay CK-delay */
{ 3012, 6715 },
{ 2625, 6715 },
{ 3023, 6458 },
{ 2663, 6458 },
{ 2596, 6691 },
{ 2555, 6691 },
{ 2830, 6429 },
{ 2592, 6429 },
{ 3039, 6905 },
{ 2731, 6905 },
{ 2830, 6429 },
{ 2592, 6429 },
{ 2828, 6505 },
{ 2608, 6505 },
{ 3129, 6789 },
{ 2877, 6789 },
{ 2755, 7208 },
{ 3489, 7208 },
{ 2677, 7187 },
{ 3472, 7187 },
/* 2nd board */
/*interface bus DQS-delay CK-delay */
{ 3012, 6715 },
{ 2625, 6715 },
{ 3023, 6458 },
{ 2663, 6458 },
{ 2596, 6691 },
{ 2555, 6691 },
{ 2830, 6429 },
{ 2592, 6429 },
{ 3039, 6905 },
{ 2731, 6905 },
{ 2830, 6429 },
{ 2592, 6429 },
{ 2828, 6505 },
{ 2608, 6505 },
{ 3129, 6789 },
{ 2877, 6789 },
{ 2755, 7208 },
{ 3489, 7208 },
{ 2677, 7187 },
{ 3472, 7187 }
};
#endif
#ifndef DEFINE_GLOBALS
extern TripDelayElement bc2PackageRoundTripDelayArray[BC2_NUMBER_OF_INTERFACES*BC2_NUMBER_OF_PUP];
#else
/* package trace */
TripDelayElement bc2PackageRoundTripDelayArray[BC2_NUMBER_OF_INTERFACES*BC2_NUMBER_OF_PUP] =
{
/*IF BUS DQ_DELYA CK_DELAY */
{ 362, 813 },
{ 458, 813 },
{ 405, 750 },
{ 446, 750 },
{ 393, 718 },
{ 331, 718 },
{ 316, 720 },
{ 366, 720 },
{ 512, 805 },
{ 454, 805 },
{ 514, 867 },
{ 380, 867 },
{ 498, 901 },
{ 586, 901 },
{ 523, 932 },
{ 489, 932 },
{ 375, 693 },
{ 400, 693 },
{ 380, 723 },
{ 358, 723 }
};
#endif
#ifndef DEFINE_GLOBALS
extern GT_32 bc2SiliconDelayOffset[];
#else
GT_32 bc2SiliconDelayOffset[] =
{
/* board 0 */
0,
/* board 1 */
0,
/* board 2 */
0
};
#endif
/************************* Functions Declarations ***********************************************/
/******************************************************************************
* Name: ddr3TipInitBc2.
* Desc: init Training SW DB and updates DDR topology.
* Args:
* Notes:
* Returns: GT_OK if success, other error code if fail.
*/
GT_STATUS ddr3TipInitBc2
(
GT_U32 devNum,
GT_U32 boardId
) ;
/******************************************************************************
* Name: ddr3GetSdramAssignment
* Desc: read S@R and return DDR3 assignment ( 0 = TM , 1 = MSYS )
* Args:
* Notes:
* Returns: required value
*/
DDR_IF_ASSIGNMENT ddr3GetSdramAssignment(GT_U8 devNum);
#ifdef __cplusplus
}
#endif
#endif /* __mvHwsDdr3_BC2_H */