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