Home | History | Annotate | Download | only in Pei
      1 /************************************************************************
      2  *
      3  * Copyright (c) 2013-2015 Intel Corporation.
      4  *
      5 * This program and the accompanying materials
      6 * are licensed and made available under the terms and conditions of the BSD License
      7 * which accompanies this distribution.  The full text of the license may be found at
      8 * http://opensource.org/licenses/bsd-license.php
      9 *
     10 * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11 * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12  *
     13  * MCU register definition
     14  *
     15  ************************************************************************/
     16 #ifndef __IOSF_DEFINITIONS_H
     17 #define __IOSF_DEFINITIONS_H
     18 
     19 // Define each of the IOSF-SB register offsets used by MRC.
     20 
     21 
     22 // MCU registers (DUNIT):
     23 // ====
     24 #define DRP                 0x0000
     25 #define DTR0                0x0001
     26 #define DTR1                0x0002
     27 #define DTR2                0x0003
     28 #define DTR3                0x0004
     29 #define DTR4                0x0005
     30 #define DPMC0               0x0006
     31 #define DPMC1               0x0007
     32 #define DRFC                0x0008
     33 #define DSCH                0x0009
     34 #define DCAL                0x000A
     35 #define DRMC                0x000B
     36 #define PMSTS               0x000C
     37 #define DCO                 0x000F
     38 #define DSTAT               0x0020
     39 #define DECCCTRL            0x0060
     40 #define DFUSESTAT           0x0070
     41 #define SCRMSEED            0x0080
     42 #define SCRMLO              0x0081
     43 #define SCRMHI              0x0082
     44 
     45 #define MCU_CH_OFFSET       0x0040
     46 #define MCU_RK_OFFSET       0x0020
     47 
     48 ////
     49 //
     50 // BEGIN DUnit register definition
     51 //
     52 #pragma pack(1)
     53 typedef union {
     54     uint32_t    raw;
     55     struct {
     56         uint32_t rank0Enabled       :1;             /**< BIT [0]   Rank 0 Enable */
     57         uint32_t rank1Enabled       :1;             /**< BIT [1]   Rank 1 Enable */
     58         uint32_t reserved0          :2;
     59         uint32_t dimm0DevWidth      :2;             /**< BIT [5:4] DIMM 0 Device Width (Rank0&1)  */
     60         uint32_t dimm0DevDensity    :2;             /**< BIT [7:6] DIMM 0 Device Density          */
     61         uint32_t reserved1          :1;
     62         uint32_t dimm1DevWidth      :2;             /**< BIT [10:9]  DIMM 1 Device Width (Rank2&3)  */
     63         uint32_t dimm1DevDensity    :2;             /**< BIT [12:11] DIMM 1 Device Density          */
     64         uint32_t split64            :1;             /**< BIT [13] split 64B transactions */
     65         uint32_t addressMap         :2;             /**< BIT [15:14] Address Map select */
     66         uint32_t reserved3          :14;
     67         uint32_t mode32             :1;             /**< BIT [30] Select 32bit data interface*/
     68         uint32_t reserved4          :1;
     69     } field;
     70 } RegDRP;                                           /**< DRAM Rank Population and Interface Register */
     71 #pragma pack()
     72 
     73 
     74 #pragma pack(1)
     75 typedef union {
     76     uint32_t    raw;
     77     struct {
     78         uint32_t dramFrequency      :2;             /**< DRAM Frequency (000=800,001=1033,010=1333) */
     79         uint32_t reserved1          :2;
     80         uint32_t tRP                :4;             /**< bit [7:4]   Precharge to Activate Delay  */
     81         uint32_t tRCD               :4;             /**< bit [11:8]  Activate to CAS Delay  */
     82         uint32_t tCL                :3;             /**< bit [14:12] CAS Latency  */
     83         uint32_t reserved4          :1;
     84         uint32_t tXS                :1;             /**< SRX Delay  */
     85         uint32_t reserved5          :1;
     86         uint32_t tXSDLL             :1;             /**< SRX To DLL Delay  */
     87         uint32_t reserved6          :1;
     88         uint32_t tZQCS              :1;             /**< bit [20] ZQTS recovery Latncy  */
     89         uint32_t reserved7          :1;
     90         uint32_t tZQCL              :1;             /**< bit [22] ZQCL recovery Latncy  */
     91         uint32_t reserved8          :1;
     92         uint32_t pmeDelay           :2;             /**< bit [25:24] Power mode entry delay  */
     93         uint32_t reserved9          :2;
     94         uint32_t CKEDLY             :4;               /**< bit [31:28]  */
     95     } field;
     96 } RegDTR0;                                          /**< DRAM Timing Register 0 */
     97 #pragma pack()
     98 
     99 #pragma pack(1)
    100 typedef union {
    101     uint32_t    raw;
    102     struct {
    103         uint32_t tWCL               :3;             /**< bit [2:0] CAS Write Latency */
    104         uint32_t reserved1          :1;
    105         uint32_t tCMD               :2;             /**< bit [5:4] Command transport duration */
    106         uint32_t reserved2          :2;
    107         uint32_t tWTP               :4;             /**< Write to Precharge */
    108         uint32_t tCCD               :2;             /**< CAS to CAS delay */
    109         uint32_t reserved4          :2;
    110         uint32_t tFAW               :4;             /**< Four bank Activation Window*/
    111         uint32_t tRAS               :4;             /**< Row Activation Period: */
    112         uint32_t tRRD               :2;             /**<Row activation to Row activation Delay */
    113         uint32_t reserved5          :2;
    114         uint32_t tRTP               :3;             /**<Read to Precharge Delay */
    115         uint32_t reserved6          :1;
    116     } field;
    117 } RegDTR1;                                          /**< DRAM Timing Register 1 */
    118 #pragma pack()
    119 
    120 #pragma pack(1)
    121 typedef union {
    122     uint32_t    raw;
    123     struct {
    124         uint32_t tRRDR              :3;             /**< RD to RD from different ranks, same DIMM */
    125         uint32_t reserved1          :5;
    126         uint32_t tWWDR              :3;             /**< WR to WR from different ranks, same DIMM. */
    127         uint32_t reserved3          :5;
    128         uint32_t tRWDR              :4;             /**< bit [19:16] RD to WR from different ranks, same DIMM. */
    129         uint32_t reserved5          :12;
    130     } field;
    131 } RegDTR2;                                          /**< DRAM Timing Register 2 */
    132 #pragma pack()
    133 
    134 #pragma pack(1)
    135 typedef union {
    136     uint32_t    raw;
    137     struct {
    138         uint32_t tWRDR              :3;             /**< WR to RD from different ranks, same DIMM. */
    139         uint32_t reserved1          :1;
    140         uint32_t tWRDD              :3;             /**< WR to RD from different DIMM. */
    141         uint32_t reserved2          :1;
    142         uint32_t tRWSR              :4;             /**< RD to WR Same Rank. */
    143         uint32_t reserved3          :1;
    144         uint32_t tWRSR              :4;             /**< WR to RD Same Rank. */
    145         uint32_t reserved4          :5;
    146         uint32_t tXP                :2;             /**< Time from CKE set on to any command. */
    147         uint32_t PWD_DLY            :4;             /**< Extended Power-Down Delay. */
    148         uint32_t EnDeRate           :1;
    149         uint32_t DeRateOvr          :1;
    150         uint32_t DeRateStat         :1;
    151         uint32_t reserved5          :1;
    152     } field;
    153 } RegDTR3;                                          /**< DRAM Timing Register 3 */
    154 #pragma pack()
    155 
    156 
    157 #pragma pack(1)
    158 typedef union {
    159     uint32_t    raw;
    160     struct {
    161         uint32_t WRODTSTRT          :2;             /**< WR command to ODT assert delay */
    162         uint32_t reserved1          :2;
    163         uint32_t WRODTSTOP          :3;             /**< Write command to ODT de-assert delay. */
    164         uint32_t reserved2          :1;
    165         uint32_t RDODTSTRT          :3;             /**< Read command to ODT assert delay */
    166         uint32_t reserved3          :1;
    167         uint32_t RDODTSTOP          :3;             /**< Read command to ODT de-assert delay */
    168         uint32_t ODTDIS             :1;             /**< ODT disable */
    169         uint32_t TRGSTRDIS          :1;             /**< Write target rank is not stretched */
    170         uint32_t RDODTDIS           :1;             /**< Disable Read ODT */
    171         uint32_t WRBODTDIS          :1;             /**< Disable Write ODT */
    172         uint32_t reserved5          :13;
    173     } field;
    174 } RegDTR4;                                          /**< DRAM Timing Register 3 */
    175 #pragma pack()
    176 
    177 #pragma pack(1)
    178 typedef union {
    179     uint32_t    raw;
    180     struct {
    181         uint32_t SREntryDelay       :8;             /**< Self-Refresh Entry Delay: */
    182         uint32_t powerModeOpCode    :5;             /**< SPID Power Mode Opcode */
    183         uint32_t reserved1          :3;
    184         uint32_t PCLSTO             :3;             /**< Page Close Timeout Period */
    185         uint32_t reserved2          :1;
    186         uint32_t PCLSWKOK           :1;             /**< Wake Allowed For Page Close Timeout */
    187         uint32_t PREAPWDEN          :1;             /**< Send Precharge All to rank before entering Power-Down mode. */
    188         uint32_t reserved3          :1;
    189         uint32_t DYNSREN            :1;             /**< Dynamic Self-Refresh */
    190         uint32_t CLKGTDIS           :1;             /**< Clock Gating Disabled*/
    191         uint32_t DISPWRDN           :1;             /**< Disable Power Down*/
    192         uint32_t reserved4          :2;
    193         uint32_t REUTCLKGTDIS       :1;
    194         uint32_t ENPHYCLKGATE       :1;
    195         uint32_t reserved5          :2;
    196     } field;
    197 } RegDPMC0;                                           /**< DRAM Power Management Control Register 0 */
    198 #pragma pack()
    199 
    200 #pragma pack(1)
    201 typedef union {
    202     uint32_t    raw;
    203     struct {
    204         uint32_t REFWMLO            :4;             /**< Refresh Opportunistic Watermark */
    205         uint32_t REFWMHI            :4;             /**< Refresh High Watermark*/
    206         uint32_t REFWMPNC           :4;             /**< Refresh Panic Watermark */
    207         uint32_t tREFI              :3;             /**< bit [14:12] Refresh Period */
    208         uint32_t reserved1          :1;
    209         uint32_t REFCNTMAX          :2;             /**< Refresh Max tREFI Interval */
    210         uint32_t reserved2          :2;
    211         uint32_t REFSKEWDIS         :1;             /**< tREFI counters */
    212         uint32_t REFDBTCLR          :1;
    213         uint32_t reserved3          :2;
    214         uint32_t CuRefRate          :3;
    215         uint32_t DisRefBW           :1;
    216         uint32_t reserved4          :4;
    217     } field;
    218 } RegDRCF;                                           /**< DRAM Refresh Control Register*/
    219 #pragma pack()
    220 
    221 #pragma pack(1)
    222 typedef union {
    223     uint32_t    raw;
    224     struct {
    225         uint32_t reserved1          :8;
    226         uint32_t ZQCINT             :3;             /**< ZQ Calibration Short Interval: */
    227         uint32_t reserved2          :1;
    228         uint32_t SRXZQCL            :2;             /** < ZQ Calibration Length */
    229         uint32_t ZQCalType          :1;
    230         uint32_t ZQCalStart         :1;
    231         uint32_t TQPollStart        :1;
    232         uint32_t TQPollRS           :2;
    233         uint32_t reserved3          :5;
    234         uint32_t MRRData            :8;             /**< bit[31:24] */
    235     } field;
    236 } RegDCAL;                                          /**< DRAM Calibration Control*/
    237 #pragma pack()
    238 
    239 #pragma pack(1)
    240 typedef union {
    241     uint32_t    raw;
    242     struct {
    243         uint32_t OOOAGETRH          :5;             /**< Out-of-Order Aging Threshold */
    244         uint32_t reserved1          :3;
    245         uint32_t OOODIS             :1;             /**< Out-of-Order Disable */
    246         uint32_t OOOST3DIS          :1;             /**< Out-of-Order Disabled when RequestBD_Status is 3. */
    247         uint32_t reserved2          :2;
    248         uint32_t NEWBYPDIS          :1;
    249         uint32_t reserved3          :3;
    250         uint32_t IPREQMAX           :3;             /** < Max In-Progress Requests stored in MC */
    251         uint32_t reserved4          :13;
    252     } field;
    253 } RegDSCH;                                           /**< DRAM Scheduler Control Register */
    254 #pragma pack()
    255 
    256 #pragma pack(1)
    257 typedef union {
    258     uint32_t    raw;
    259     struct {
    260         uint32_t DRPLOCK            :1;             /**< DRP lock bit */
    261         uint32_t reserved1          :7;
    262         uint32_t REUTLOCK           :1;             /**< REUT lock bit */
    263         uint32_t reserved2          :19;
    264         uint32_t PMICTL             :1;             /**< PRI Control Select: 0-memory_manager, 1-hte */
    265         uint32_t PMIDIS             :1;             /**< PMIDIS Should be set is using IOSF-SB RW */
    266         uint32_t DIOIC              :1;             /**< DDRIO initialization is complete */
    267         uint32_t IC                 :1;             /**< D-unit Initialization Complete */
    268     } field;
    269 } RegDCO;                                           /**< DRAM Controller Operation Register*/
    270 #pragma pack()
    271 
    272 #pragma pack(1)
    273 typedef union {
    274     uint32_t    raw;
    275     struct {
    276         uint32_t SBEEN       :1;             /**< Enable Single Bit Error Detection and Correction */
    277         uint32_t DBEEN       :1;             /**< Enable Double Bit Error Detection */
    278         uint32_t CBOEN       :3;             /**< Enable ECC Check Bits Override */
    279         uint32_t SYNSEL      :2;             /**< ECC Syndrome Bits Select for Observation */
    280     uint32_t CLRSBECNT   :1;             /**< Clear ECC Single Bit Error Count */
    281         uint32_t CBOV        :8;             /**< ECC Check Bits Override Value */
    282         uint32_t reserved1   :1;             /**<  */
    283         uint32_t ENCBGEN     :1;             /**< Enable Generation of ECC Check Bits */
    284         uint32_t ENCBGESWIZ  :1;             /**< Enable Same Chip ECC Byte Lane Swizzle */
    285 
    286     } field;
    287 } RegDECCCTRL;                                      /**< DRAM ECC Control Register */
    288 #pragma pack()
    289 
    290 
    291 #pragma pack(1)
    292 typedef union {
    293     uint32_t    raw;
    294     struct {
    295         uint32_t FUS_DUN_ECC_DIS              :1;
    296     uint32_t FUS_DUN_MAX_SUPPORTED_MEMORY :3;
    297     uint32_t FUS_DUN_MAX_DEVDEN           :2;
    298     uint32_t RESERVED1                    :1;
    299     uint32_t FUS_DUN_RANK2_DIS            :1;
    300     uint32_t FUS_DUN_OOO_DIS              :1;
    301     uint32_t FUS_DUN_MEMX8_DIS            :1;
    302     uint32_t FUS_DUN_MEMX16_DIS           :1;
    303     uint32_t RESERVED2                    :1;
    304     uint32_t FUS_DUN_1N_DIS               :1;
    305     uint32_t FUS_DUN_DQ_SCRAMBLER_DIS     :1;
    306     uint32_t RESERVED3                    :1;
    307     uint32_t FUS_DUN_32BIT_DRAM_IFC       :1;
    308     } field;
    309 } RegDFUSESTAT;
    310 #pragma pack()
    311 
    312 //
    313 // END DUnit register definition
    314 //
    315 ////
    316 
    317 
    318 
    319 ////
    320 //
    321 // DRAM Initialization Structures used in JEDEC Message Bus Commands
    322 //
    323 
    324 #pragma pack(1)
    325 typedef union {
    326         uint32_t      raw;
    327     struct {
    328         unsigned    command         :3;             /**< Command: 000-MRS,001-Refresh,010-Pre-charge,011-Activate,110-ZQ,111-NOP */
    329         unsigned    bankAddress     :3;             /**< Bank Address (BA[2:0]) */
    330         unsigned    BL              :2;             /**< Burst Length, CDV:1*/
    331         unsigned    CL              :1;             /**< CL Reserved CDV:0 */
    332         unsigned    RBT             :1;             /**< Read Burst Type */
    333         unsigned    casLatency      :3;             /**< cas Latency */
    334         unsigned    TM              :1;             /**< Test mode */
    335         unsigned    dllReset        :1;             /**< DLL Reset */
    336         unsigned    writeRecovery   :3;             /**< Write Recovery for Auto Pre-Charge: 001=2,010=3,011=4,100=5,101=6 */
    337         unsigned    PPD             :1;             /**< DLL Control for Precharge Power-Down CDV:1 */
    338         unsigned    reserved1       :3;
    339         unsigned    rankSelect      :4;             /**< Rank Select */
    340         unsigned    reserved2       :6;
    341     } field;
    342 } DramInitDDR3MRS0;                                 /**< DDR3 Mode Register Set (MRS) Command */
    343 #pragma pack()
    344 
    345 #pragma pack(1)
    346 typedef union {
    347         uint32_t      raw;
    348     struct {
    349         unsigned    command         :3;             /**< Command: 000-MRS,001-Refresh,010-Pre-charge,011-Activate,110-ZQ,111-NOP */
    350         unsigned    bankAddress     :3;             /**< Bank Address (BA[2:0]) */
    351         unsigned    dllEnabled      :1;             /**< CDV=0 */
    352         unsigned    DIC0            :1;             /**< Output Driver Impedance Control */
    353         unsigned    rttNom0         :1;             /**< RTT_nom[0] */
    354         unsigned    MRC_AL          :2;             /**< Additive Latency = 0 */
    355         unsigned    DIC1            :1;             /**< Reserved */
    356         unsigned    rttNom1         :1;             /**< RTT_nom[1] */
    357         unsigned    wlEnabled       :1;             /**< Write Leveling Enable */
    358         unsigned    reserved1       :1;
    359         unsigned    rttNom2         :1;             /** < RTT_nom[2] */
    360         unsigned    reserved2       :1;
    361         unsigned    TDQS            :1;             /**< TDQS Enable */
    362         unsigned    Qoff            :1;             /**< Output Buffers Disabled */
    363         unsigned    reserved3       :3;
    364         unsigned    rankSelect      :4;             /**< Rank Select */
    365         unsigned    reserved4       :6;
    366     } field;
    367 } DramInitDDR3EMR1;                                 /**< DDR3 Extended Mode Register 1 Set (EMRS1) Command */
    368 #pragma pack()
    369 
    370 #pragma pack(1)
    371 typedef union {
    372         uint32_t      raw;
    373     struct {
    374         uint32_t    command         :3;             /**< Command: 000-MRS,001-Refresh,010-Pre-charge,011-Activate,110-ZQ,111-NOP */
    375         uint32_t    bankAddress     :3;             /**< Bank Address (BA[2:0]) */
    376         uint32_t    PASR            :3;             /**< Partial Array Self-Refresh */
    377         uint32_t    CWL             :3;             /**< CAS Write Latency */
    378         uint32_t    ASR             :1;             /**< Auto Self-Refresh */
    379         uint32_t    SRT             :1;             /**< SR Temperature Range = 0*/
    380         uint32_t    reserved1       :1;
    381         uint32_t    rtt_WR          :2;             /**< Rtt_WR */
    382         uint32_t    reserved2       :5;
    383         uint32_t    rankSelect      :4;             /**< Rank Select */
    384         uint32_t    reserved3       :6;
    385     } field;
    386 } DramInitDDR3EMR2;                                 /**< DDR3 Extended Mode Register 2 Set (EMRS2) Command */
    387 #pragma pack()
    388 
    389 #pragma pack(1)
    390 typedef union {
    391         uint32_t      raw;
    392     struct {
    393         uint32_t    command         :3;             /**< Command: 000-MRS,001-Refresh,010-Pre-charge,011-Activate,110-ZQ,111-NOP */
    394         uint32_t    bankAddress     :3;             /**< Bank Address (BA[2:0]) */
    395         uint32_t    MPR_Location    :2;             /**< MPR Location */
    396         uint32_t    MPR             :1;             /**< MPR: Multi Purpose Register */
    397         uint32_t    reserved1       :13;
    398         uint32_t    rankSelect      :4;             /**< Rank Select */
    399         uint32_t    reserved2       :6;
    400     } field;
    401 } DramInitDDR3EMR3;                                 /**< DDR3 Extended Mode Register 2 Set (EMRS2) Command */
    402 #pragma pack()
    403 
    404 #pragma pack(1)
    405 typedef union {
    406     uint32_t    raw;
    407     struct {
    408         uint32_t    command         :3;             /**< Command: 000-MRS,001-Refresh,010-Pre-charge,011-Activate,110 - ZQ Calibration,111-NOP */
    409         uint32_t    bankAddress     :3;             /**< Bank Address (BA[2:0]) */
    410         uint32_t    multAddress     :16;            /**< Multiplexed Address (MA[14:0]) */
    411         uint32_t    rankSelect      :2;             /**< Rank Select */
    412         uint32_t    reserved3       :8;
    413     } field;
    414 } DramInitMisc;                                     /**< Miscellaneous DDRx Initialization Command */
    415 #pragma pack()
    416 
    417 //
    418 // Construct DRAM init command using DramInitXxxx pattern
    419 //
    420 #define DCMD_MRS1(rnk,dat) (0 | ((rnk)<<22) | (1<<3) | ((dat)<<6))
    421 #define DCMD_REF(rnk)      (1 | ((rnk)<<22))
    422 #define DCMD_PRE(rnk)      (2 | ((rnk)<<22))
    423 #define DCMD_PREA(rnk)     (2 | ((rnk)<<22) | (BIT10<<6))
    424 #define DCMD_ACT(rnk,row)  (3 | ((rnk)<<22) | ((row)<<6))
    425 #define DCMD_WR(rnk,col)   (4 | ((rnk)<<22) | ((col)<<6))
    426 #define DCMD_RD(rnk,col)   (5 | ((rnk)<<22) | ((col)<<6))
    427 #define DCMD_ZQCS(rnk)     (6 | ((rnk)<<22))
    428 #define DCMD_ZQCL(rnk)     (6 | ((rnk)<<22) | (BIT10<<6))
    429 #define DCMD_NOP(rnk)      (7 | ((rnk)<<22))
    430 
    431 
    432 
    433 
    434 #define DDR3_EMRS1_DIC_40       (0)
    435 #define DDR3_EMRS1_DIC_34       (1)
    436 
    437 #define DDR3_EMRS2_RTTWR_60     (BIT9)
    438 #define DDR3_EMRS2_RTTWR_120    (BIT10)
    439 
    440 #define DDR3_EMRS1_RTTNOM_0     (0)
    441 #define DDR3_EMRS1_RTTNOM_60    (BIT2)
    442 #define DDR3_EMRS1_RTTNOM_120   (BIT6)
    443 #define DDR3_EMRS1_RTTNOM_40    (BIT6|BIT2)
    444 #define DDR3_EMRS1_RTTNOM_20    (BIT9)
    445 #define DDR3_EMRS1_RTTNOM_30    (BIT9|BIT2)
    446 
    447 
    448 //
    449 // END DRAM Init...
    450 //
    451 ////
    452 
    453 
    454 // HOST_BRIDGE registers:
    455 #define HMBOUND             0x0020  //ok
    456 
    457 // MEMORY_MANAGER registers:
    458 #define BCTRL               0x0004
    459 #define BWFLUSH             0x0008
    460 #define BDEBUG1             0x00C4
    461 
    462 ////
    463 //
    464 // BEGIN DDRIO registers
    465 //
    466 
    467 // DDR IOs & COMPs:
    468 #define DDRIODQ_BL_OFFSET   0x0800
    469 #define DDRIODQ_CH_OFFSET   ((NUM_BYTE_LANES/2) * DDRIODQ_BL_OFFSET)
    470 #define DDRIOCCC_CH_OFFSET  0x0800
    471 #define DDRCOMP_CH_OFFSET   0x0100
    472 
    473 // CH0-BL01-DQ
    474 #define DQOBSCKEBBCTL       0x0000
    475 #define DQDLLTXCTL          0x0004
    476 #define DQDLLRXCTL          0x0008
    477 #define DQMDLLCTL           0x000C
    478 #define B0RXIOBUFCTL        0x0010
    479 #define B0VREFCTL           0x0014
    480 #define B0RXOFFSET1         0x0018
    481 #define B0RXOFFSET0         0x001C
    482 #define B1RXIOBUFCTL        0x0020
    483 #define B1VREFCTL           0x0024
    484 #define B1RXOFFSET1         0x0028
    485 #define B1RXOFFSET0         0x002C
    486 #define DQDFTCTL            0x0030
    487 #define DQTRAINSTS          0x0034
    488 #define B1DLLPICODER0       0x0038
    489 #define B0DLLPICODER0       0x003C
    490 #define B1DLLPICODER1       0x0040
    491 #define B0DLLPICODER1       0x0044
    492 #define B1DLLPICODER2       0x0048
    493 #define B0DLLPICODER2       0x004C
    494 #define B1DLLPICODER3       0x0050
    495 #define B0DLLPICODER3       0x0054
    496 #define B1RXDQSPICODE       0x0058
    497 #define B0RXDQSPICODE       0x005C
    498 #define B1RXDQPICODER32     0x0060
    499 #define B1RXDQPICODER10     0x0064
    500 #define B0RXDQPICODER32     0x0068
    501 #define B0RXDQPICODER10     0x006C
    502 #define B01PTRCTL0          0x0070
    503 #define B01PTRCTL1          0x0074
    504 #define B01DBCTL0           0x0078
    505 #define B01DBCTL1           0x007C
    506 #define B0LATCTL0           0x0080
    507 #define B1LATCTL0           0x0084
    508 #define B01LATCTL1          0x0088
    509 #define B0ONDURCTL          0x008C
    510 #define B1ONDURCTL          0x0090
    511 #define B0OVRCTL            0x0094
    512 #define B1OVRCTL            0x0098
    513 #define DQCTL               0x009C
    514 #define B0RK2RKCHGPTRCTRL   0x00A0
    515 #define B1RK2RKCHGPTRCTRL   0x00A4
    516 #define DQRK2RKCTL          0x00A8
    517 #define DQRK2RKPTRCTL       0x00AC
    518 #define B0RK2RKLAT          0x00B0
    519 #define B1RK2RKLAT          0x00B4
    520 #define DQCLKALIGNREG0      0x00B8
    521 #define DQCLKALIGNREG1      0x00BC
    522 #define DQCLKALIGNREG2      0x00C0
    523 #define DQCLKALIGNSTS0      0x00C4
    524 #define DQCLKALIGNSTS1      0x00C8
    525 #define DQCLKGATE           0x00CC
    526 #define B0COMPSLV1          0x00D0
    527 #define B1COMPSLV1          0x00D4
    528 #define B0COMPSLV2          0x00D8
    529 #define B1COMPSLV2          0x00DC
    530 #define B0COMPSLV3          0x00E0
    531 #define B1COMPSLV3          0x00E4
    532 #define DQVISALANECR0TOP    0x00E8
    533 #define DQVISALANECR1TOP    0x00EC
    534 #define DQVISACONTROLCRTOP  0x00F0
    535 #define DQVISALANECR0BL     0x00F4
    536 #define DQVISALANECR1BL     0x00F8
    537 #define DQVISACONTROLCRBL   0x00FC
    538 #define DQTIMINGCTRL        0x010C
    539 // CH0-ECC
    540 #define ECCDLLTXCTL         0x2004
    541 #define ECCDLLRXCTL         0x2008
    542 #define ECCMDLLCTL          0x200C
    543 #define ECCB1DLLPICODER0    0x2038
    544 #define ECCB1DLLPICODER1    0x2040
    545 #define ECCB1DLLPICODER2    0x2048
    546 #define ECCB1DLLPICODER3    0x2050
    547 #define ECCB01DBCTL0        0x2078
    548 #define ECCB01DBCTL1        0x207C
    549 #define ECCCLKALIGNREG0     0x20B8
    550 #define ECCCLKALIGNREG1     0x20BC
    551 #define ECCCLKALIGNREG2     0x20C0
    552 // CH0-CMD
    553 #define CMDOBSCKEBBCTL      0x4800
    554 #define CMDDLLTXCTL         0x4808
    555 #define CMDDLLRXCTL         0x480C
    556 #define CMDMDLLCTL          0x4810
    557 #define CMDRCOMPODT         0x4814
    558 #define CMDDLLPICODER0      0x4820
    559 #define CMDDLLPICODER1      0x4824
    560 #define CMDCFGREG0          0x4840
    561 #define CMDPTRREG           0x4844
    562 #define CMDCLKALIGNREG0     0x4850
    563 #define CMDCLKALIGNREG1     0x4854
    564 #define CMDCLKALIGNREG2     0x4858
    565 #define CMDPMCONFIG0        0x485C
    566 #define CMDPMDLYREG0        0x4860
    567 #define CMDPMDLYREG1        0x4864
    568 #define CMDPMDLYREG2        0x4868
    569 #define CMDPMDLYREG3        0x486C
    570 #define CMDPMDLYREG4        0x4870
    571 #define CMDCLKALIGNSTS0     0x4874
    572 #define CMDCLKALIGNSTS1     0x4878
    573 #define CMDPMSTS0           0x487C
    574 #define CMDPMSTS1           0x4880
    575 #define CMDCOMPSLV          0x4884
    576 #define CMDBONUS0           0x488C
    577 #define CMDBONUS1           0x4890
    578 #define CMDVISALANECR0      0x4894
    579 #define CMDVISALANECR1      0x4898
    580 #define CMDVISACONTROLCR    0x489C
    581 #define CMDCLKGATE          0x48A0
    582 #define CMDTIMINGCTRL       0x48A4
    583 // CH0-CLK-CTL
    584 #define CCOBSCKEBBCTL       0x5800
    585 #define CCRCOMPIO           0x5804
    586 #define CCDLLTXCTL          0x5808
    587 #define CCDLLRXCTL          0x580C
    588 #define CCMDLLCTL           0x5810
    589 #define CCRCOMPODT          0x5814
    590 #define CCDLLPICODER0       0x5820
    591 #define CCDLLPICODER1       0x5824
    592 #define CCDDR3RESETCTL      0x5830
    593 #define CCCFGREG0           0x5838
    594 #define CCCFGREG1           0x5840
    595 #define CCPTRREG            0x5844
    596 #define CCCLKALIGNREG0      0x5850
    597 #define CCCLKALIGNREG1      0x5854
    598 #define CCCLKALIGNREG2      0x5858
    599 #define CCPMCONFIG0         0x585C
    600 #define CCPMDLYREG0         0x5860
    601 #define CCPMDLYREG1         0x5864
    602 #define CCPMDLYREG2         0x5868
    603 #define CCPMDLYREG3         0x586C
    604 #define CCPMDLYREG4         0x5870
    605 #define CCCLKALIGNSTS0      0x5874
    606 #define CCCLKALIGNSTS1      0x5878
    607 #define CCPMSTS0            0x587C
    608 #define CCPMSTS1            0x5880
    609 #define CCCOMPSLV1          0x5884
    610 #define CCCOMPSLV2          0x5888
    611 #define CCCOMPSLV3          0x588C
    612 #define CCBONUS0            0x5894
    613 #define CCBONUS1            0x5898
    614 #define CCVISALANECR0       0x589C
    615 #define CCVISALANECR1       0x58A0
    616 #define CCVISACONTROLCR     0x58A4
    617 #define CCCLKGATE           0x58A8
    618 #define CCTIMINGCTL         0x58AC
    619 // COMP
    620 #define CMPCTRL             0x6800
    621 #define SOFTRSTCNTL         0x6804
    622 #define MSCNTR              0x6808
    623 #define NMSCNTRL            0x680C
    624 #define LATCH1CTL           0x6814
    625 #define COMPVISALANECR0     0x681C
    626 #define COMPVISALANECR1     0x6820
    627 #define COMPVISACONTROLCR   0x6824
    628 #define COMPBONUS0          0x6830
    629 #define TCOCNTCTRL          0x683C
    630 #define DQANAODTPUCTL       0x6840
    631 #define DQANAODTPDCTL       0x6844
    632 #define DQANADRVPUCTL       0x6848
    633 #define DQANADRVPDCTL       0x684C
    634 #define DQANADLYPUCTL       0x6850
    635 #define DQANADLYPDCTL       0x6854
    636 #define DQANATCOPUCTL       0x6858
    637 #define DQANATCOPDCTL       0x685C
    638 #define CMDANADRVPUCTL      0x6868
    639 #define CMDANADRVPDCTL      0x686C
    640 #define CMDANADLYPUCTL      0x6870
    641 #define CMDANADLYPDCTL      0x6874
    642 #define CLKANAODTPUCTL      0x6880
    643 #define CLKANAODTPDCTL      0x6884
    644 #define CLKANADRVPUCTL      0x6888
    645 #define CLKANADRVPDCTL      0x688C
    646 #define CLKANADLYPUCTL      0x6890
    647 #define CLKANADLYPDCTL      0x6894
    648 #define CLKANATCOPUCTL      0x6898
    649 #define CLKANATCOPDCTL      0x689C
    650 #define DQSANAODTPUCTL      0x68A0
    651 #define DQSANAODTPDCTL      0x68A4
    652 #define DQSANADRVPUCTL      0x68A8
    653 #define DQSANADRVPDCTL      0x68AC
    654 #define DQSANADLYPUCTL      0x68B0
    655 #define DQSANADLYPDCTL      0x68B4
    656 #define DQSANATCOPUCTL      0x68B8
    657 #define DQSANATCOPDCTL      0x68BC
    658 #define CTLANADRVPUCTL      0x68C8
    659 #define CTLANADRVPDCTL      0x68CC
    660 #define CTLANADLYPUCTL      0x68D0
    661 #define CTLANADLYPDCTL      0x68D4
    662 #define CHNLBUFSTATIC       0x68F0
    663 #define COMPOBSCNTRL        0x68F4
    664 #define COMPBUFFDBG0        0x68F8
    665 #define COMPBUFFDBG1        0x68FC
    666 #define CFGMISCCH0          0x6900
    667 #define COMPEN0CH0          0x6904
    668 #define COMPEN1CH0          0x6908
    669 #define COMPEN2CH0          0x690C
    670 #define STATLEGEN0CH0       0x6910
    671 #define STATLEGEN1CH0       0x6914
    672 #define DQVREFCH0           0x6918
    673 #define CMDVREFCH0          0x691C
    674 #define CLKVREFCH0          0x6920
    675 #define DQSVREFCH0          0x6924
    676 #define CTLVREFCH0          0x6928
    677 #define TCOVREFCH0          0x692C
    678 #define DLYSELCH0           0x6930
    679 #define TCODRAMBUFODTCH0    0x6934
    680 #define CCBUFODTCH0         0x6938
    681 #define RXOFFSETCH0         0x693C
    682 #define DQODTPUCTLCH0       0x6940
    683 #define DQODTPDCTLCH0       0x6944
    684 #define DQDRVPUCTLCH0       0x6948
    685 #define DQDRVPDCTLCH0       0x694C
    686 #define DQDLYPUCTLCH0       0x6950
    687 #define DQDLYPDCTLCH0       0x6954
    688 #define DQTCOPUCTLCH0       0x6958
    689 #define DQTCOPDCTLCH0       0x695C
    690 #define CMDDRVPUCTLCH0      0x6968
    691 #define CMDDRVPDCTLCH0      0x696C
    692 #define CMDDLYPUCTLCH0      0x6970
    693 #define CMDDLYPDCTLCH0      0x6974
    694 #define CLKODTPUCTLCH0      0x6980
    695 #define CLKODTPDCTLCH0      0x6984
    696 #define CLKDRVPUCTLCH0      0x6988
    697 #define CLKDRVPDCTLCH0      0x698C
    698 #define CLKDLYPUCTLCH0      0x6990
    699 #define CLKDLYPDCTLCH0      0x6994
    700 #define CLKTCOPUCTLCH0      0x6998
    701 #define CLKTCOPDCTLCH0      0x699C
    702 #define DQSODTPUCTLCH0      0x69A0
    703 #define DQSODTPDCTLCH0      0x69A4
    704 #define DQSDRVPUCTLCH0      0x69A8
    705 #define DQSDRVPDCTLCH0      0x69AC
    706 #define DQSDLYPUCTLCH0      0x69B0
    707 #define DQSDLYPDCTLCH0      0x69B4
    708 #define DQSTCOPUCTLCH0      0x69B8
    709 #define DQSTCOPDCTLCH0      0x69BC
    710 #define CTLDRVPUCTLCH0      0x69C8
    711 #define CTLDRVPDCTLCH0      0x69CC
    712 #define CTLDLYPUCTLCH0      0x69D0
    713 #define CTLDLYPDCTLCH0      0x69D4
    714 #define FNLUPDTCTLCH0       0x69F0
    715 // PLL
    716 #define MPLLCTRL0           0x7800
    717 #define MPLLCTRL1           0x7808
    718 #define MPLLCSR0            0x7810
    719 #define MPLLCSR1            0x7814
    720 #define MPLLCSR2            0x7820
    721 #define MPLLDFT             0x7828
    722 #define MPLLMON0CTL         0x7830
    723 #define MPLLMON1CTL         0x7838
    724 #define MPLLMON2CTL         0x783C
    725 #define SFRTRIM             0x7850
    726 #define MPLLDFTOUT0         0x7858
    727 #define MPLLDFTOUT1         0x785C
    728 #define MASTERRSTN          0x7880
    729 #define PLLLOCKDEL          0x7884
    730 #define SFRDEL              0x7888
    731 #define CRUVISALANECR0      0x78F0
    732 #define CRUVISALANECR1      0x78F4
    733 #define CRUVISACONTROLCR    0x78F8
    734 #define IOSFVISALANECR0     0x78FC
    735 #define IOSFVISALANECR1     0x7900
    736 #define IOSFVISACONTROLCR   0x7904
    737 
    738 //
    739 // END DDRIO registers
    740 //
    741 ////
    742 
    743 
    744 #endif
    745