/*
 * arch/arm/mach-tegra/tegra21_emc.h
 *
 * Copyright (c) 2014-2015, NVIDIA CORPORATION.  All rights reserved.
 * Copyright (c) 2019-2020, CTCaer.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 */

#ifndef _EMC_H_
#define _EMC_H_

#define EMC_DBG                                   0x8
#define EMC_CFG                                   0xC
#define EMC_CONFIG_SAMPLE_DELAY                   0x5f0
#define EMC_CFG_UPDATE                            0x5f4
#define EMC_ADR_CFG                               0x10
#define EMC_REFCTRL                               0x20
#define EMC_PIN                                   0x24
#define EMC_TIMING_CONTROL                        0x28
#define EMC_RC                                    0x2c
#define EMC_RFC                                   0x30
#define EMC_RFCPB                                 0x590
#define EMC_RAS                                   0x34
#define EMC_RP                                    0x38
#define EMC_R2W                                   0x3c
#define EMC_W2R                                   0x40
#define EMC_R2P                                   0x44
#define EMC_W2P                                   0x48
#define EMC_CCDMW                                 0x5c0
#define EMC_RD_RCD                                0x4c
#define EMC_WR_RCD                                0x50
#define EMC_RRD                                   0x54
#define EMC_REXT                                  0x58
#define EMC_WDV                                   0x5c
#define EMC_QUSE                                  0x60
#define EMC_QRST                                  0x64
#define EMC_ISSUE_QRST                            0x428
#define EMC_QSAFE                                 0x68
#define EMC_RDV                                   0x6c
#define EMC_REFRESH                               0x70
#define EMC_BURST_REFRESH_NUM                     0x74
#define EMC_PDEX2WR                               0x78
#define EMC_PDEX2RD                               0x7c
#define EMC_PDEX2CKE                              0x118
#define EMC_PCHG2PDEN                             0x80
#define EMC_ACT2PDEN                              0x84
#define EMC_AR2PDEN                               0x88
#define EMC_RW2PDEN                               0x8c
#define EMC_CKE2PDEN                              0x11c
#define EMC_TXSR                                  0x90
#define EMC_TCKE                                  0x94
#define EMC_TFAW                                  0x98
#define EMC_TRPAB                                 0x9c
#define EMC_TCLKSTABLE                            0xa0
#define EMC_TCLKSTOP                              0xa4
#define EMC_TREFBW                                0xa8
#define EMC_TPPD                                  0xac
#define EMC_PDEX2MRR                              0xb4
#define EMC_ODT_WRITE                             0xb0
#define EMC_WEXT                                  0xb8
#define EMC_CTT                                   0xBC
#define EMC_RFC_SLR                               0xc0
#define EMC_MRS_WAIT_CNT2                         0xc4
#define EMC_MRS_WAIT_CNT                          0xc8
#define EMC_MRS                                   0xcc
#define EMC_EMRS                                  0xd0
#define EMC_REF                                   0xd4
#define EMC_PRE                                   0xd8
#define EMC_NOP                                   0xdc
#define EMC_SELF_REF                              0xe0
#define EMC_DPD                                   0xe4
#define EMC_MRW                                   0xe8
#define EMC_MRR                                   0xec
#define EMC_CMDQ                                  0xf0
#define EMC_MC2EMCQ                               0xf4
#define EMC_FBIO_TWTM                             0xF8
#define EMC_FBIO_TRATM                            0xFC
#define EMC_FBIO_TWATM                            0x108
#define EMC_FBIO_TR2REF                           0x10C
#define EMC_FBIO_SPARE                            0x100
#define EMC_FBIO_CFG5                             0x104
#define EMC_FBIO_CFG6                             0x114
#define EMC_CFG_RSV                               0x120
#define EMC_ACPD_CONTROL                          0x124
#define EMC_MPC                                   0x128
#define EMC_EMRS2                                 0x12c
#define EMC_EMRS3                                 0x130
#define EMC_MRW2                                  0x134
#define EMC_MRW3                                  0x138
#define EMC_MRW4                                  0x13c
#define EMC_MRW5                                  0x4a0
#define EMC_MRW6                                  0x4a4
#define EMC_MRW7                                  0x4a8
#define EMC_MRW8                                  0x4ac
#define EMC_MRW9                                  0x4b0
#define EMC_MRW10                                 0x4b4
#define EMC_MRW11                                 0x4b8
#define EMC_MRW12                                 0x4bc
#define EMC_MRW13                                 0x4c0
#define EMC_MRW14                                 0x4c4
#define EMC_MRW15                                 0x4d0
#define EMC_CFG_SYNC                              0x4d4
#define EMC_CLKEN_OVERRIDE                        0x140
#define EMC_R2R                                   0x144
#define EMC_W2W                                   0x148
#define EMC_EINPUT                                0x14c
#define EMC_EINPUT_DURATION                       0x150
#define EMC_PUTERM_EXTRA                          0x154
#define EMC_TCKESR                                0x158
#define EMC_TPD                                   0x15c
#define EMC_STAT_CONTROL                          0x160
#define EMC_STAT_STATUS                           0x164
#define EMC_STAT_DRAM_CLOCK_LIMIT_LO              0x19c
#define EMC_STAT_DRAM_CLOCK_LIMIT_HI              0x1a0
#define EMC_STAT_DRAM_CLOCKS_LO                   0x1a4
#define EMC_STAT_DRAM_CLOCKS_HI                   0x1a8
#define EMC_STAT_DRAM_DEV0_ACTIVATE_CNT_LO        0x1ac
#define EMC_STAT_DRAM_DEV0_ACTIVATE_CNT_HI        0x1b0
#define EMC_STAT_DRAM_DEV0_READ_CNT_LO            0x1b4
#define EMC_STAT_DRAM_DEV0_READ_CNT_HI            0x1b8
#define EMC_STAT_DRAM_DEV0_READ8_CNT_LO           0x1bc
#define EMC_STAT_DRAM_DEV0_READ8_CNT_HI           0x1c0
#define EMC_STAT_DRAM_DEV0_WRITE_CNT_LO           0x1c4
#define EMC_STAT_DRAM_DEV0_WRITE_CNT_HI           0x1c8
#define EMC_STAT_DRAM_DEV0_WRITE8_CNT_LO          0x1cc
#define EMC_STAT_DRAM_DEV0_WRITE8_CNT_HI          0x1d0
#define EMC_STAT_DRAM_DEV0_REF_CNT_LO             0x1d4
#define EMC_STAT_DRAM_DEV0_REF_CNT_HI             0x1d8
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_LO 0x1dc
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_HI 0x1e0
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_LO 0x1e4
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_HI 0x1e8
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_LO 0x1ec
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_HI 0x1f0
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_LO 0x1f4
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_HI 0x1f8
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_LO 0x1fc
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_HI 0x200
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_LO 0x204
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_HI 0x208
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_LO 0x20c
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_HI 0x210
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_LO 0x214
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_HI 0x218
#define EMC_STAT_DRAM_DEV0_SR_CKE_EQ0_CLKS_LO     0x21c
#define EMC_STAT_DRAM_DEV0_SR_CKE_EQ0_CLKS_HI     0x220
#define EMC_STAT_DRAM_DEV0_DSR                    0x224
#define EMC_STAT_DRAM_DEV1_ACTIVATE_CNT_LO        0x228
#define EMC_STAT_DRAM_DEV1_ACTIVATE_CNT_HI        0x22c
#define EMC_STAT_DRAM_DEV1_READ_CNT_LO            0x230
#define EMC_STAT_DRAM_DEV1_READ_CNT_HI            0x234
#define EMC_STAT_DRAM_DEV1_READ8_CNT_LO           0x238
#define EMC_STAT_DRAM_DEV1_READ8_CNT_HI           0x23c
#define EMC_STAT_DRAM_DEV1_WRITE_CNT_LO           0x240
#define EMC_STAT_DRAM_DEV1_WRITE_CNT_HI           0x244
#define EMC_STAT_DRAM_DEV1_WRITE8_CNT_LO          0x248
#define EMC_STAT_DRAM_DEV1_WRITE8_CNT_HI          0x24c
#define EMC_STAT_DRAM_DEV1_REF_CNT_LO             0x250
#define EMC_STAT_DRAM_DEV1_REF_CNT_HI             0x254
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_LO 0x258
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_HI 0x25c
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_LO 0x260
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_HI 0x264
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_LO 0x268
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_HI 0x26c
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_LO 0x270
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_HI 0x274
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_LO 0x278
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_HI 0x27c
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_LO 0x280
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_HI 0x284
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_LO 0x288
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_HI 0x28c
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_LO 0x290
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_HI 0x294
#define EMC_STAT_DRAM_DEV1_SR_CKE_EQ0_CLKS_LO     0x298
#define EMC_STAT_DRAM_DEV1_SR_CKE_EQ0_CLKS_HI     0x29c
#define EMC_STAT_DRAM_DEV1_DSR                    0x2a0
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_LO 0xc8c
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_HI 0xc90
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_LO 0xc94
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_HI 0xc98
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_LO 0xc9c
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_HI 0xca0
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_LO 0xca4
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_HI 0xca8
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_LO 0xcac
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_HI 0xcb0
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_LO 0xcb4
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_HI 0xcb8
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_LO 0xcbc
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_HI 0xcc0
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_LO 0xcc4
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_HI 0xcc8
#define EMC_STAT_DRAM_IO_SR_CKE_EQ0_CLKS_LO       0xccc
#define EMC_STAT_DRAM_IO_SR_CKE_EQ0_CLKS_HI       0xcd0
#define EMC_STAT_DRAM_IO_DSR                      0xcd4
#define EMC_AUTO_CAL_CONFIG                       0x2a4
#define EMC_AUTO_CAL_CONFIG2                      0x458
#define EMC_AUTO_CAL_CONFIG3                      0x45c
#define EMC_AUTO_CAL_CONFIG4                      0x5b0
#define EMC_AUTO_CAL_CONFIG5                      0x5b4
#define EMC_AUTO_CAL_CONFIG6                      0x5cc
#define EMC_AUTO_CAL_CONFIG7                      0x574
#define EMC_AUTO_CAL_CONFIG8                      0x2dc
#define EMC_AUTO_CAL_CONFIG9                      0x42C
#define EMC_AUTO_CAL_VREF_SEL_0                   0x2f8
#define EMC_AUTO_CAL_VREF_SEL_1                   0x300
#define EMC_AUTO_CAL_INTERVAL                     0x2a8
#define EMC_AUTO_CAL_STATUS                       0x2ac
#define EMC_AUTO_CAL_STATUS2                      0x3d4
#define EMC_AUTO_CAL_CHANNEL                      0x464
#define EMC_PMACRO_RX_TERM                        0xc48
#define EMC_PMACRO_DQ_TX_DRV                      0xc70
#define EMC_PMACRO_CA_TX_DRV                      0xc74
#define EMC_PMACRO_CMD_TX_DRV                     0xc4c
#define EMC_PMACRO_AUTOCAL_CFG_0                  0x700
#define EMC_PMACRO_AUTOCAL_CFG_1                  0x704
#define EMC_PMACRO_AUTOCAL_CFG_2                  0x708
#define EMC_PMACRO_AUTOCAL_CFG_COMMON             0xc78
#define EMC_PMACRO_ZCTRL                          0xc44
#define EMC_XM2COMPPADCTRL                        0x30c
#define EMC_XM2COMPPADCTRL2                       0x578
#define EMC_XM2COMPPADCTRL3                       0x2f4
#define EMC_COMP_PAD_SW_CTRL                      0x57c
#define EMC_REQ_CTRL                              0x2b0
#define EMC_EMC_STATUS                            0x2b4
#define  EMC_STATUS_MRR_DIVLD BIT(20)
#define EMC_CFG_2                                 0x2b8
#define EMC_CFG_DIG_DLL                           0x2bc
#define EMC_CFG_DIG_DLL_PERIOD                    0x2c0
#define EMC_DIG_DLL_STATUS                        0x2c4
#define EMC_CFG_DIG_DLL_1                         0x2c8
#define EMC_RDV_MASK                              0x2cc
#define EMC_WDV_MASK                              0x2d0
#define EMC_RDV_EARLY_MASK                        0x2d4
#define EMC_RDV_EARLY                             0x2d8
#define EMC_WDV_CHK                               0x4e0
#define EMC_ZCAL_INTERVAL                         0x2e0
#define EMC_ZCAL_WAIT_CNT                         0x2e4
#define EMC_ZCAL_MRW_CMD                          0x2e8
#define EMC_ZQ_CAL                                0x2ec
#define EMC_SCRATCH0                              0x324
#define EMC_STALL_THEN_EXE_BEFORE_CLKCHANGE       0x3c8
#define EMC_STALL_THEN_EXE_AFTER_CLKCHANGE        0x3cc
#define EMC_UNSTALL_RW_AFTER_CLKCHANGE            0x3d0
#define EMC_FDPD_CTRL_CMD_NO_RAMP                 0x4d8
#define EMC_SEL_DPD_CTRL                          0x3d8
#define EMC_FDPD_CTRL_DQ                          0x310
#define EMC_FDPD_CTRL_CMD                         0x314
#define EMC_PRE_REFRESH_REQ_CNT                   0x3dc
#define EMC_REFCTRL2                              0x580
#define EMC_FBIO_CFG7                             0x584
#define EMC_DATA_BRLSHFT_0                        0x588
#define EMC_DATA_BRLSHFT_1                        0x58c
#define EMC_DQS_BRLSHFT_0                         0x594
#define EMC_DQS_BRLSHFT_1                         0x598
#define EMC_CMD_BRLSHFT_0                         0x59c
#define EMC_CMD_BRLSHFT_1                         0x5a0
#define EMC_CMD_BRLSHFT_2                         0x5a4
#define EMC_CMD_BRLSHFT_3                         0x5a8
#define EMC_QUSE_BRLSHFT_0                        0x5ac
#define EMC_QUSE_BRLSHFT_1                        0x5b8
#define EMC_QUSE_BRLSHFT_2                        0x5bc
#define EMC_QUSE_BRLSHFT_3                        0x5c4
#define EMC_FBIO_CFG8                             0x5c8
#define EMC_CMD_MAPPING_CMD0_0                    0x380
#define EMC_CMD_MAPPING_CMD0_1                    0x384
#define EMC_CMD_MAPPING_CMD0_2                    0x388
#define EMC_CMD_MAPPING_CMD1_0                    0x38c
#define EMC_CMD_MAPPING_CMD1_1                    0x390
#define EMC_CMD_MAPPING_CMD1_2                    0x394
#define EMC_CMD_MAPPING_CMD2_0                    0x398
#define EMC_CMD_MAPPING_CMD2_1                    0x39c
#define EMC_CMD_MAPPING_CMD2_2                    0x3a0
#define EMC_CMD_MAPPING_CMD3_0                    0x3a4
#define EMC_CMD_MAPPING_CMD3_1                    0x3a8
#define EMC_CMD_MAPPING_CMD3_2                    0x3ac
#define EMC_CMD_MAPPING_BYTE                      0x3b0
#define EMC_DYN_SELF_REF_CONTROL                  0x3e0
#define EMC_TXSRDLL                               0x3e4
#define EMC_CCFIFO_ADDR                           0x3e8
#define EMC_CCFIFO_DATA                           0x3ec
#define EMC_CCFIFO_STATUS                         0x3f0
#define EMC_SWIZZLE_RANK0_BYTE0                   0x404
#define EMC_SWIZZLE_RANK0_BYTE1                   0x408
#define EMC_SWIZZLE_RANK0_BYTE2                   0x40c
#define EMC_SWIZZLE_RANK0_BYTE3                   0x410
#define EMC_SWIZZLE_RANK1_BYTE0                   0x418
#define EMC_SWIZZLE_RANK1_BYTE1                   0x41c
#define EMC_SWIZZLE_RANK1_BYTE2                   0x420
#define EMC_SWIZZLE_RANK1_BYTE3                   0x424
#define EMC_TR_TIMING_0                           0x3b4
#define EMC_TR_CTRL_0                             0x3b8
#define EMC_TR_CTRL_1                             0x3bc
#define EMC_TR_DVFS                               0x460
#define EMC_SWITCH_BACK_CTRL                      0x3c0
#define EMC_TR_RDV                                0x3c4
#define EMC_TR_QPOP                               0x3f4
#define EMC_TR_RDV_MASK                           0x3f8
#define EMC_TR_QSAFE                              0x3fc
#define EMC_TR_QRST                               0x400
#define EMC_IBDLY                                 0x468
#define EMC_OBDLY                                 0x46c
#define EMC_TXDSRVTTGEN                           0x480
#define EMC_WE_DURATION                           0x48c
#define EMC_WS_DURATION                           0x490
#define EMC_WEV                                   0x494
#define EMC_WSV                                   0x498
#define EMC_CFG_3                                 0x49c
#define EMC_CFG_PIPE_2                            0x554
#define EMC_CFG_PIPE_CLK                          0x558
#define EMC_CFG_PIPE_1                            0x55c
#define EMC_CFG_PIPE                              0x560
#define EMC_QPOP                                  0x564
#define EMC_QUSE_WIDTH                            0x568
#define EMC_PUTERM_WIDTH                          0x56c
#define EMC_PROTOBIST_CONFIG_ADR_1                0x5d0
#define EMC_PROTOBIST_CONFIG_ADR_2                0x5d4
#define EMC_PROTOBIST_MISC                        0x5d8
#define EMC_PROTOBIST_WDATA_LOWER                 0x5dc
#define EMC_PROTOBIST_WDATA_UPPER                 0x5e0
#define EMC_PROTOBIST_RDATA                       0x5ec
#define EMC_DLL_CFG_0                             0x5e4
#define EMC_DLL_CFG_1                             0x5e8
#define EMC_TRAINING_CMD                          0xe00
#define EMC_TRAINING_CTRL                         0xe04
#define EMC_TRAINING_STATUS                       0xe08
#define EMC_TRAINING_QUSE_CORS_CTRL               0xe0c
#define EMC_TRAINING_QUSE_FINE_CTRL               0xe10
#define EMC_TRAINING_QUSE_CTRL_MISC               0xe14
#define EMC_TRAINING_WRITE_FINE_CTRL              0xe18
#define EMC_TRAINING_WRITE_CTRL_MISC              0xe1c
#define EMC_TRAINING_WRITE_VREF_CTRL              0xe20
#define EMC_TRAINING_READ_FINE_CTRL               0xe24
#define EMC_TRAINING_READ_CTRL_MISC               0xe28
#define EMC_TRAINING_READ_VREF_CTRL               0xe2c
#define EMC_TRAINING_CA_FINE_CTRL                 0xe30
#define EMC_TRAINING_CA_CTRL_MISC                 0xe34
#define EMC_TRAINING_CA_CTRL_MISC1                0xe38
#define EMC_TRAINING_CA_VREF_CTRL                 0xe3c
#define EMC_TRAINING_CA_TADR_CTRL                 0xe40
#define EMC_TRAINING_SETTLE                       0xe44
#define EMC_TRAINING_DEBUG_CTRL                   0xe48
#define EMC_TRAINING_DEBUG_DQ0                    0xe4c
#define EMC_TRAINING_DEBUG_DQ1                    0xe50
#define EMC_TRAINING_DEBUG_DQ2                    0xe54
#define EMC_TRAINING_DEBUG_DQ3                    0xe58
#define EMC_TRAINING_MPC                          0xe5c
#define EMC_TRAINING_PATRAM_CTRL                  0xe60
#define EMC_TRAINING_PATRAM_DQ                    0xe64
#define EMC_TRAINING_PATRAM_DMI                   0xe68
#define EMC_TRAINING_VREF_SETTLE                  0xe6c
#define EMC_TRAINING_RW_EYE_CENTER_IB_BYTE0       0xe70
#define EMC_TRAINING_RW_EYE_CENTER_IB_BYTE1       0xe74
#define EMC_TRAINING_RW_EYE_CENTER_IB_BYTE2       0xe78
#define EMC_TRAINING_RW_EYE_CENTER_IB_BYTE3       0xe7c
#define EMC_TRAINING_RW_EYE_CENTER_IB_MISC        0xe80
#define EMC_TRAINING_RW_EYE_CENTER_OB_BYTE0       0xe84
#define EMC_TRAINING_RW_EYE_CENTER_OB_BYTE1       0xe88
#define EMC_TRAINING_RW_EYE_CENTER_OB_BYTE2       0xe8c
#define EMC_TRAINING_RW_EYE_CENTER_OB_BYTE3       0xe90
#define EMC_TRAINING_RW_EYE_CENTER_OB_MISC        0xe94
#define EMC_TRAINING_RW_OFFSET_IB_BYTE0           0xe98
#define EMC_TRAINING_RW_OFFSET_IB_BYTE1           0xe9c
#define EMC_TRAINING_RW_OFFSET_IB_BYTE2           0xea0
#define EMC_TRAINING_RW_OFFSET_IB_BYTE3           0xea4
#define EMC_TRAINING_RW_OFFSET_IB_MISC            0xea8
#define EMC_TRAINING_RW_OFFSET_OB_BYTE0           0xeac
#define EMC_TRAINING_RW_OFFSET_OB_BYTE1           0xeb0
#define EMC_TRAINING_RW_OFFSET_OB_BYTE2           0xeb4
#define EMC_TRAINING_RW_OFFSET_OB_BYTE3           0xeb8
#define EMC_TRAINING_RW_OFFSET_OB_MISC            0xebc
#define EMC_TRAINING_OPT_CA_VREF                  0xec0
#define EMC_TRAINING_OPT_DQ_OB_VREF               0xec4
#define EMC_TRAINING_OPT_DQ_IB_VREF_RANK0         0xec8
#define EMC_TRAINING_OPT_DQ_IB_VREF_RANK1         0xecc
#define EMC_TRAINING_QUSE_VREF_CTRL               0xed0
#define EMC_TRAINING_OPT_DQS_IB_VREF_RANK0        0xed4
#define EMC_TRAINING_OPT_DQS_IB_VREF_RANK1        0xed8
#define EMC_TRAINING_DRAMC_TIMING                 0xedc
#define EMC_PMACRO_DATA_PI_CTRL                   0x110
#define EMC_PMACRO_CMD_PI_CTRL                    0x114
#define EMC_PMACRO_QUSE_DDLL_RANK0_0              0x600
#define EMC_PMACRO_QUSE_DDLL_RANK0_1              0x604
#define EMC_PMACRO_QUSE_DDLL_RANK0_2              0x608
#define EMC_PMACRO_QUSE_DDLL_RANK0_3              0x60c
#define EMC_PMACRO_QUSE_DDLL_RANK0_4              0x610
#define EMC_PMACRO_QUSE_DDLL_RANK0_5              0x614
#define EMC_PMACRO_QUSE_DDLL_RANK1_0              0x620
#define EMC_PMACRO_QUSE_DDLL_RANK1_1              0x624
#define EMC_PMACRO_QUSE_DDLL_RANK1_2              0x628
#define EMC_PMACRO_QUSE_DDLL_RANK1_3              0x62c
#define EMC_PMACRO_QUSE_DDLL_RANK1_4              0x630
#define EMC_PMACRO_QUSE_DDLL_RANK1_5              0x634
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0        0x640
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1        0x644
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2        0x648
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3        0x64c
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_4        0x650
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_5        0x654
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0        0x660
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1        0x664
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2        0x668
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3        0x66c
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_4        0x670
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_5        0x674
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_0       0x680
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_1       0x684
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_2       0x688
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_3       0x68c
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_4       0x690
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_5       0x694
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_0       0x6a0
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_1       0x6a4
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_2       0x6a8
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_3       0x6ac
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_4       0x6b0
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_5       0x6b4
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_0       0x6c0
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_1       0x6c4
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_2       0x6c8
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_3       0x6cc
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_4       0x6d0
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_5       0x6d4
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_0       0x6e0
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_1       0x6e4
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_2       0x6e8
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_3       0x6ec
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_4       0x6f0
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_5       0x6f4
#define EMC_PMACRO_TX_PWRD_0                      0x720
#define EMC_PMACRO_TX_PWRD_1                      0x724
#define EMC_PMACRO_TX_PWRD_2                      0x728
#define EMC_PMACRO_TX_PWRD_3                      0x72c
#define EMC_PMACRO_TX_PWRD_4                      0x730
#define EMC_PMACRO_TX_PWRD_5                      0x734
#define EMC_PMACRO_TX_SEL_CLK_SRC_0               0x740
#define EMC_PMACRO_TX_SEL_CLK_SRC_1               0x744
#define EMC_PMACRO_TX_SEL_CLK_SRC_3               0x74c
#define EMC_PMACRO_TX_SEL_CLK_SRC_2               0x748
#define EMC_PMACRO_TX_SEL_CLK_SRC_4               0x750
#define EMC_PMACRO_TX_SEL_CLK_SRC_5               0x754
#define EMC_PMACRO_DDLL_BYPASS                    0x760
#define EMC_PMACRO_DDLL_PWRD_0                    0x770
#define EMC_PMACRO_DDLL_PWRD_1                    0x774
#define EMC_PMACRO_DDLL_PWRD_2                    0x778
#define EMC_PMACRO_CMD_CTRL_0                     0x780
#define EMC_PMACRO_CMD_CTRL_1                     0x784
#define EMC_PMACRO_CMD_CTRL_2                     0x788
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE0_0 0x800
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE0_1 0x804
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE0_2 0x808
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE0_3 0x80c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE1_0 0x810
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE1_1 0x814
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE1_2 0x818
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE1_3 0x81c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE2_0 0x820
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE2_1 0x824
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE2_2 0x828
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE2_3 0x82c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE3_0 0x830
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE3_1 0x834
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE3_2 0x838
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE3_3 0x83c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE4_0 0x840
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE4_1 0x844
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE4_2 0x848
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE4_3 0x84c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE5_0 0x850
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE5_1 0x854
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE5_2 0x858
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE5_3 0x85c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE6_0 0x860
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE6_1 0x864
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE6_2 0x868
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE6_3 0x86c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE7_0 0x870
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE7_1 0x874
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE7_2 0x878
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE7_3 0x87c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD0_0  0x880
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD0_1  0x884
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD0_2  0x888
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD0_3  0x88c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD1_0  0x890
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD1_1  0x894
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD1_2  0x898
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD1_3  0x89c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD2_0  0x8a0
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD2_1  0x8a4
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD2_2  0x8a8
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD2_3  0x8ac
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD3_0  0x8b0
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD3_1  0x8b4
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD3_2  0x8b8
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD3_3  0x8bc
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE0_0 0x900
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE0_1 0x904
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE0_2 0x908
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE0_3 0x90c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE1_0 0x910
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE1_1 0x914
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE1_2 0x918
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE1_3 0x91c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE2_0 0x920
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE2_1 0x924
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE2_2 0x928
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE2_3 0x92c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE3_0 0x930
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE3_1 0x934
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE3_2 0x938
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE3_3 0x93c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE4_0 0x940
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE4_1 0x944
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE4_2 0x948
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE4_3 0x94c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE5_0 0x950
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE5_1 0x954
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE5_2 0x958
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE5_3 0x95c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE6_0 0x960
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE6_1 0x964
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE6_2 0x968
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE6_3 0x96c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE7_0 0x970
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE7_1 0x974
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE7_2 0x978
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE7_3 0x97c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD0_0  0x980
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD0_1  0x984
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD0_2  0x988
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD0_3  0x98c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD1_0  0x990
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD1_1  0x994
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD1_2  0x998
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD1_3  0x99c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD2_0  0x9a0
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD2_1  0x9a4
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD2_2  0x9a8
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD2_3  0x9ac
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD3_0  0x9b0
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD3_1  0x9b4
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD3_2  0x9b8
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD3_3  0x9bc
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE0_0 0xa00
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE0_1 0xa04
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE0_2 0xa08
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE1_0 0xa10
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE1_1 0xa14
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE1_2 0xa18
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE2_0 0xa20
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE2_1 0xa24
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE2_2 0xa28
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE3_0 0xa30
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE3_1 0xa34
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE3_2 0xa38
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE4_0 0xa40
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE4_1 0xa44
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE4_2 0xa48
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE5_0 0xa50
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE5_1 0xa54
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE5_2 0xa58
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE6_0 0xa60
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE6_1 0xa64
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE6_2 0xa68
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE7_0 0xa70
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE7_1 0xa74
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE7_2 0xa78
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD0_0  0xa80
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD0_1  0xa84
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD0_2  0xa88
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD1_0  0xa90
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD1_1  0xa94
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD1_2  0xa98
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD2_0  0xaa0
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD2_1  0xaa4
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD2_2  0xaa8
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD3_0  0xab0
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD3_1  0xab4
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD3_2  0xab8
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE0_0 0xb00
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE0_1 0xb04
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE0_2 0xb08
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE1_0 0xb10
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE1_1 0xb14
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE1_2 0xb18
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE2_0 0xb20
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE2_1 0xb24
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE2_2 0xb28
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE3_0 0xb30
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE3_1 0xb34
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE3_2 0xb38
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE4_0 0xb40
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE4_1 0xb44
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE4_2 0xb48
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE5_0 0xb50
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE5_1 0xb54
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE5_2 0xb58
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE6_0 0xb60
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE6_1 0xb64
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE6_2 0xb68
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE7_0 0xb70
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE7_1 0xb74
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE7_2 0xb78
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD0_0  0xb80
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD0_1  0xb84
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD0_2  0xb88
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD1_0  0xb90
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD1_1  0xb94
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD1_2  0xb98
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD2_0  0xba0
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD2_1  0xba4
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD2_2  0xba8
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD3_0  0xbb0
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD3_1  0xbb4
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD3_2  0xbb8
#define EMC_PMACRO_IB_VREF_DQ_0                   0xbe0
#define EMC_PMACRO_IB_VREF_DQ_1                   0xbe4
#define EMC_PMACRO_IB_VREF_DQ_2                   0xbe8
#define EMC_PMACRO_IB_VREF_DQS_0                  0xbf0
#define EMC_PMACRO_IB_VREF_DQS_1                  0xbf4
#define EMC_PMACRO_IB_VREF_DQS_2                  0xbf8
#define EMC_PMACRO_IB_RXRT                        0xcf4
#define EMC_PMACRO_DDLL_LONG_CMD_0                0xc00
#define EMC_PMACRO_DDLL_LONG_CMD_1                0xc04
#define EMC_PMACRO_DDLL_LONG_CMD_2                0xc08
#define EMC_PMACRO_DDLL_LONG_CMD_3                0xc0c
#define EMC_PMACRO_DDLL_LONG_CMD_4                0xc10
#define EMC_PMACRO_DDLL_LONG_CMD_5                0xc14
#define EMC_PMACRO_DDLL_SHORT_CMD_0               0xc20
#define EMC_PMACRO_DDLL_SHORT_CMD_1               0xc24
#define EMC_PMACRO_DDLL_SHORT_CMD_2               0xc28
#define EMC_PMACRO_CFG_PM_GLOBAL_0                0xc30
#define EMC_PMACRO_VTTGEN_CTRL_0                  0xc34
#define EMC_PMACRO_VTTGEN_CTRL_1                  0xc38
#define EMC_PMACRO_VTTGEN_CTRL_2                  0xcf0
#define EMC_PMACRO_BG_BIAS_CTRL_0                 0xc3c
#define EMC_PMACRO_PAD_CFG_CTRL                   0xc40
#define EMC_PMACRO_CMD_PAD_RX_CTRL                0xc50
#define EMC_PMACRO_DATA_PAD_RX_CTRL               0xc54
#define EMC_PMACRO_CMD_RX_TERM_MODE               0xc58
#define EMC_PMACRO_DATA_RX_TERM_MODE              0xc5c
#define EMC_PMACRO_CMD_PAD_TX_CTRL                0xc60
#define EMC_PMACRO_DATA_PAD_TX_CTRL               0xc64
#define EMC_PMACRO_COMMON_PAD_TX_CTRL             0xc68
#define EMC_PMACRO_DSR_VTTGEN_CTRL0               0xC6C
#define EMC_PMACRO_BRICK_MAPPING_0                0xc80
#define EMC_PMACRO_BRICK_MAPPING_1                0xc84
#define EMC_PMACRO_BRICK_MAPPING_2                0xc88
#define EMC_PMACRO_DDLLCAL_CAL                    0xce0
#define EMC_PMACRO_DDLL_OFFSET                    0xce4
#define EMC_PMACRO_DDLL_PERIODIC_OFFSET           0xce8
#define EMC_PMACRO_BRICK_CTRL_RFU1                0x330
#define EMC_PMACRO_BRICK_CTRL_RFU2                0x334
#define EMC_PMACRO_CMD_BRICK_CTRL_FDPD            0x318
#define EMC_PMACRO_DATA_BRICK_CTRL_FDPD           0x31c
#define EMC_PMACRO_TRAINING_CTRL_0                0xcf8
#define EMC_PMACRO_TRAINING_CTRL_1                0xcfc
#define EMC_PMACRO_PERBIT_FGCG_CTRL_0             0xD40
#define EMC_PMACRO_PERBIT_FGCG_CTRL_1             0xD44
#define EMC_PMACRO_PERBIT_FGCG_CTRL_2             0xD48
#define EMC_PMACRO_PERBIT_FGCG_CTRL_3             0xD4C
#define EMC_PMACRO_PERBIT_FGCG_CTRL_4             0xD50
#define EMC_PMACRO_PERBIT_FGCG_CTRL_5             0xD54
#define EMC_PMACRO_PERBIT_RFU_CTRL_0              0xD60
#define EMC_PMACRO_PERBIT_RFU_CTRL_1              0xD64
#define EMC_PMACRO_PERBIT_RFU_CTRL_2              0xD68
#define EMC_PMACRO_PERBIT_RFU_CTRL_3              0xD6C
#define EMC_PMACRO_PERBIT_RFU_CTRL_4              0xD70
#define EMC_PMACRO_PERBIT_RFU_CTRL_5              0xD74
#define EMC_PMACRO_PERBIT_RFU1_CTRL_0             0xD80
#define EMC_PMACRO_PERBIT_RFU1_CTRL_1             0xD84
#define EMC_PMACRO_PERBIT_RFU1_CTRL_2             0xD88
#define EMC_PMACRO_PERBIT_RFU1_CTRL_3             0xD8C
#define EMC_PMACRO_PERBIT_RFU1_CTRL_4             0xD90
#define EMC_PMACRO_PERBIT_RFU1_CTRL_5             0xD94
#define EMC_PMC_SCRATCH1                          0x440
#define EMC_PMC_SCRATCH2                          0x444
#define EMC_PMC_SCRATCH3                          0x448

#define EMC_STATUS_UPDATE_TIMEOUT 1000

typedef enum _emc_mr_t
{
	MR0_FEAT    = 0,
	MR4_TEMP    = 4,
	MR5_MAN_ID  = 5,
	MR6_REV_ID1 = 6,
	MR7_REV_ID2 = 7,
	MR8_DENSITY = 8,
} emc_mr_t;

enum
{
	EMC_CHAN0 = 0,
	EMC_CHAN1 = 1
};

typedef struct _emc_mr_chip_data_t
{
	// Device 0.
	u8 rank0_ch0;
	u8 rank0_ch1;

	// Device 1.
	u8 rank1_ch0;
	u8 rank1_ch1;
} emc_mr_chip_data_t;

typedef struct _emc_mr_data_t
{
	emc_mr_chip_data_t chip0;
	emc_mr_chip_data_t chip1;
} emc_mr_data_t;

#endif