coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
dmc.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef CPU_SAMSUNG_EXYNOS5250_DMC_H
4 #define CPU_SAMSUNG_EXYNOS5250_DMC_H
5 
6 #ifndef __ASSEMBLER__
7 
8 #include <soc/cpu.h>
9 
10 struct exynos5_dmc {
11  unsigned int concontrol;
12  unsigned int memcontrol;
13  unsigned int memconfig0;
14  unsigned int memconfig1;
15  unsigned int directcmd;
16  unsigned int prechconfig;
17  unsigned int phycontrol0;
18  unsigned char res1[0xc];
19  unsigned int pwrdnconfig;
20  unsigned int timingpzq;
21  unsigned int timingref;
22  unsigned int timingrow;
23  unsigned int timingdata;
24  unsigned int timingpower;
25  unsigned int phystatus;
26  unsigned char res2[0x4];
27  unsigned int chipstatus_ch0;
28  unsigned int chipstatus_ch1;
29  unsigned char res3[0x4];
30  unsigned int mrstatus;
31  unsigned char res4[0x8];
32  unsigned int qoscontrol0;
33  unsigned char resr5[0x4];
34  unsigned int qoscontrol1;
35  unsigned char res6[0x4];
36  unsigned int qoscontrol2;
37  unsigned char res7[0x4];
38  unsigned int qoscontrol3;
39  unsigned char res8[0x4];
40  unsigned int qoscontrol4;
41  unsigned char res9[0x4];
42  unsigned int qoscontrol5;
43  unsigned char res10[0x4];
44  unsigned int qoscontrol6;
45  unsigned char res11[0x4];
46  unsigned int qoscontrol7;
47  unsigned char res12[0x4];
48  unsigned int qoscontrol8;
49  unsigned char res13[0x4];
50  unsigned int qoscontrol9;
51  unsigned char res14[0x4];
52  unsigned int qoscontrol10;
53  unsigned char res15[0x4];
54  unsigned int qoscontrol11;
55  unsigned char res16[0x4];
56  unsigned int qoscontrol12;
57  unsigned char res17[0x4];
58  unsigned int qoscontrol13;
59  unsigned char res18[0x4];
60  unsigned int qoscontrol14;
61  unsigned char res19[0x4];
62  unsigned int qoscontrol15;
63  unsigned char res20[0x14];
64  unsigned int ivcontrol;
65  unsigned int wrtra_config;
66  unsigned int rdlvl_config;
67  unsigned char res21[0x8];
68  unsigned int brbrsvconfig;
69  unsigned int brbqosconfig;
70  unsigned int membaseconfig0;
71  unsigned int membaseconfig1;
72  unsigned char res22[0xc];
73  unsigned int wrlvl_config;
74  unsigned char res23[0xc];
75  unsigned int perevcontrol;
76  unsigned int perev0config;
77  unsigned int perev1config;
78  unsigned int perev2config;
79  unsigned int perev3config;
80  unsigned char res24[0xdebc];
81  unsigned int pmnc_ppc_a;
82  unsigned char res25[0xc];
83  unsigned int cntens_ppc_a;
84  unsigned char res26[0xc];
85  unsigned int cntenc_ppc_a;
86  unsigned char res27[0xc];
87  unsigned int intens_ppc_a;
88  unsigned char res28[0xc];
89  unsigned int intenc_ppc_a;
90  unsigned char res29[0xc];
91  unsigned int flag_ppc_a;
92  unsigned char res30[0xac];
93  unsigned int ccnt_ppc_a;
94  unsigned char res31[0xc];
95  unsigned int pmcnt0_ppc_a;
96  unsigned char res32[0xc];
97  unsigned int pmcnt1_ppc_a;
98  unsigned char res33[0xc];
99  unsigned int pmcnt2_ppc_a;
100  unsigned char res34[0xc];
101  unsigned int pmcnt3_ppc_a;
102 };
103 check_member(exynos5_dmc, pmcnt3_ppc_a, 0xe140);
104 
105 static struct exynos5_dmc * const exynos_dmc = (void *)EXYNOS5_DMC_CTRL_BASE;
106 
108  unsigned int phy_con0;
109  unsigned int phy_con1;
110  unsigned int phy_con2;
111  unsigned int phy_con3;
112  unsigned int phy_con4;
113  unsigned char res1[4];
114  unsigned int phy_con6;
115  unsigned char res2[4];
116  unsigned int phy_con8;
117  unsigned int phy_con9;
118  unsigned int phy_con10;
119  unsigned char res3[4];
120  unsigned int phy_con12;
121  unsigned int phy_con13;
122  unsigned int phy_con14;
123  unsigned int phy_con15;
124  unsigned int phy_con16;
125  unsigned char res4[4]; /* NOT a mistake. Yes, it doesn't make sense. */
126  unsigned int phy_con17;
127  unsigned int phy_con18;
128  unsigned int phy_con19;
129  unsigned int phy_con20;
130  unsigned int phy_con21;
131  unsigned int phy_con22;
132  unsigned int phy_con23;
133  unsigned int phy_con24;
134  unsigned int phy_con25;
135  unsigned int phy_con26;
136  unsigned int phy_con27;
137  unsigned int phy_con28;
138  unsigned int phy_con29;
139  unsigned int phy_con30;
140  unsigned int phy_con31;
141  unsigned int phy_con32;
142  unsigned int phy_con33;
143  unsigned int phy_con34;
144  unsigned int phy_con35;
145  unsigned int phy_con36;
146  unsigned int phy_con37;
147  unsigned int phy_con38;
148  unsigned int phy_con39;
149  unsigned int phy_con40;
150  unsigned int phy_con41;
151  unsigned int phy_con42;
152 };
154 
156  (void *)EXYNOS5_DMC_PHY0_BASE;
158  (void *)EXYNOS5_DMC_PHY1_BASE;
159 
160 enum ddr_mode {
165 
167 };
168 
169 /* For reasons unknown, people are in the habit of taking a 32-bit
170  * field with 2 possible values and packing it with, say, 2 bits. A
171  * non-robust encoding, using only 2 bits of a 32-bit field, is
172  * incredibly difficult to deal with when things go wrong, because
173  * there are a lot of things that get expressed as 0, 1, or 2. If
174  * you're scanning with jtag or dumping memory it is really hard to
175  * tell when you've hit the beginning of the struct. So, let's be a
176  * bit smart here. First, while it's common to let the enum count
177  * entries for you, when there are two of them, we can do the
178  * counting. And, let's set the values to something we can easily scan
179  * for in memory. Since '1' and '2' are rather common, we pick
180  * something that's actually of some value when things go wrong. This
181  * setup motivated by a use case: something's going wrong and having a
182  * manuf name of '1' or '2' is completely useless!
183  */
184 enum mem_manuf {
186  MEM_MANUF_ELPIDA = 0xe7b1da,
187  MEM_MANUF_SAMSUNG = 0x5a5096,
188 
189  MEM_MANUF_COUNT = 2, // fancy that.
190 };
191 
192 enum {
194 };
195 
196 #define DMC_INTERLEAVE_SIZE 0x1f
197 
198 /* CONCONTROL register fields */
199 #define CONCONTROL_DFI_INIT_START_SHIFT 28
200 #define CONCONTROL_RD_FETCH_SHIFT 12
201 #define CONCONTROL_RD_FETCH_MASK (0x7 << CONCONTROL_RD_FETCH_SHIFT)
202 #define CONCONTROL_AREF_EN_SHIFT 5
203 
204 /* PRECHCONFIG register field */
205 #define PRECHCONFIG_TP_CNT_SHIFT 24
206 
207 /* PWRDNCONFIG register field */
208 #define PWRDNCONFIG_DPWRDN_CYC_SHIFT 0
209 #define PWRDNCONFIG_DSREF_CYC_SHIFT 16
210 
211 /* PHY_CON0 register fields */
212 #define PHY_CON0_T_WRRDCMD_SHIFT 17
213 #define PHY_CON0_T_WRRDCMD_MASK (0x7 << PHY_CON0_T_WRRDCMD_SHIFT)
214 #define PHY_CON0_CTRL_DDR_MODE_SHIFT 11
215 
216 /* PHY_CON1 register fields */
217 #define PHY_CON1_RDLVL_RDDATA_ADJ_SHIFT 0
218 
219 /* PHY_CON12 register fields */
220 #define PHY_CON12_CTRL_START_POINT_SHIFT 24
221 #define PHY_CON12_CTRL_INC_SHIFT 16
222 #define PHY_CON12_CTRL_FORCE_SHIFT 8
223 #define PHY_CON12_CTRL_START_SHIFT 6
224 #define PHY_CON12_CTRL_START_MASK (1 << PHY_CON12_CTRL_START_SHIFT)
225 #define PHY_CON12_CTRL_DLL_ON_SHIFT 5
226 #define PHY_CON12_CTRL_DLL_ON_MASK (1 << PHY_CON12_CTRL_DLL_ON_SHIFT)
227 #define PHY_CON12_CTRL_REF_SHIFT 1
228 
229 /* PHY_CON16 register fields */
230 #define PHY_CON16_ZQ_MODE_DDS_SHIFT 24
231 #define PHY_CON16_ZQ_MODE_DDS_MASK (0x7 << PHY_CON16_ZQ_MODE_DDS_SHIFT)
232 
233 #define PHY_CON16_ZQ_MODE_TERM_SHIFT 21
234 #define PHY_CON16_ZQ_MODE_TERM_MASK (0x7 << PHY_CON16_ZQ_MODE_TERM_SHIFT)
235 
236 #define PHY_CON16_ZQ_MODE_NOTERM_MASK (1 << 19)
237 
238 /* PHY_CON42 register fields */
239 #define PHY_CON42_CTRL_BSTLEN_SHIFT 8
240 #define PHY_CON42_CTRL_BSTLEN_MASK (0xff << PHY_CON42_CTRL_BSTLEN_SHIFT)
241 
242 #define PHY_CON42_CTRL_RDLAT_SHIFT 0
243 #define PHY_CON42_CTRL_RDLAT_MASK (0x1f << PHY_CON42_CTRL_RDLAT_SHIFT)
244 
245 /* These are the memory timings for a particular memory type and speed */
246 struct mem_timings {
247  enum mem_manuf mem_manuf; /* Memory manufacturer */
248  enum ddr_mode mem_type; /* Memory type */
249  unsigned int frequency_mhz; /* Frequency of memory in MHz */
250 
251  /* Here follow the timing parameters for the selected memory */
273  uint8_t use_bpll; /* 1 to use BPLL for cdrex, 0 to use MPLL */
276 
277  unsigned int timing_ref;
278  unsigned int timing_row;
279  unsigned int timing_data;
280  unsigned int timing_power;
281 
282  /* DQS, DQ, DEBUG offsets */
283  unsigned int phy0_dqs;
284  unsigned int phy1_dqs;
285  unsigned int phy0_dq;
286  unsigned int phy1_dq;
291 
298 
302 
307 
309 
312  uint8_t zq_mode_noterm; /* 1 to allow termination disable */
313 
314  unsigned int memcontrol;
315  unsigned int memconfig;
316 
317  unsigned int membaseconfig0;
318  unsigned int membaseconfig1;
319  unsigned int prechconfig_tp_cnt;
320  unsigned int dpwrdn_cyc;
321  unsigned int dsref_cyc;
322  unsigned int concontrol;
323  /* Channel and Chip Selection */
324  uint8_t dmc_channels; /* number of memory channels */
325  uint8_t chips_per_channel; /* number of chips per channel */
326  uint8_t chips_to_configure; /* number of chips to configure */
327  uint8_t send_zq_init; /* 1 to send this command */
328  unsigned int impedance; /* drive strength impedance */
329  uint8_t gate_leveling_enable; /* check gate leveling is enabled */
330 };
331 
332 /**
333  * Get the correct memory timings for our selected memory type and speed.
334  *
335  * @return pointer to the memory timings that we should use
336  */
337 struct mem_timings *get_mem_timings(void);
338 
339 #endif
340 #endif
static struct exynos5_phy_control *const exynos_phy0_control
Definition: dmc.h:155
static struct exynos5_phy_control *const exynos_phy1_control
Definition: dmc.h:157
static struct exynos5_dmc *const exynos_dmc
Definition: dmc.h:105
struct mem_timings * get_mem_timings(void)
Get the correct memory timings for our selected memory type and speed.
Definition: memory.c:483
@ MEM_TIMINGS_MSR_COUNT
Definition: dmc.h:193
mem_manuf
Definition: dmc.h:184
@ MEM_MANUF_ELPIDA
Definition: dmc.h:186
@ MEM_MANUF_AUTODETECT
Definition: dmc.h:185
@ MEM_MANUF_SAMSUNG
Definition: dmc.h:187
@ MEM_MANUF_COUNT
Definition: dmc.h:189
ddr_mode
Definition: dmc.h:160
@ DDR_MODE_DDR3
Definition: dmc.h:162
@ DDR_MODE_LPDDR3
Definition: dmc.h:164
@ DDR_MODE_COUNT
Definition: dmc.h:166
@ DDR_MODE_DDR2
Definition: dmc.h:161
@ DDR_MODE_LPDDR2
Definition: dmc.h:163
check_member(exynos5_dmc, pmcnt3_ppc_a, 0xe140)
#define EXYNOS5_DMC_PHY0_BASE
Definition: cpu.h:19
#define EXYNOS5_DMC_PHY1_BASE
Definition: cpu.h:20
#define EXYNOS5_DMC_CTRL_BASE
Definition: cpu.h:23
unsigned short uint16_t
Definition: stdint.h:11
unsigned char uint8_t
Definition: stdint.h:8
unsigned int memconfig0
Definition: dmc.h:13
unsigned int timingrow
Definition: dmc.h:22
unsigned char res27[0xc]
Definition: dmc.h:86
unsigned char res24[0xdebc]
Definition: dmc.h:80
unsigned int qoscontrol9
Definition: dmc.h:50
unsigned char res8[0x4]
Definition: dmc.h:39
unsigned char res16[0x4]
Definition: dmc.h:55
unsigned char res23[0xc]
Definition: dmc.h:74
unsigned int qoscontrol12
Definition: dmc.h:56
unsigned int membaseconfig1
Definition: dmc.h:71
unsigned int timingdata
Definition: dmc.h:23
unsigned int brbqosconfig
Definition: dmc.h:69
unsigned int directcmd
Definition: dmc.h:15
unsigned int perev1config
Definition: dmc.h:77
unsigned int chipstatus_ch0
Definition: dmc.h:27
unsigned int wrlvl_config
Definition: dmc.h:73
unsigned int qoscontrol6
Definition: dmc.h:44
unsigned int prechconfig
Definition: dmc.h:16
unsigned int memconfig1
Definition: dmc.h:14
unsigned int perevcontrol
Definition: dmc.h:75
unsigned char res1[0xc]
Definition: dmc.h:18
unsigned int qoscontrol5
Definition: dmc.h:42
unsigned char res28[0xc]
Definition: dmc.h:88
unsigned int qoscontrol10
Definition: dmc.h:52
unsigned int pwrdnconfig
Definition: dmc.h:19
unsigned int perev0config
Definition: dmc.h:76
unsigned int membaseconfig0
Definition: dmc.h:70
unsigned int cntenc_ppc_a
Definition: dmc.h:85
unsigned int pmnc_ppc_a
Definition: dmc.h:81
unsigned int qoscontrol8
Definition: dmc.h:48
unsigned int timingpower
Definition: dmc.h:24
unsigned int memcontrol
Definition: dmc.h:12
unsigned int qoscontrol11
Definition: dmc.h:54
unsigned int qoscontrol0
Definition: dmc.h:32
unsigned char res22[0xc]
Definition: dmc.h:72
unsigned int phycontrol0
Definition: dmc.h:17
unsigned int intenc_ppc_a
Definition: dmc.h:89
unsigned char res31[0xc]
Definition: dmc.h:94
unsigned int perev2config
Definition: dmc.h:78
unsigned char res33[0xc]
Definition: dmc.h:98
unsigned char resr5[0x4]
Definition: dmc.h:33
unsigned int ccnt_ppc_a
Definition: dmc.h:93
unsigned char res34[0xc]
Definition: dmc.h:100
unsigned int qoscontrol2
Definition: dmc.h:36
unsigned int concontrol
Definition: dmc.h:11
unsigned int qoscontrol4
Definition: dmc.h:40
unsigned int mrstatus
Definition: dmc.h:30
unsigned int intens_ppc_a
Definition: dmc.h:87
unsigned char res19[0x4]
Definition: dmc.h:61
unsigned char res3[0x4]
Definition: dmc.h:29
unsigned char res25[0xc]
Definition: dmc.h:82
unsigned int phystatus
Definition: dmc.h:25
unsigned int qoscontrol3
Definition: dmc.h:38
unsigned int ivcontrol
Definition: dmc.h:64
unsigned int timingpzq
Definition: dmc.h:20
unsigned int qoscontrol1
Definition: dmc.h:34
unsigned int rdlvl_config
Definition: dmc.h:66
unsigned char res13[0x4]
Definition: dmc.h:49
unsigned int cntens_ppc_a
Definition: dmc.h:83
unsigned char res21[0x8]
Definition: dmc.h:67
unsigned char res29[0xc]
Definition: dmc.h:90
unsigned char res20[0x14]
Definition: dmc.h:63
unsigned int qoscontrol15
Definition: dmc.h:62
unsigned int timingref
Definition: dmc.h:21
unsigned int flag_ppc_a
Definition: dmc.h:91
unsigned int pmcnt0_ppc_a
Definition: dmc.h:95
unsigned char res18[0x4]
Definition: dmc.h:59
unsigned char res12[0x4]
Definition: dmc.h:47
unsigned char res15[0x4]
Definition: dmc.h:53
unsigned char res7[0x4]
Definition: dmc.h:37
unsigned int pmcnt2_ppc_a
Definition: dmc.h:99
unsigned char res10[0x4]
Definition: dmc.h:43
unsigned int qoscontrol13
Definition: dmc.h:58
unsigned int chipstatus_ch1
Definition: dmc.h:28
unsigned char res32[0xc]
Definition: dmc.h:96
unsigned int qoscontrol7
Definition: dmc.h:46
unsigned char res17[0x4]
Definition: dmc.h:57
unsigned int pmcnt3_ppc_a
Definition: dmc.h:101
unsigned char res14[0x4]
Definition: dmc.h:51
unsigned int qoscontrol14
Definition: dmc.h:60
unsigned int wrtra_config
Definition: dmc.h:65
unsigned char res6[0x4]
Definition: dmc.h:35
unsigned int brbrsvconfig
Definition: dmc.h:68
unsigned char res4[0x8]
Definition: dmc.h:31
unsigned char res2[0x4]
Definition: dmc.h:26
unsigned char res26[0xc]
Definition: dmc.h:84
unsigned char res9[0x4]
Definition: dmc.h:41
unsigned char res11[0x4]
Definition: dmc.h:45
unsigned char res30[0xac]
Definition: dmc.h:92
unsigned int pmcnt1_ppc_a
Definition: dmc.h:97
unsigned int perev3config
Definition: dmc.h:79
unsigned char res2[4]
Definition: dmc.h:115
unsigned int phy_con31
Definition: dmc.h:140
unsigned int phy_con34
Definition: dmc.h:143
unsigned int phy_con23
Definition: dmc.h:132
unsigned int phy_con28
Definition: dmc.h:137
unsigned int phy_con21
Definition: dmc.h:130
unsigned int phy_con8
Definition: dmc.h:116
unsigned int phy_con38
Definition: dmc.h:147
unsigned int phy_con14
Definition: dmc.h:122
unsigned int phy_con18
Definition: dmc.h:127
unsigned int phy_con27
Definition: dmc.h:136
unsigned int phy_con4
Definition: dmc.h:112
unsigned int phy_con13
Definition: dmc.h:121
unsigned int phy_con25
Definition: dmc.h:134
unsigned int phy_con20
Definition: dmc.h:129
unsigned int phy_con30
Definition: dmc.h:139
unsigned int phy_con2
Definition: dmc.h:110
unsigned int phy_con41
Definition: dmc.h:150
unsigned int phy_con29
Definition: dmc.h:138
unsigned int phy_con35
Definition: dmc.h:144
unsigned char res1[4]
Definition: dmc.h:113
unsigned int phy_con32
Definition: dmc.h:141
unsigned int phy_con40
Definition: dmc.h:149
unsigned int phy_con3
Definition: dmc.h:111
unsigned char res4[4]
Definition: dmc.h:125
unsigned char res3[4]
Definition: dmc.h:119
unsigned int phy_con12
Definition: dmc.h:120
unsigned int phy_con9
Definition: dmc.h:117
unsigned int phy_con0
Definition: dmc.h:108
unsigned int phy_con42
Definition: dmc.h:151
unsigned int phy_con1
Definition: dmc.h:109
unsigned int phy_con6
Definition: dmc.h:114
unsigned int phy_con36
Definition: dmc.h:145
unsigned int phy_con19
Definition: dmc.h:128
unsigned int phy_con17
Definition: dmc.h:126
unsigned int phy_con22
Definition: dmc.h:131
unsigned int phy_con33
Definition: dmc.h:142
unsigned int phy_con10
Definition: dmc.h:118
unsigned int phy_con39
Definition: dmc.h:148
unsigned int phy_con26
Definition: dmc.h:135
unsigned int phy_con15
Definition: dmc.h:123
unsigned int phy_con24
Definition: dmc.h:133
unsigned int phy_con37
Definition: dmc.h:146
unsigned int phy_con16
Definition: dmc.h:124
unsigned int membaseconfig0
Definition: dmc.h:317
uint8_t bpll_pdiv
Definition: dmc.h:271
uint8_t dfi_init_start
Definition: dmc.h:305
unsigned int frequency_mhz
Definition: dmc.h:249
uint8_t apll_sdiv
Definition: dmc.h:254
uint8_t send_zq_init
Definition: dmc.h:327
uint8_t epll_mdiv
Definition: dmc.h:264
unsigned int membaseconfig1
Definition: dmc.h:318
unsigned int phy1_dq
Definition: dmc.h:286
uint8_t vpll_pdiv
Definition: dmc.h:268
uint8_t mpll_pdiv
Definition: dmc.h:256
uint8_t apll_mdiv
Definition: dmc.h:252
uint8_t zq_mode_dds
Definition: dmc.h:310
uint8_t apll_pdiv
Definition: dmc.h:253
uint8_t mpll_sdiv
Definition: dmc.h:257
uint8_t gate_leveling_enable
Definition: dmc.h:329
enum mem_manuf mem_manuf
Definition: dmc.h:247
uint8_t epll_pdiv
Definition: dmc.h:265
unsigned int prechconfig_tp_cnt
Definition: dmc.h:319
uint8_t pclk_cdrex_ratio
Definition: dmc.h:274
unsigned int memcontrol
Definition: dmc.h:314
uint8_t bpll_sdiv
Definition: dmc.h:272
uint8_t phy0_pulld_dqs
Definition: dmc.h:289
uint8_t vpll_sdiv
Definition: dmc.h:269
uint8_t phy0_tFS
Definition: dmc.h:287
uint8_t ctrl_rdlat
Definition: dmc.h:300
uint8_t ctrl_bstlen
Definition: dmc.h:301
uint8_t ctrl_inc
Definition: dmc.h:294
unsigned int phy0_dqs
Definition: dmc.h:283
uint8_t use_bpll
Definition: dmc.h:273
unsigned int impedance
Definition: dmc.h:328
unsigned int memconfig
Definition: dmc.h:315
uint8_t ctrl_dll_on
Definition: dmc.h:296
uint8_t zq_mode_noterm
Definition: dmc.h:312
uint8_t aref_en
Definition: dmc.h:306
uint8_t chips_per_channel
Definition: dmc.h:325
uint8_t fp_resync
Definition: dmc.h:303
uint8_t dmc_channels
Definition: dmc.h:324
unsigned int timing_power
Definition: dmc.h:280
unsigned int dpwrdn_cyc
Definition: dmc.h:320
enum ddr_mode mem_type
Definition: dmc.h:248
uint8_t ctrl_start_point
Definition: dmc.h:293
unsigned int timing_data
Definition: dmc.h:279
uint8_t ctrl_start
Definition: dmc.h:295
uint8_t epll_sdiv
Definition: dmc.h:266
uint8_t cpll_mdiv
Definition: dmc.h:258
unsigned int phy0_dq
Definition: dmc.h:285
uint8_t lpddr3_ctrl_phy_reset
Definition: dmc.h:292
uint8_t vpll_mdiv
Definition: dmc.h:267
uint8_t zq_mode_term
Definition: dmc.h:311
uint8_t chips_to_configure
Definition: dmc.h:326
uint8_t phy1_pulld_dqs
Definition: dmc.h:290
unsigned int direct_cmd_msr[MEM_TIMINGS_MSR_COUNT]
Definition: dmc.h:275
uint8_t cpll_pdiv
Definition: dmc.h:259
uint8_t ctrl_ref
Definition: dmc.h:297
unsigned int timing_ref
Definition: dmc.h:277
unsigned int phy1_dqs
Definition: dmc.h:284
uint8_t gpll_pdiv
Definition: dmc.h:261
uint8_t rd_fetch
Definition: dmc.h:308
uint8_t gpll_sdiv
Definition: dmc.h:263
uint16_t gpll_mdiv
Definition: dmc.h:262
uint8_t bpll_mdiv
Definition: dmc.h:270
uint8_t cpll_sdiv
Definition: dmc.h:260
uint8_t phy1_tFS
Definition: dmc.h:288
unsigned int concontrol
Definition: dmc.h:322
uint8_t mpll_mdiv
Definition: dmc.h:255
uint8_t ctrl_force
Definition: dmc.h:299
unsigned int dsref_cyc
Definition: dmc.h:321
unsigned int timing_row
Definition: dmc.h:278
uint8_t iv_size
Definition: dmc.h:304