Path: blob/master/arch/arm/mach-bcmring/include/mach/csp/ddrcReg.h
10821 views
/*****************************************************************************1* Copyright 2003 - 2008 Broadcom Corporation. All rights reserved.2*3* Unless you and Broadcom execute a separate written software license4* agreement governing use of this software, this software is licensed to you5* under the terms of the GNU General Public License version 2, available at6* http://www.broadcom.com/licenses/GPLv2.php (the "GPL").7*8* Notwithstanding the above, under no circumstances may you combine this9* software in any way with any other Broadcom software provided under a10* license other than the GPL, without Broadcom's express prior written11* consent.12*****************************************************************************/1314/****************************************************************************/15/**16* @file ddrcReg.h17*18* @brief Register definitions for BCMRING DDR2 Controller and PHY19*20*/21/****************************************************************************/2223#ifndef DDRC_REG_H24#define DDRC_REG_H2526#ifdef __cplusplus27extern "C" {28#endif2930/* ---- Include Files ---------------------------------------------------- */3132#include <csp/reg.h>33#include <csp/stdint.h>3435#include <mach/csp/mm_io.h>3637/* ---- Public Constants and Types --------------------------------------- */3839/*********************************************************************/40/* DDR2 Controller (ARM PL341) register definitions */41/*********************************************************************/4243/* -------------------------------------------------------------------- */44/* -------------------------------------------------------------------- */45/* ARM PL341 DDR2 configuration registers, offset 0x000 */46/* -------------------------------------------------------------------- */47/* -------------------------------------------------------------------- */4849typedef struct {50uint32_t memcStatus;51uint32_t memcCmd;52uint32_t directCmd;53uint32_t memoryCfg;54uint32_t refreshPrd;55uint32_t casLatency;56uint32_t writeLatency;57uint32_t tMrd;58uint32_t tRas;59uint32_t tRc;60uint32_t tRcd;61uint32_t tRfc;62uint32_t tRp;63uint32_t tRrd;64uint32_t tWr;65uint32_t tWtr;66uint32_t tXp;67uint32_t tXsr;68uint32_t tEsr;69uint32_t memoryCfg2;70uint32_t memoryCfg3;71uint32_t tFaw;72} ddrcReg_CTLR_MEMC_REG_t;7374#define ddrcReg_CTLR_MEMC_REG_OFFSET 0x000075#define ddrcReg_CTLR_MEMC_REGP ((volatile ddrcReg_CTLR_MEMC_REG_t *) (MM_IO_BASE_DDRC + ddrcReg_CTLR_MEMC_REG_OFFSET))7677/* ----------------------------------------------------- */7879#define ddrcReg_CTLR_MEMC_STATUS_BANKS_MASK (0x3 << 12)80#define ddrcReg_CTLR_MEMC_STATUS_BANKS_4 (0x0 << 12)81#define ddrcReg_CTLR_MEMC_STATUS_BANKS_8 (0x3 << 12)8283#define ddrcReg_CTLR_MEMC_STATUS_MONITORS_MASK (0x3 << 10)84#define ddrcReg_CTLR_MEMC_STATUS_MONITORS_0 (0x0 << 10)85#define ddrcReg_CTLR_MEMC_STATUS_MONITORS_1 (0x1 << 10)86#define ddrcReg_CTLR_MEMC_STATUS_MONITORS_2 (0x2 << 10)87#define ddrcReg_CTLR_MEMC_STATUS_MONITORS_4 (0x3 << 10)8889#define ddrcReg_CTLR_MEMC_STATUS_CHIPS_MASK (0x3 << 7)90#define ddrcReg_CTLR_MEMC_STATUS_CHIPS_1 (0x0 << 7)91#define ddrcReg_CTLR_MEMC_STATUS_CHIPS_2 (0x1 << 7)92#define ddrcReg_CTLR_MEMC_STATUS_CHIPS_3 (0x2 << 7)93#define ddrcReg_CTLR_MEMC_STATUS_CHIPS_4 (0x3 << 7)9495#define ddrcReg_CTLR_MEMC_STATUS_TYPE_MASK (0x7 << 4)96#define ddrcReg_CTLR_MEMC_STATUS_TYPE_DDR2 (0x5 << 4)9798#define ddrcReg_CTLR_MEMC_STATUS_WIDTH_MASK (0x3 << 2)99#define ddrcReg_CTLR_MEMC_STATUS_WIDTH_16 (0x0 << 2)100#define ddrcReg_CTLR_MEMC_STATUS_WIDTH_32 (0x1 << 2)101#define ddrcReg_CTLR_MEMC_STATUS_WIDTH_64 (0x2 << 2)102#define ddrcReg_CTLR_MEMC_STATUS_WIDTH_128 (0x3 << 2)103104#define ddrcReg_CTLR_MEMC_STATUS_STATE_MASK (0x3 << 0)105#define ddrcReg_CTLR_MEMC_STATUS_STATE_CONFIG (0x0 << 0)106#define ddrcReg_CTLR_MEMC_STATUS_STATE_READY (0x1 << 0)107#define ddrcReg_CTLR_MEMC_STATUS_STATE_PAUSED (0x2 << 0)108#define ddrcReg_CTLR_MEMC_STATUS_STATE_LOWPWR (0x3 << 0)109110/* ----------------------------------------------------- */111112#define ddrcReg_CTLR_MEMC_CMD_MASK (0x7 << 0)113#define ddrcReg_CTLR_MEMC_CMD_GO (0x0 << 0)114#define ddrcReg_CTLR_MEMC_CMD_SLEEP (0x1 << 0)115#define ddrcReg_CTLR_MEMC_CMD_WAKEUP (0x2 << 0)116#define ddrcReg_CTLR_MEMC_CMD_PAUSE (0x3 << 0)117#define ddrcReg_CTLR_MEMC_CMD_CONFIGURE (0x4 << 0)118#define ddrcReg_CTLR_MEMC_CMD_ACTIVE_PAUSE (0x7 << 0)119120/* ----------------------------------------------------- */121122#define ddrcReg_CTLR_DIRECT_CMD_CHIP_SHIFT 20123#define ddrcReg_CTLR_DIRECT_CMD_CHIP_MASK (0x3 << ddrcReg_CTLR_DIRECT_CMD_CHIP_SHIFT)124125#define ddrcReg_CTLR_DIRECT_CMD_TYPE_PRECHARGEALL (0x0 << 18)126#define ddrcReg_CTLR_DIRECT_CMD_TYPE_AUTOREFRESH (0x1 << 18)127#define ddrcReg_CTLR_DIRECT_CMD_TYPE_MODEREG (0x2 << 18)128#define ddrcReg_CTLR_DIRECT_CMD_TYPE_NOP (0x3 << 18)129130#define ddrcReg_CTLR_DIRECT_CMD_BANK_SHIFT 16131#define ddrcReg_CTLR_DIRECT_CMD_BANK_MASK (0x3 << ddrcReg_CTLR_DIRECT_CMD_BANK_SHIFT)132133#define ddrcReg_CTLR_DIRECT_CMD_ADDR_SHIFT 0134#define ddrcReg_CTLR_DIRECT_CMD_ADDR_MASK (0x1ffff << ddrcReg_CTLR_DIRECT_CMD_ADDR_SHIFT)135136/* ----------------------------------------------------- */137138#define ddrcReg_CTLR_MEMORY_CFG_CHIP_CNT_MASK (0x3 << 21)139#define ddrcReg_CTLR_MEMORY_CFG_CHIP_CNT_1 (0x0 << 21)140#define ddrcReg_CTLR_MEMORY_CFG_CHIP_CNT_2 (0x1 << 21)141#define ddrcReg_CTLR_MEMORY_CFG_CHIP_CNT_3 (0x2 << 21)142#define ddrcReg_CTLR_MEMORY_CFG_CHIP_CNT_4 (0x3 << 21)143144#define ddrcReg_CTLR_MEMORY_CFG_QOS_ARID_MASK (0x7 << 18)145#define ddrcReg_CTLR_MEMORY_CFG_QOS_ARID_3_0 (0x0 << 18)146#define ddrcReg_CTLR_MEMORY_CFG_QOS_ARID_4_1 (0x1 << 18)147#define ddrcReg_CTLR_MEMORY_CFG_QOS_ARID_5_2 (0x2 << 18)148#define ddrcReg_CTLR_MEMORY_CFG_QOS_ARID_6_3 (0x3 << 18)149#define ddrcReg_CTLR_MEMORY_CFG_QOS_ARID_7_4 (0x4 << 18)150#define ddrcReg_CTLR_MEMORY_CFG_QOS_ARID_8_5 (0x5 << 18)151#define ddrcReg_CTLR_MEMORY_CFG_QOS_ARID_9_6 (0x6 << 18)152#define ddrcReg_CTLR_MEMORY_CFG_QOS_ARID_10_7 (0x7 << 18)153154#define ddrcReg_CTLR_MEMORY_CFG_BURST_LEN_MASK (0x7 << 15)155#define ddrcReg_CTLR_MEMORY_CFG_BURST_LEN_4 (0x2 << 15)156#define ddrcReg_CTLR_MEMORY_CFG_BURST_LEN_8 (0x3 << 15) /* @note Not supported in PL341 */157158#define ddrcReg_CTLR_MEMORY_CFG_PWRDOWN_ENABLE (0x1 << 13)159160#define ddrcReg_CTLR_MEMORY_CFG_PWRDOWN_CYCLES_SHIFT 7161#define ddrcReg_CTLR_MEMORY_CFG_PWRDOWN_CYCLES_MASK (0x3f << ddrcReg_CTLR_MEMORY_CFG_PWRDOWN_CYCLES_SHIFT)162163#define ddrcReg_CTLR_MEMORY_CFG_AXI_ROW_BITS_MASK (0x7 << 3)164#define ddrcReg_CTLR_MEMORY_CFG_AXI_ROW_BITS_11 (0x0 << 3)165#define ddrcReg_CTLR_MEMORY_CFG_AXI_ROW_BITS_12 (0x1 << 3)166#define ddrcReg_CTLR_MEMORY_CFG_AXI_ROW_BITS_13 (0x2 << 3)167#define ddrcReg_CTLR_MEMORY_CFG_AXI_ROW_BITS_14 (0x3 << 3)168#define ddrcReg_CTLR_MEMORY_CFG_AXI_ROW_BITS_15 (0x4 << 3)169#define ddrcReg_CTLR_MEMORY_CFG_AXI_ROW_BITS_16 (0x5 << 3)170171#define ddrcReg_CTLR_MEMORY_CFG_AXI_COL_BITS_MASK (0x7 << 0)172#define ddrcReg_CTLR_MEMORY_CFG_AXI_COL_BITS_9 (0x1 << 0)173#define ddrcReg_CTLR_MEMORY_CFG_AXI_COL_BITS_10 (0x2 << 0)174#define ddrcReg_CTLR_MEMORY_CFG_AXI_COL_BITS_11 (0x3 << 0)175176/* ----------------------------------------------------- */177178#define ddrcReg_CTLR_REFRESH_PRD_SHIFT 0179#define ddrcReg_CTLR_REFRESH_PRD_MASK (0x7fff << ddrcReg_CTLR_REFRESH_PRD_SHIFT)180181/* ----------------------------------------------------- */182183#define ddrcReg_CTLR_CAS_LATENCY_SHIFT 1184#define ddrcReg_CTLR_CAS_LATENCY_MASK (0x7 << ddrcReg_CTLR_CAS_LATENCY_SHIFT)185186/* ----------------------------------------------------- */187188#define ddrcReg_CTLR_WRITE_LATENCY_SHIFT 0189#define ddrcReg_CTLR_WRITE_LATENCY_MASK (0x7 << ddrcReg_CTLR_WRITE_LATENCY_SHIFT)190191/* ----------------------------------------------------- */192193#define ddrcReg_CTLR_T_MRD_SHIFT 0194#define ddrcReg_CTLR_T_MRD_MASK (0x7f << ddrcReg_CTLR_T_MRD_SHIFT)195196/* ----------------------------------------------------- */197198#define ddrcReg_CTLR_T_RAS_SHIFT 0199#define ddrcReg_CTLR_T_RAS_MASK (0x1f << ddrcReg_CTLR_T_RAS_SHIFT)200201/* ----------------------------------------------------- */202203#define ddrcReg_CTLR_T_RC_SHIFT 0204#define ddrcReg_CTLR_T_RC_MASK (0x1f << ddrcReg_CTLR_T_RC_SHIFT)205206/* ----------------------------------------------------- */207208#define ddrcReg_CTLR_T_RCD_SCHEDULE_DELAY_SHIFT 8209#define ddrcReg_CTLR_T_RCD_SCHEDULE_DELAY_MASK (0x7 << ddrcReg_CTLR_T_RCD_SCHEDULE_DELAY_SHIFT)210211#define ddrcReg_CTLR_T_RCD_SHIFT 0212#define ddrcReg_CTLR_T_RCD_MASK (0x7 << ddrcReg_CTLR_T_RCD_SHIFT)213214/* ----------------------------------------------------- */215216#define ddrcReg_CTLR_T_RFC_SCHEDULE_DELAY_SHIFT 8217#define ddrcReg_CTLR_T_RFC_SCHEDULE_DELAY_MASK (0x7f << ddrcReg_CTLR_T_RFC_SCHEDULE_DELAY_SHIFT)218219#define ddrcReg_CTLR_T_RFC_SHIFT 0220#define ddrcReg_CTLR_T_RFC_MASK (0x7f << ddrcReg_CTLR_T_RFC_SHIFT)221222/* ----------------------------------------------------- */223224#define ddrcReg_CTLR_T_RP_SCHEDULE_DELAY_SHIFT 8225#define ddrcReg_CTLR_T_RP_SCHEDULE_DELAY_MASK (0x7 << ddrcReg_CTLR_T_RP_SCHEDULE_DELAY_SHIFT)226227#define ddrcReg_CTLR_T_RP_SHIFT 0228#define ddrcReg_CTLR_T_RP_MASK (0xf << ddrcReg_CTLR_T_RP_SHIFT)229230/* ----------------------------------------------------- */231232#define ddrcReg_CTLR_T_RRD_SHIFT 0233#define ddrcReg_CTLR_T_RRD_MASK (0xf << ddrcReg_CTLR_T_RRD_SHIFT)234235/* ----------------------------------------------------- */236237#define ddrcReg_CTLR_T_WR_SHIFT 0238#define ddrcReg_CTLR_T_WR_MASK (0x7 << ddrcReg_CTLR_T_WR_SHIFT)239240/* ----------------------------------------------------- */241242#define ddrcReg_CTLR_T_WTR_SHIFT 0243#define ddrcReg_CTLR_T_WTR_MASK (0x7 << ddrcReg_CTLR_T_WTR_SHIFT)244245/* ----------------------------------------------------- */246247#define ddrcReg_CTLR_T_XP_SHIFT 0248#define ddrcReg_CTLR_T_XP_MASK (0xff << ddrcReg_CTLR_T_XP_SHIFT)249250/* ----------------------------------------------------- */251252#define ddrcReg_CTLR_T_XSR_SHIFT 0253#define ddrcReg_CTLR_T_XSR_MASK (0xff << ddrcReg_CTLR_T_XSR_SHIFT)254255/* ----------------------------------------------------- */256257#define ddrcReg_CTLR_T_ESR_SHIFT 0258#define ddrcReg_CTLR_T_ESR_MASK (0xff << ddrcReg_CTLR_T_ESR_SHIFT)259260/* ----------------------------------------------------- */261262#define ddrcReg_CTLR_MEMORY_CFG2_WIDTH_MASK (0x3 << 6)263#define ddrcReg_CTLR_MEMORY_CFG2_WIDTH_16BITS (0 << 6)264#define ddrcReg_CTLR_MEMORY_CFG2_WIDTH_32BITS (1 << 6)265#define ddrcReg_CTLR_MEMORY_CFG2_WIDTH_64BITS (2 << 6)266267#define ddrcReg_CTLR_MEMORY_CFG2_AXI_BANK_BITS_MASK (0x3 << 4)268#define ddrcReg_CTLR_MEMORY_CFG2_AXI_BANK_BITS_2 (0 << 4)269#define ddrcReg_CTLR_MEMORY_CFG2_AXI_BANK_BITS_3 (3 << 4)270271#define ddrcReg_CTLR_MEMORY_CFG2_CKE_INIT_STATE_LOW (0 << 3)272#define ddrcReg_CTLR_MEMORY_CFG2_CKE_INIT_STATE_HIGH (1 << 3)273274#define ddrcReg_CTLR_MEMORY_CFG2_DQM_INIT_STATE_LOW (0 << 2)275#define ddrcReg_CTLR_MEMORY_CFG2_DQM_INIT_STATE_HIGH (1 << 2)276277#define ddrcReg_CTLR_MEMORY_CFG2_CLK_MASK (0x3 << 0)278#define ddrcReg_CTLR_MEMORY_CFG2_CLK_ASYNC (0 << 0)279#define ddrcReg_CTLR_MEMORY_CFG2_CLK_SYNC_A_LE_M (1 << 0)280#define ddrcReg_CTLR_MEMORY_CFG2_CLK_SYNC_A_GT_M (3 << 0)281282/* ----------------------------------------------------- */283284#define ddrcReg_CTLR_MEMORY_CFG3_REFRESH_TO_SHIFT 0285#define ddrcReg_CTLR_MEMORY_CFG3_REFRESH_TO_MASK (0x7 << ddrcReg_CTLR_MEMORY_CFG3_REFRESH_TO_SHIFT)286287/* ----------------------------------------------------- */288289#define ddrcReg_CTLR_T_FAW_SCHEDULE_DELAY_SHIFT 8290#define ddrcReg_CTLR_T_FAW_SCHEDULE_DELAY_MASK (0x1f << ddrcReg_CTLR_T_FAW_SCHEDULE_DELAY_SHIFT)291292#define ddrcReg_CTLR_T_FAW_PERIOD_SHIFT 0293#define ddrcReg_CTLR_T_FAW_PERIOD_MASK (0x1f << ddrcReg_CTLR_T_FAW_PERIOD_SHIFT)294295/* -------------------------------------------------------------------- */296/* -------------------------------------------------------------------- */297/* ARM PL341 AXI ID QOS configuration registers, offset 0x100 */298/* -------------------------------------------------------------------- */299/* -------------------------------------------------------------------- */300301#define ddrcReg_CTLR_QOS_CNT 16302#define ddrcReg_CTLR_QOS_MAX (ddrcReg_CTLR_QOS_CNT - 1)303304typedef struct {305uint32_t cfg[ddrcReg_CTLR_QOS_CNT];306} ddrcReg_CTLR_QOS_REG_t;307308#define ddrcReg_CTLR_QOS_REG_OFFSET 0x100309#define ddrcReg_CTLR_QOS_REGP ((volatile ddrcReg_CTLR_QOS_REG_t *) (MM_IO_BASE_DDRC + ddrcReg_CTLR_QOS_REG_OFFSET))310311/* ----------------------------------------------------- */312313#define ddrcReg_CTLR_QOS_CFG_MAX_SHIFT 2314#define ddrcReg_CTLR_QOS_CFG_MAX_MASK (0xff << ddrcReg_CTLR_QOS_CFG_MAX_SHIFT)315316#define ddrcReg_CTLR_QOS_CFG_MIN_SHIFT 1317#define ddrcReg_CTLR_QOS_CFG_MIN_MASK (1 << ddrcReg_CTLR_QOS_CFG_MIN_SHIFT)318319#define ddrcReg_CTLR_QOS_CFG_ENABLE (1 << 0)320321/* -------------------------------------------------------------------- */322/* -------------------------------------------------------------------- */323/* ARM PL341 Memory chip configuration registers, offset 0x200 */324/* -------------------------------------------------------------------- */325/* -------------------------------------------------------------------- */326327#define ddrcReg_CTLR_CHIP_CNT 4328#define ddrcReg_CTLR_CHIP_MAX (ddrcReg_CTLR_CHIP_CNT - 1)329330typedef struct {331uint32_t cfg[ddrcReg_CTLR_CHIP_CNT];332} ddrcReg_CTLR_CHIP_REG_t;333334#define ddrcReg_CTLR_CHIP_REG_OFFSET 0x200335#define ddrcReg_CTLR_CHIP_REGP ((volatile ddrcReg_CTLR_CHIP_REG_t *) (MM_IO_BASE_DDRC + ddrcReg_CTLR_CHIP_REG_OFFSET))336337/* ----------------------------------------------------- */338339#define ddrcReg_CTLR_CHIP_CFG_MEM_ORG_MASK (1 << 16)340#define ddrcReg_CTLR_CHIP_CFG_MEM_ORG_ROW_BANK_COL (0 << 16)341#define ddrcReg_CTLR_CHIP_CFG_MEM_ORG_BANK_ROW_COL (1 << 16)342343#define ddrcReg_CTLR_CHIP_CFG_AXI_ADDR_MATCH_SHIFT 8344#define ddrcReg_CTLR_CHIP_CFG_AXI_ADDR_MATCH_MASK (0xff << ddrcReg_CTLR_CHIP_CFG_AXI_ADDR_MATCH_SHIFT)345346#define ddrcReg_CTLR_CHIP_CFG_AXI_ADDR_MASK_SHIFT 0347#define ddrcReg_CTLR_CHIP_CFG_AXI_ADDR_MASK_MASK (0xff << ddrcReg_CTLR_CHIP_CFG_AXI_ADDR_MASK_SHIFT)348349/* -------------------------------------------------------------------- */350/* -------------------------------------------------------------------- */351/* ARM PL341 User configuration registers, offset 0x300 */352/* -------------------------------------------------------------------- */353/* -------------------------------------------------------------------- */354355#define ddrcReg_CTLR_USER_OUTPUT_CNT 2356357typedef struct {358uint32_t input;359uint32_t output[ddrcReg_CTLR_USER_OUTPUT_CNT];360uint32_t feature;361} ddrcReg_CTLR_USER_REG_t;362363#define ddrcReg_CTLR_USER_REG_OFFSET 0x300364#define ddrcReg_CTLR_USER_REGP ((volatile ddrcReg_CTLR_USER_REG_t *) (MM_IO_BASE_DDRC + ddrcReg_CTLR_USER_REG_OFFSET))365366/* ----------------------------------------------------- */367368#define ddrcReg_CTLR_USER_INPUT_STATUS_SHIFT 0369#define ddrcReg_CTLR_USER_INPUT_STATUS_MASK (0xff << ddrcReg_CTLR_USER_INPUT_STATUS_SHIFT)370371/* ----------------------------------------------------- */372373#define ddrcReg_CTLR_USER_OUTPUT_CFG_SHIFT 0374#define ddrcReg_CTLR_USER_OUTPUT_CFG_MASK (0xff << ddrcReg_CTLR_USER_OUTPUT_CFG_SHIFT)375376#define ddrcReg_CTLR_USER_OUTPUT_0_CFG_SYNC_BRIDGE_SHIFT 1377#define ddrcReg_CTLR_USER_OUTPUT_0_CFG_SYNC_BRIDGE_MASK (1 << ddrcReg_CTLR_USER_OUTPUT_0_CFG_SYNC_BRIDGE_SHIFT)378#define ddrcReg_CTLR_USER_OUTPUT_0_CFG_SYNC_BRIDGE_BP134 (0 << ddrcReg_CTLR_USER_OUTPUT_0_CFG_SYNC_BRIDGE_SHIFT)379#define ddrcReg_CTLR_USER_OUTPUT_0_CFG_SYNC_BRIDGE_PL301 (1 << ddrcReg_CTLR_USER_OUTPUT_0_CFG_SYNC_BRIDGE_SHIFT)380#define ddrcReg_CTLR_USER_OUTPUT_0_CFG_SYNC_BRIDGE_REGISTERED ddrcReg_CTLR_USER_OUTPUT_0_CFG_SYNC_BRIDGE_PL301381382/* ----------------------------------------------------- */383384#define ddrcReg_CTLR_FEATURE_WRITE_BLOCK_DISABLE (1 << 2)385#define ddrcReg_CTLR_FEATURE_EARLY_BURST_RSP_DISABLE (1 << 0)386387/*********************************************************************/388/* Broadcom DDR23 PHY register definitions */389/*********************************************************************/390391/* -------------------------------------------------------------------- */392/* -------------------------------------------------------------------- */393/* Broadcom DDR23 PHY Address and Control register definitions */394/* -------------------------------------------------------------------- */395/* -------------------------------------------------------------------- */396397typedef struct {398uint32_t revision;399uint32_t pmCtl;400REG32_RSVD(0x0008, 0x0010);401uint32_t pllStatus;402uint32_t pllCfg;403uint32_t pllPreDiv;404uint32_t pllDiv;405uint32_t pllCtl1;406uint32_t pllCtl2;407uint32_t ssCtl;408uint32_t ssCfg;409uint32_t vdlStatic;410uint32_t vdlDynamic;411uint32_t padIdle;412uint32_t pvtComp;413uint32_t padDrive;414uint32_t clkRgltrCtl;415} ddrcReg_PHY_ADDR_CTL_REG_t;416417#define ddrcReg_PHY_ADDR_CTL_REG_OFFSET 0x0400418#define ddrcReg_PHY_ADDR_CTL_REGP ((volatile ddrcReg_PHY_ADDR_CTL_REG_t *) (MM_IO_BASE_DDRC + ddrcReg_PHY_ADDR_CTL_REG_OFFSET))419420/* @todo These SS definitions are duplicates of ones below */421422#define ddrcReg_PHY_ADDR_SS_CTRL_ENABLE 0x00000001423#define ddrcReg_PHY_ADDR_SS_CFG_CYCLE_PER_TICK_MASK 0xFFFF0000424#define ddrcReg_PHY_ADDR_SS_CFG_CYCLE_PER_TICK_SHIFT 16425#define ddrcReg_PHY_ADDR_SS_CFG_MIN_CYCLE_PER_TICK 10 /* Higher the value, lower the SS modulation frequency */426#define ddrcReg_PHY_ADDR_SS_CFG_NDIV_AMPLITUDE_MASK 0x0000FFFF427#define ddrcReg_PHY_ADDR_SS_CFG_NDIV_AMPLITUDE_SHIFT 0428429/* ----------------------------------------------------- */430431#define ddrcReg_PHY_ADDR_CTL_REVISION_MAJOR_SHIFT 8432#define ddrcReg_PHY_ADDR_CTL_REVISION_MAJOR_MASK (0xff << ddrcReg_PHY_ADDR_CTL_REVISION_MAJOR_SHIFT)433434#define ddrcReg_PHY_ADDR_CTL_REVISION_MINOR_SHIFT 0435#define ddrcReg_PHY_ADDR_CTL_REVISION_MINOR_MASK (0xff << ddrcReg_PHY_ADDR_CTL_REVISION_MINOR_SHIFT)436437/* ----------------------------------------------------- */438439#define ddrcReg_PHY_ADDR_CTL_CLK_PM_CTL_DDR_CLK_DISABLE (1 << 0)440441/* ----------------------------------------------------- */442443#define ddrcReg_PHY_ADDR_CTL_PLL_STATUS_LOCKED (1 << 0)444445/* ----------------------------------------------------- */446447#define ddrcReg_PHY_ADDR_CTL_PLL_CFG_DIV2_CLK_RESET (1 << 31)448449#define ddrcReg_PHY_ADDR_CTL_PLL_CFG_TEST_SEL_SHIFT 17450#define ddrcReg_PHY_ADDR_CTL_PLL_CFG_TEST_SEL_MASK (0x1f << ddrcReg_PHY_ADDR_CTL_PLL_CFG_TEST_SEL_SHIFT)451452#define ddrcReg_PHY_ADDR_CTL_PLL_CFG_TEST_ENABLE (1 << 16)453454#define ddrcReg_PHY_ADDR_CTL_PLL_CFG_BGAP_ADJ_SHIFT 12455#define ddrcReg_PHY_ADDR_CTL_PLL_CFG_BGAP_ADJ_MASK (0xf << ddrcReg_PHY_ADDR_CTL_PLL_CFG_BGAP_ADJ_SHIFT)456457#define ddrcReg_PHY_ADDR_CTL_PLL_CFG_VCO_RNG (1 << 7)458#define ddrcReg_PHY_ADDR_CTL_PLL_CFG_CH1_PWRDWN (1 << 6)459#define ddrcReg_PHY_ADDR_CTL_PLL_CFG_BYPASS_ENABLE (1 << 5)460#define ddrcReg_PHY_ADDR_CTL_PLL_CFG_CLKOUT_ENABLE (1 << 4)461#define ddrcReg_PHY_ADDR_CTL_PLL_CFG_D_RESET (1 << 3)462#define ddrcReg_PHY_ADDR_CTL_PLL_CFG_A_RESET (1 << 2)463#define ddrcReg_PHY_ADDR_CTL_PLL_CFG_PWRDWN (1 << 0)464465/* ----------------------------------------------------- */466467#define ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_DITHER_MFB (1 << 26)468#define ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_PWRDWN (1 << 25)469470#define ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_MODE_SHIFT 20471#define ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_MODE_MASK (0x7 << ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_MODE_SHIFT)472473#define ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_INT_SHIFT 8474#define ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_INT_MASK (0x1ff << ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_INT_SHIFT)475476#define ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_P2_SHIFT 4477#define ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_P2_MASK (0xf << ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_P2_SHIFT)478479#define ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_P1_SHIFT 0480#define ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_P1_MASK (0xf << ddrcReg_PHY_ADDR_CTL_PLL_PRE_DIV_P1_SHIFT)481482/* ----------------------------------------------------- */483484#define ddrcReg_PHY_ADDR_CTL_PLL_DIV_M1_SHIFT 24485#define ddrcReg_PHY_ADDR_CTL_PLL_DIV_M1_MASK (0xff << ddrcReg_PHY_ADDR_CTL_PLL_DIV_M1_SHIFT)486487#define ddrcReg_PHY_ADDR_CTL_PLL_DIV_FRAC_SHIFT 0488#define ddrcReg_PHY_ADDR_CTL_PLL_DIV_FRAC_MASK (0xffffff << ddrcReg_PHY_ADDR_CTL_PLL_DIV_FRAC_SHIFT)489490/* ----------------------------------------------------- */491492#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_TESTA_SHIFT 30493#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_TESTA_MASK (0x3 << ddrcReg_PHY_ADDR_CTL_PLL_CTL1_TESTA_SHIFT)494495#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_KVCO_XS_SHIFT 27496#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_KVCO_XS_MASK (0x7 << ddrcReg_PHY_ADDR_CTL_PLL_CTL1_KVCO_XS_SHIFT)497498#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_KVCO_XF_SHIFT 24499#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_KVCO_XF_MASK (0x7 << ddrcReg_PHY_ADDR_CTL_PLL_CTL1_KVCO_XF_SHIFT)500501#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_LPF_BW_SHIFT 22502#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_LPF_BW_MASK (0x3 << ddrcReg_PHY_ADDR_CTL_PLL_CTL1_LPF_BW_SHIFT)503504#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_LF_ORDER (0x1 << 21)505506#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_CN_SHIFT 19507#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_CN_MASK (0x3 << ddrcReg_PHY_ADDR_CTL_PLL_CTL1_CN_SHIFT)508509#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_RN_SHIFT 17510#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_RN_MASK (0x3 << ddrcReg_PHY_ADDR_CTL_PLL_CTL1_RN_SHIFT)511512#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_CP_SHIFT 15513#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_CP_MASK (0x3 << ddrcReg_PHY_ADDR_CTL_PLL_CTL1_CP_SHIFT)514515#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_CZ_SHIFT 13516#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_CZ_MASK (0x3 << ddrcReg_PHY_ADDR_CTL_PLL_CTL1_CZ_SHIFT)517518#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_RZ_SHIFT 10519#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_RZ_MASK (0x7 << ddrcReg_PHY_ADDR_CTL_PLL_CTL1_RZ_SHIFT)520521#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_ICPX_SHIFT 5522#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_ICPX_MASK (0x1f << ddrcReg_PHY_ADDR_CTL_PLL_CTL1_ICPX_SHIFT)523524#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_ICP_OFF_SHIFT 0525#define ddrcReg_PHY_ADDR_CTL_PLL_CTL1_ICP_OFF_MASK (0x1f << ddrcReg_PHY_ADDR_CTL_PLL_CTL1_ICP_OFF_SHIFT)526527/* ----------------------------------------------------- */528#define ddrcReg_PHY_ADDR_CTL_PLL_CTL2_PTAP_ADJ_SHIFT 4529#define ddrcReg_PHY_ADDR_CTL_PLL_CTL2_PTAP_ADJ_MASK (0x3 << ddrcReg_PHY_ADDR_CTL_PLL_CTL2_PTAP_ADJ_SHIFT)530531#define ddrcReg_PHY_ADDR_CTL_PLL_CTL2_CTAP_ADJ_SHIFT 2532#define ddrcReg_PHY_ADDR_CTL_PLL_CTL2_CTAP_ADJ_MASK (0x3 << ddrcReg_PHY_ADDR_CTL_PLL_CTL2_CTAP_ADJ_SHIFT)533534#define ddrcReg_PHY_ADDR_CTL_PLL_CTL2_LOWCUR_ENABLE (0x1 << 1)535#define ddrcReg_PHY_ADDR_CTL_PLL_CTL2_BIASIN_ENABLE (0x1 << 0)536537/* ----------------------------------------------------- */538539#define ddrcReg_PHY_ADDR_CTL_PLL_SS_EN_ENABLE (0x1 << 0)540541/* ----------------------------------------------------- */542543#define ddrcReg_PHY_ADDR_CTL_PLL_SS_CFG_CYC_PER_TICK_SHIFT 16544#define ddrcReg_PHY_ADDR_CTL_PLL_SS_CFG_CYC_PER_TICK_MASK (0xffff << ddrcReg_PHY_ADDR_CTL_PLL_SS_CFG_CYC_PER_TICK_SHIFT)545546#define ddrcReg_PHY_ADDR_CTL_PLL_SS_CFG_NDIV_AMP_SHIFT 0547#define ddrcReg_PHY_ADDR_CTL_PLL_SS_CFG_NDIV_AMP_MASK (0xffff << ddrcReg_PHY_ADDR_CTL_PLL_SS_CFG_NDIV_AMP_SHIFT)548549/* ----------------------------------------------------- */550551#define ddrcReg_PHY_ADDR_CTL_VDL_STATIC_OVR_FORCE (1 << 20)552#define ddrcReg_PHY_ADDR_CTL_VDL_STATIC_OVR_ENABLE (1 << 16)553554#define ddrcReg_PHY_ADDR_CTL_VDL_STATIC_OVR_FALL_SHIFT 12555#define ddrcReg_PHY_ADDR_CTL_VDL_STATIC_OVR_FALL_MASK (0x3 << ddrcReg_PHY_ADDR_CTL_VDL_STATIC_OVR_FALL_SHIFT)556557#define ddrcReg_PHY_ADDR_CTL_VDL_STATIC_OVR_RISE_SHIFT 8558#define ddrcReg_PHY_ADDR_CTL_VDL_STATIC_OVR_RISE_MASK (0x3 << ddrcReg_PHY_ADDR_CTL_VDL_STATIC_OVR_RISE_SHIFT)559560#define ddrcReg_PHY_ADDR_CTL_VDL_STATIC_OVR_STEP_SHIFT 0561#define ddrcReg_PHY_ADDR_CTL_VDL_STATIC_OVR_STEP_MASK (0x3f << ddrcReg_PHY_ADDR_CTL_VDL_STATIC_OVR_STEP_SHIFT)562563/* ----------------------------------------------------- */564565#define ddrcReg_PHY_ADDR_CTL_VDL_DYNAMIC_OVR_ENABLE (1 << 16)566567#define ddrcReg_PHY_ADDR_CTL_VDL_DYNAMIC_OVR_FALL_SHIFT 12568#define ddrcReg_PHY_ADDR_CTL_VDL_DYNAMIC_OVR_FALL_MASK (0x3 << ddrcReg_PHY_ADDR_CTL_VDL_DYNAMIC_OVR_FALL_SHIFT)569570#define ddrcReg_PHY_ADDR_CTL_VDL_DYNAMIC_OVR_RISE_SHIFT 8571#define ddrcReg_PHY_ADDR_CTL_VDL_DYNAMIC_OVR_RISE_MASK (0x3 << ddrcReg_PHY_ADDR_CTL_VDL_DYNAMIC_OVR_RISE_SHIFT)572573#define ddrcReg_PHY_ADDR_CTL_VDL_DYNAMIC_OVR_STEP_SHIFT 0574#define ddrcReg_PHY_ADDR_CTL_VDL_DYNAMIC_OVR_STEP_MASK (0x3f << ddrcReg_PHY_ADDR_CTL_VDL_DYNAMIC_OVR_STEP_SHIFT)575576/* ----------------------------------------------------- */577578#define ddrcReg_PHY_ADDR_CTL_PAD_IDLE_ENABLE (1u << 31)579#define ddrcReg_PHY_ADDR_CTL_PAD_IDLE_RXENB_DISABLE (1 << 8)580#define ddrcReg_PHY_ADDR_CTL_PAD_IDLE_CTL_IDDQ_DISABLE (1 << 6)581#define ddrcReg_PHY_ADDR_CTL_PAD_IDLE_CTL_REB_DISABLE (1 << 5)582#define ddrcReg_PHY_ADDR_CTL_PAD_IDLE_CTL_OEB_DISABLE (1 << 4)583#define ddrcReg_PHY_ADDR_CTL_PAD_IDLE_CKE_IDDQ_DISABLE (1 << 2)584#define ddrcReg_PHY_ADDR_CTL_PAD_IDLE_CKE_REB_DISABLE (1 << 1)585#define ddrcReg_PHY_ADDR_CTL_PAD_IDLE_CKE_OEB_DISABLE (1 << 0)586587/* ----------------------------------------------------- */588589#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_PD_DONE (1 << 30)590#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_ND_DONE (1 << 29)591#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_SAMPLE_DONE (1 << 28)592#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_SAMPLE_AUTO_ENABLE (1 << 27)593#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_SAMPLE_ENABLE (1 << 26)594#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_ADDR_OVR_ENABLE (1 << 25)595#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_DQ_OVR_ENABLE (1 << 24)596597#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_PD_SHIFT 20598#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_PD_MASK (0xf << ddrcReg_PHY_ADDR_CTL_PVT_COMP_PD_SHIFT)599600#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_ND_SHIFT 16601#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_ND_MASK (0xf << ddrcReg_PHY_ADDR_CTL_PVT_COMP_ND_SHIFT)602603#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_ADDR_PD_SHIFT 12604#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_ADDR_PD_MASK (0xf << ddrcReg_PHY_ADDR_CTL_PVT_COMP_ADDR_PD_SHIFT)605606#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_ADDR_ND_SHIFT 8607#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_ADDR_ND_MASK (0xf << ddrcReg_PHY_ADDR_CTL_PVT_COMP_ADDR_ND_SHIFT)608609#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_DQ_PD_SHIFT 4610#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_DQ_PD_MASK (0xf << ddrcReg_PHY_ADDR_CTL_PVT_COMP_DQ_PD_SHIFT)611612#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_DQ_ND_SHIFT 0613#define ddrcReg_PHY_ADDR_CTL_PVT_COMP_DQ_ND_MASK (0xf << ddrcReg_PHY_ADDR_CTL_PVT_COMP_DQ_ND_SHIFT)614615/* ----------------------------------------------------- */616617#define ddrcReg_PHY_ADDR_CTL_PAD_DRIVE_RT60B (1 << 4)618#define ddrcReg_PHY_ADDR_CTL_PAD_DRIVE_SEL_SSTL18 (1 << 3)619#define ddrcReg_PHY_ADDR_CTL_PAD_DRIVE_SELTXDRV_CI (1 << 2)620#define ddrcReg_PHY_ADDR_CTL_PAD_DRIVE_SELRXDRV (1 << 1)621#define ddrcReg_PHY_ADDR_CTL_PAD_DRIVE_SLEW (1 << 0)622623/* ----------------------------------------------------- */624625#define ddrcReg_PHY_ADDR_CTL_CLK_RGLTR_CTL_PWR_HALF (1 << 1)626#define ddrcReg_PHY_ADDR_CTL_CLK_RGLTR_CTL_PWR_OFF (1 << 0)627628/* -------------------------------------------------------------------- */629/* -------------------------------------------------------------------- */630/* Broadcom DDR23 PHY Byte Lane register definitions */631/* -------------------------------------------------------------------- */632/* -------------------------------------------------------------------- */633634#define ddrcReg_PHY_BYTE_LANE_CNT 2635#define ddrcReg_PHY_BYTE_LANE_MAX (ddrcReg_CTLR_BYTE_LANE_CNT - 1)636637#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_CNT 8638639typedef struct {640uint32_t revision;641uint32_t vdlCalibrate;642uint32_t vdlStatus;643REG32_RSVD(0x000c, 0x0010);644uint32_t vdlOverride[ddrcReg_PHY_BYTE_LANE_VDL_OVR_CNT];645uint32_t readCtl;646uint32_t readStatus;647uint32_t readClear;648uint32_t padIdleCtl;649uint32_t padDriveCtl;650uint32_t padClkCtl;651uint32_t writeCtl;652uint32_t clkRegCtl;653} ddrcReg_PHY_BYTE_LANE_REG_t;654655/* There are 2 instances of the byte Lane registers, one for each byte lane. */656#define ddrcReg_PHY_BYTE_LANE_1_REG_OFFSET 0x0500657#define ddrcReg_PHY_BYTE_LANE_2_REG_OFFSET 0x0600658659#define ddrcReg_PHY_BYTE_LANE_1_REGP ((volatile ddrcReg_PHY_BYTE_LANE_REG_t *) (MM_IO_BASE_DDRC + ddrcReg_PHY_BYTE_LANE_1_REG_OFFSET))660#define ddrcReg_PHY_BYTE_LANE_2_REGP ((volatile ddrcReg_PHY_BYTE_LANE_REG_t *) (MM_IO_BASE_DDRC + ddrcReg_PHY_BYTE_LANE_2_REG_OFFSET))661662/* ----------------------------------------------------- */663664#define ddrcReg_PHY_BYTE_LANE_REVISION_MAJOR_SHIFT 8665#define ddrcReg_PHY_BYTE_LANE_REVISION_MAJOR_MASK (0xff << ddrcReg_PHY_BYTE_LANE_REVISION_MAJOR_SHIFT)666667#define ddrcReg_PHY_BYTE_LANE_REVISION_MINOR_SHIFT 0668#define ddrcReg_PHY_BYTE_LANE_REVISION_MINOR_MASK (0xff << ddrcReg_PHY_BYTE_LANE_REVISION_MINOR_SHIFT)669670/* ----------------------------------------------------- */671672#define ddrcReg_PHY_BYTE_LANE_VDL_CALIB_CLK_2CYCLE (1 << 4)673#define ddrcReg_PHY_BYTE_LANE_VDL_CALIB_CLK_1CYCLE (0 << 4)674675#define ddrcReg_PHY_BYTE_LANE_VDL_CALIB_TEST (1 << 3)676#define ddrcReg_PHY_BYTE_LANE_VDL_CALIB_ALWAYS (1 << 2)677#define ddrcReg_PHY_BYTE_LANE_VDL_CALIB_ONCE (1 << 1)678#define ddrcReg_PHY_BYTE_LANE_VDL_CALIB_FAST (1 << 0)679680/* ----------------------------------------------------- */681682/* The byte lane VDL status calibTotal[9:0] is comprised of [9:4] step value, [3:2] fine fall */683/* and [1:0] fine rise. Note that calibTotal[9:0] is located at bit 4 in the VDL status */684/* register. The fine rise and fall are no longer used, so add some definitions for just */685/* the step setting to simplify things. */686687#define ddrcReg_PHY_BYTE_LANE_VDL_STATUS_STEP_SHIFT 8688#define ddrcReg_PHY_BYTE_LANE_VDL_STATUS_STEP_MASK (0x3f << ddrcReg_PHY_BYTE_LANE_VDL_STATUS_STEP_SHIFT)689690#define ddrcReg_PHY_BYTE_LANE_VDL_STATUS_TOTAL_SHIFT 4691#define ddrcReg_PHY_BYTE_LANE_VDL_STATUS_TOTAL_MASK (0x3ff << ddrcReg_PHY_BYTE_LANE_VDL_STATUS_TOTAL_SHIFT)692693#define ddrcReg_PHY_BYTE_LANE_VDL_STATUS_LOCK (1 << 1)694#define ddrcReg_PHY_BYTE_LANE_VDL_STATUS_IDLE (1 << 0)695696/* ----------------------------------------------------- */697698#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_ENABLE (1 << 16)699700#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_FALL_SHIFT 12701#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_FALL_MASK (0x3 << ddrcReg_PHY_BYTE_LANE_VDL_OVR_FALL_SHIFT)702703#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_RISE_SHIFT 8704#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_RISE_MASK (0x3 << ddrcReg_PHY_BYTE_LANE_VDL_OVR_RISE_SHIFT)705706#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_STEP_SHIFT 0707#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_STEP_MASK (0x3f << ddrcReg_PHY_BYTE_LANE_VDL_OVR_STEP_SHIFT)708709#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_IDX_STATIC_READ_DQS_P 0710#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_IDX_STATIC_READ_DQS_N 1711#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_IDX_STATIC_READ_EN 2712#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_IDX_STATIC_WRITE_DQ_DQM 3713#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_IDX_DYNAMIC_READ_DQS_P 4714#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_IDX_DYNAMIC_READ_DQS_N 5715#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_IDX_DYNAMIC_READ_EN 6716#define ddrcReg_PHY_BYTE_LANE_VDL_OVR_IDX_DYNAMIC_WRITE_DQ_DQM 7717718/* ----------------------------------------------------- */719720#define ddrcReg_PHY_BYTE_LANE_READ_CTL_DELAY_SHIFT 8721#define ddrcReg_PHY_BYTE_LANE_READ_CTL_DELAY_MASK (0x3 << ddrcReg_PHY_BYTE_LANE_READ_CTL_DELAY_SHIFT)722723#define ddrcReg_PHY_BYTE_LANE_READ_CTL_DQ_ODT_ENABLE (1 << 3)724#define ddrcReg_PHY_BYTE_LANE_READ_CTL_DQ_ODT_ADJUST (1 << 2)725#define ddrcReg_PHY_BYTE_LANE_READ_CTL_RD_ODT_ENABLE (1 << 1)726#define ddrcReg_PHY_BYTE_LANE_READ_CTL_RD_ODT_ADJUST (1 << 0)727728/* ----------------------------------------------------- */729730#define ddrcReg_PHY_BYTE_LANE_READ_STATUS_ERROR_SHIFT 0731#define ddrcReg_PHY_BYTE_LANE_READ_STATUS_ERROR_MASK (0xf << ddrcReg_PHY_BYTE_LANE_READ_STATUS_ERROR_SHIFT)732733/* ----------------------------------------------------- */734735#define ddrcReg_PHY_BYTE_LANE_READ_CLEAR_STATUS (1 << 0)736737/* ----------------------------------------------------- */738739#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_ENABLE (1u << 31)740#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_DM_RXENB_DISABLE (1 << 19)741#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_DM_IDDQ_DISABLE (1 << 18)742#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_DM_REB_DISABLE (1 << 17)743#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_DM_OEB_DISABLE (1 << 16)744#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_DQ_RXENB_DISABLE (1 << 15)745#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_DQ_IDDQ_DISABLE (1 << 14)746#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_DQ_REB_DISABLE (1 << 13)747#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_DQ_OEB_DISABLE (1 << 12)748#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_READ_ENB_RXENB_DISABLE (1 << 11)749#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_READ_ENB_IDDQ_DISABLE (1 << 10)750#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_READ_ENB_REB_DISABLE (1 << 9)751#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_READ_ENB_OEB_DISABLE (1 << 8)752#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_DQS_RXENB_DISABLE (1 << 7)753#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_DQS_IDDQ_DISABLE (1 << 6)754#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_DQS_REB_DISABLE (1 << 5)755#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_DQS_OEB_DISABLE (1 << 4)756#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_CLK_RXENB_DISABLE (1 << 3)757#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_CLK_IDDQ_DISABLE (1 << 2)758#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_CLK_REB_DISABLE (1 << 1)759#define ddrcReg_PHY_BYTE_LANE_PAD_IDLE_CTL_CLK_OEB_DISABLE (1 << 0)760761/* ----------------------------------------------------- */762763#define ddrcReg_PHY_BYTE_LANE_PAD_DRIVE_CTL_RT60B_DDR_READ_ENB (1 << 5)764#define ddrcReg_PHY_BYTE_LANE_PAD_DRIVE_CTL_RT60B (1 << 4)765#define ddrcReg_PHY_BYTE_LANE_PAD_DRIVE_CTL_SEL_SSTL18 (1 << 3)766#define ddrcReg_PHY_BYTE_LANE_PAD_DRIVE_CTL_SELTXDRV_CI (1 << 2)767#define ddrcReg_PHY_BYTE_LANE_PAD_DRIVE_CTL_SELRXDRV (1 << 1)768#define ddrcReg_PHY_BYTE_LANE_PAD_DRIVE_CTL_SLEW (1 << 0)769770/* ----------------------------------------------------- */771772#define ddrcReg_PHY_BYTE_LANE_PAD_CLK_CTL_DISABLE (1 << 0)773774/* ----------------------------------------------------- */775776#define ddrcReg_PHY_BYTE_LANE_WRITE_CTL_PREAMBLE_DDR3 (1 << 0)777778/* ----------------------------------------------------- */779780#define ddrcReg_PHY_BYTE_LANE_CLK_REG_CTL_PWR_HALF (1 << 1)781#define ddrcReg_PHY_BYTE_LANE_CLK_REG_CTL_PWR_OFF (1 << 0)782783/*********************************************************************/784/* ARM PL341 DDRC to Broadcom DDR23 PHY glue register definitions */785/*********************************************************************/786787typedef struct {788uint32_t cfg;789uint32_t actMonCnt;790uint32_t ctl;791uint32_t lbistCtl;792uint32_t lbistSeed;793uint32_t lbistStatus;794uint32_t tieOff;795uint32_t actMonClear;796uint32_t status;797uint32_t user;798} ddrcReg_CTLR_PHY_GLUE_REG_t;799800#define ddrcReg_CTLR_PHY_GLUE_OFFSET 0x0700801#define ddrcReg_CTLR_PHY_GLUE_REGP ((volatile ddrcReg_CTLR_PHY_GLUE_REG_t *) (MM_IO_BASE_DDRC + ddrcReg_CTLR_PHY_GLUE_OFFSET))802803/* ----------------------------------------------------- */804805/* DDR2 / AXI block phase alignment interrupt control */806#define ddrcReg_CTLR_PHY_GLUE_CFG_INT_SHIFT 18807#define ddrcReg_CTLR_PHY_GLUE_CFG_INT_MASK (0x3 << ddrcReg_CTLR_PHY_GLUE_CFG_INT_SHIFT)808#define ddrcReg_CTLR_PHY_GLUE_CFG_INT_OFF (0 << ddrcReg_CTLR_PHY_GLUE_CFG_INT_SHIFT)809#define ddrcReg_CTLR_PHY_GLUE_CFG_INT_ON_TIGHT (1 << ddrcReg_CTLR_PHY_GLUE_CFG_INT_SHIFT)810#define ddrcReg_CTLR_PHY_GLUE_CFG_INT_ON_MEDIUM (2 << ddrcReg_CTLR_PHY_GLUE_CFG_INT_SHIFT)811#define ddrcReg_CTLR_PHY_GLUE_CFG_INT_ON_LOOSE (3 << ddrcReg_CTLR_PHY_GLUE_CFG_INT_SHIFT)812813#define ddrcReg_CTLR_PHY_GLUE_CFG_PLL_REFCLK_SHIFT 17814#define ddrcReg_CTLR_PHY_GLUE_CFG_PLL_REFCLK_MASK (1 << ddrcReg_CTLR_PHY_GLUE_CFG_PLL_REFCLK_SHIFT)815#define ddrcReg_CTLR_PHY_GLUE_CFG_PLL_REFCLK_DIFFERENTIAL (0 << ddrcReg_CTLR_PHY_GLUE_CFG_PLL_REFCLK_SHIFT)816#define ddrcReg_CTLR_PHY_GLUE_CFG_PLL_REFCLK_CMOS (1 << ddrcReg_CTLR_PHY_GLUE_CFG_PLL_REFCLK_SHIFT)817818#define ddrcReg_CTLR_PHY_GLUE_CFG_DIV2CLK_TREE_SHIFT 16819#define ddrcReg_CTLR_PHY_GLUE_CFG_DIV2CLK_TREE_MASK (1 << ddrcReg_CTLR_PHY_GLUE_CFG_DIV2CLK_TREE_SHIFT)820#define ddrcReg_CTLR_PHY_GLUE_CFG_DIV2CLK_TREE_DEEP (0 << ddrcReg_CTLR_PHY_GLUE_CFG_DIV2CLK_TREE_SHIFT)821#define ddrcReg_CTLR_PHY_GLUE_CFG_DIV2CLK_TREE_SHALLOW (1 << ddrcReg_CTLR_PHY_GLUE_CFG_DIV2CLK_TREE_SHIFT)822#define ddrcReg_CTLR_PHY_GLUE_CFG_HW_FIXED_ALIGNMENT_DISABLED ddrcReg_CTLR_PHY_GLUE_CFG_DIV2CLK_TREE_SHALLOW823824#define ddrcReg_CTLR_PHY_GLUE_CFG_SYNC_BRIDGE_SHIFT 15825#define ddrcReg_CTLR_PHY_GLUE_CFG_SYNC_BRIDGE_MASK (1 << ddrcReg_CTLR_PHY_GLUE_CFG_SYNC_BRIDGE_SHIFT)826#define ddrcReg_CTLR_PHY_GLUE_CFG_SYNC_BRIDGE_BP134 (0 << ddrcReg_CTLR_PHY_GLUE_CFG_SYNC_BRIDGE_SHIFT)827#define ddrcReg_CTLR_PHY_GLUE_CFG_SYNC_BRIDGE_PL301 (1 << ddrcReg_CTLR_PHY_GLUE_CFG_SYNC_BRIDGE_SHIFT)828#define ddrcReg_CTLR_PHY_GLUE_CFG_SYNC_BRIDGE_REGISTERED ddrcReg_CTLR_PHY_GLUE_CFG_SYNC_BRIDGE_PL301829830/* Software control of PHY VDL updates from control register settings. Bit 13 enables the use of Bit 14. */831/* If software control is not enabled, then updates occur when a refresh command is issued by the hardware */832/* controller. If 2 chips selects are being used, then software control must be enabled. */833#define ddrcReg_CTLR_PHY_GLUE_CFG_PHY_VDL_UPDATE_SW_CTL_LOAD (1 << 14)834#define ddrcReg_CTLR_PHY_GLUE_CFG_PHY_VDL_UPDATE_SW_CTL_ENABLE (1 << 13)835836/* Use these to bypass a pipeline stage. By default the ADDR is off but the BYTE LANE in / out are on. */837#define ddrcReg_CTLR_PHY_GLUE_CFG_PHY_ADDR_CTL_IN_BYPASS_PIPELINE_STAGE (1 << 12)838#define ddrcReg_CTLR_PHY_GLUE_CFG_PHY_BYTE_LANE_IN_BYPASS_PIPELINE_STAGE (1 << 11)839#define ddrcReg_CTLR_PHY_GLUE_CFG_PHY_BYTE_LANE_OUT_BYPASS_PIPELINE_STAGE (1 << 10)840841/* Chip select count */842#define ddrcReg_CTLR_PHY_GLUE_CFG_CS_CNT_SHIFT 9843#define ddrcReg_CTLR_PHY_GLUE_CFG_CS_CNT_MASK (1 << ddrcReg_CTLR_PHY_GLUE_CFG_CS_CNT_SHIFT)844#define ddrcReg_CTLR_PHY_GLUE_CFG_CS_CNT_1 (0 << ddrcReg_CTLR_PHY_GLUE_CFG_CS_CNT_SHIFT)845#define ddrcReg_CTLR_PHY_GLUE_CFG_CS_CNT_2 (1 << ddrcReg_CTLR_PHY_GLUE_CFG_CS_CNT_SHIFT)846847#define ddrcReg_CTLR_PHY_GLUE_CFG_CLK_SHIFT 8848#define ddrcReg_CTLR_PHY_GLUE_CFG_CLK_ASYNC (0 << ddrcReg_CTLR_PHY_GLUE_CFG_CLK_SHIFT)849#define ddrcReg_CTLR_PHY_GLUE_CFG_CLK_SYNC (1 << ddrcReg_CTLR_PHY_GLUE_CFG_CLK_SHIFT)850851#define ddrcReg_CTLR_PHY_GLUE_CFG_CKE_INIT_SHIFT 7852#define ddrcReg_CTLR_PHY_GLUE_CFG_CKE_INIT_LOW (0 << ddrcReg_CTLR_PHY_GLUE_CFG_CKE_INIT_SHIFT)853#define ddrcReg_CTLR_PHY_GLUE_CFG_CKE_INIT_HIGH (1 << ddrcReg_CTLR_PHY_GLUE_CFG_CKE_INIT_SHIFT)854855#define ddrcReg_CTLR_PHY_GLUE_CFG_DQM_INIT_SHIFT 6856#define ddrcReg_CTLR_PHY_GLUE_CFG_DQM_INIT_LOW (0 << ddrcReg_CTLR_PHY_GLUE_CFG_DQM_INIT_SHIFT)857#define ddrcReg_CTLR_PHY_GLUE_CFG_DQM_INIT_HIGH (1 << ddrcReg_CTLR_PHY_GLUE_CFG_DQM_INIT_SHIFT)858859#define ddrcReg_CTLR_PHY_GLUE_CFG_CAS_LATENCY_SHIFT 0860#define ddrcReg_CTLR_PHY_GLUE_CFG_CAS_LATENCY_MASK (0x7 << ddrcReg_CTLR_PHY_GLUE_CFG_CAS_LATENCY_SHIFT)861862/* ----------------------------------------------------- */863#define ddrcReg_CTLR_PHY_GLUE_STATUS_PHASE_SHIFT 0864#define ddrcReg_CTLR_PHY_GLUE_STATUS_PHASE_MASK (0x7f << ddrcReg_CTLR_PHY_GLUE_STATUS_PHASE_SHIFT)865866/* ---- Public Function Prototypes --------------------------------------- */867868#ifdef __cplusplus869} /* end extern "C" */870#endif871#endif /* DDRC_REG_H */872873874