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_EXYNOS5420_DMC_H
4 #define CPU_SAMSUNG_EXYNOS5420_DMC_H
5 
6 #define DMC_INTERLEAVE_SIZE 0x1f
7 
8 #define PAD_RETENTION_DRAM_COREBLK_VAL 0x10000000
9 
10 /* CONCONTROL register fields */
11 #define CONCONTROL_DFI_INIT_START_SHIFT 28
12 #define CONCONTROL_RD_FETCH_SHIFT 12
13 #define CONCONTROL_RD_FETCH_MASK (0x7 << CONCONTROL_RD_FETCH_SHIFT)
14 #define CONCONTROL_AREF_EN_SHIFT 5
15 
16 /* PRECHCONFIG register field */
17 #define PRECHCONFIG_TP_CNT_SHIFT 24
18 
19 /* PWRDNCONFIG register field */
20 #define PWRDNCONFIG_DPWRDN_CYC_SHIFT 0
21 #define PWRDNCONFIG_DSREF_CYC_SHIFT 16
22 
23 /* PHY_CON0 register fields */
24 #define PHY_CON0_T_WRRDCMD_SHIFT 17
25 #define PHY_CON0_T_WRRDCMD_MASK (0x7 << PHY_CON0_T_WRRDCMD_SHIFT)
26 #define PHY_CON0_CTRL_DDR_MODE_MASK 0x3
27 #define PHY_CON0_CTRL_DDR_MODE_SHIFT 11
28 
29 /* PHY_CON1 register fields */
30 #define PHY_CON1_RDLVL_RDDATA_ADJ_SHIFT 0
31 
32 /* PHY_CON12 register fields */
33 #define PHY_CON12_CTRL_START_POINT_SHIFT 24
34 #define PHY_CON12_CTRL_INC_SHIFT 16
35 #define PHY_CON12_CTRL_FORCE_SHIFT 8
36 #define PHY_CON12_CTRL_START_SHIFT 6
37 #define PHY_CON12_CTRL_START_MASK (1 << PHY_CON12_CTRL_START_SHIFT)
38 #define PHY_CON12_CTRL_DLL_ON_SHIFT 5
39 #define PHY_CON12_CTRL_DLL_ON_MASK (1 << PHY_CON12_CTRL_DLL_ON_SHIFT)
40 #define PHY_CON12_CTRL_REF_SHIFT 1
41 
42 /* PHY_CON16 register fields */
43 #define PHY_CON16_ZQ_MODE_DDS_SHIFT 24
44 #define PHY_CON16_ZQ_MODE_DDS_MASK (0x7 << PHY_CON16_ZQ_MODE_DDS_SHIFT)
45 
46 #define PHY_CON16_ZQ_MODE_TERM_SHIFT 21
47 #define PHY_CON16_ZQ_MODE_TERM_MASK (0x7 << PHY_CON16_ZQ_MODE_TERM_SHIFT)
48 
49 #define PHY_CON16_ZQ_MODE_NOTERM_MASK (1 << 19)
50 
51 /* PHY_CON42 register fields */
52 #define PHY_CON42_CTRL_BSTLEN_SHIFT 8
53 #define PHY_CON42_CTRL_BSTLEN_MASK (0xff << PHY_CON42_CTRL_BSTLEN_SHIFT)
54 
55 #define PHY_CON42_CTRL_RDLAT_SHIFT 0
56 #define PHY_CON42_CTRL_RDLAT_MASK (0x1f << PHY_CON42_CTRL_RDLAT_SHIFT)
57 
58 #ifndef __ASSEMBLER__
59 
60 #include <soc/cpu.h>
61 
62 struct exynos5_dmc {
71  uint8_t res1[0x8];
72  uint32_t pwrdnconfig; /* 0x0028*/
79  uint8_t res2[0x4];
80  uint32_t chipstatus_ch0; /* 0x0048 */
82  uint8_t res3[0x4];
84  uint8_t res4[0x8];
85  uint32_t qoscontrol0; /* 0x0060 */
86  uint8_t resr5[0x4];
88  uint8_t res6[0x4];
90  uint8_t res7[0x4];
92  uint8_t res8[0x4];
94  uint8_t res9[0x4];
96  uint8_t res10[0x4];
98  uint8_t res11[0x4];
117  uint32_t timing_set_sw; /* 0x00e0 */
125  uint32_t brbrsvcontrol; /* 0x0100*/
129  uint32_t membaseconfig1; /* 0x0110 */
131  uint32_t wrlvl_config0; /* 0x0120 */
135  uint32_t perevcontrol; /* 0x0130 */
147  uint8_t res24[0x94];
166  uint8_t res29[0xb4];
167  uint32_t winconfig_odt_w; /* 0x0300 */
171  uint8_t res31[0xdcf0];
182  uint32_t flag_ppc; /* 0xe050 */
183  uint8_t res37[0xac];
192  uint32_t pmcnt3_ppc; /* 0xe140 */
194 check_member(exynos5_dmc, pmcnt3_ppc, 0xe140);
195 
196 static struct exynos5_dmc * const exynos_drex0 = (void *)EXYNOS5420_DMC_DREXI_0;
197 static struct exynos5_dmc * const exynos_drex1 = (void *)EXYNOS5420_DMC_DREXI_1;
198 
199 struct exynos5_phy_control {
217  uint8_t res4[4]; /* NOT a mistake. Yes, it doesn't make sense. */
244 } __packed;
246 
248  (void *)EXYNOS5_DMC_PHY0_BASE;
250  (void *)EXYNOS5_DMC_PHY1_BASE;
251 
253  uint8_t res1[0xf00];
256  uint8_t res2[0x8];
259 } __packed;
260 
261 static struct exynos5_tzasc * const exynos_tzasc0 =
262  (void *)EXYNOS5420_DMC_TZASC_0;
263 static struct exynos5_tzasc * const exynos_tzasc1 =
264  (void *)EXYNOS5420_DMC_TZASC_1;
265 
266 enum ddr_mode {
267  /* This is in order of ctrl_ddr_mode values. Do not change. */
272 
274 };
275 
276 /* For reasons unknown, people are in the habit of taking a 32-bit
277  * field with 2 possible values and packing it with, say, 2 bits. A
278  * non-robust encoding, using only 2 bits of a 32-bit field, is
279  * incredibly difficult to deal with when things go wrong, because
280  * there are a lot of things that get expressed as 0, 1, or 2. If
281  * you're scanning with jtag or dumping memory it is really hard to
282  * tell when you've hit the beginning of the struct. So, let's be a
283  * bit smart here. First, while it's common to let the enum count
284  * entries for you, when there are two of them, we can do the
285  * counting. And, let's set the values to something we can easily scan
286  * for in memory. Since '1' and '2' are rather common, we pick
287  * something that's actually of some value when things go wrong. This
288  * setup motivated by a use case: something's going wrong and having a
289  * manuf name of '1' or '2' is completely useless!
290  */
291 enum mem_manuf {
293  MEM_MANUF_ELPIDA = 0xe7b1da,
294  MEM_MANUF_SAMSUNG = 0x5a5096,
295 
296  MEM_MANUF_COUNT = 2, // fancy that.
297 };
298 
299 enum {
301 };
302 
303 /* These are the memory timings for a particular memory type and speed */
304 struct mem_timings {
305  enum mem_manuf mem_manuf; /* Memory manufacturer */
306  enum ddr_mode mem_type; /* Memory type */
307  unsigned int frequency_mhz; /* Frequency of memory in MHz */
308 
309  /* Here follow the timing parameters for the selected memory */
331  uint8_t use_bpll; /* 1 to use BPLL for cdrex, 0 to use MPLL */
334 
335  unsigned int timing_ref;
336  unsigned int timing_row;
337  unsigned int timing_data;
338  unsigned int timing_power;
339 
340  /* DQS, DQ, DEBUG offsets */
341  unsigned int phy0_dqs;
342  unsigned int phy1_dqs;
343  unsigned int phy0_dq;
344  unsigned int phy1_dq;
349 
356 
360 
365 
367 
370  uint8_t zq_mode_noterm; /* 1 to allow termination disable */
371 
372  unsigned int memcontrol;
373  unsigned int memconfig;
374 
375  unsigned int membaseconfig0;
376  unsigned int membaseconfig1;
377  unsigned int prechconfig_tp_cnt;
378  unsigned int dpwrdn_cyc;
379  unsigned int dsref_cyc;
380  unsigned int concontrol;
381  /* Channel and Chip Selection */
382  uint8_t dmc_channels; /* number of memory channels */
383  uint8_t chips_per_channel; /* number of chips per channel */
384  uint8_t chips_to_configure; /* number of chips to configure */
385  uint8_t send_zq_init; /* 1 to send this command */
386  unsigned int impedance; /* drive strength impedance */
387  uint8_t gate_leveling_enable; /* check gate leveling is enabled */
388 };
389 
390 /**
391  * Get the correct memory timings for our selected memory type and speed.
392  *
393  * @return pointer to the memory timings that we should use
394  */
395 struct mem_timings *get_mem_timings(void);
396 
397 #endif
398 #endif
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)
static struct exynos5_phy_control *const exynos_phy0_control
Definition: dmc.h:247
static struct exynos5_phy_control *const exynos_phy1_control
Definition: dmc.h:249
struct exynos5_dmc __packed
static struct exynos5_tzasc *const exynos_tzasc1
Definition: dmc.h:263
static struct exynos5_tzasc *const exynos_tzasc0
Definition: dmc.h:261
static struct exynos5_dmc *const exynos_drex0
Definition: dmc.h:196
static struct exynos5_dmc *const exynos_drex1
Definition: dmc.h:197
#define EXYNOS5_DMC_PHY0_BASE
Definition: cpu.h:19
#define EXYNOS5_DMC_PHY1_BASE
Definition: cpu.h:20
#define EXYNOS5420_DMC_DREXI_0
Definition: cpu.h:23
#define EXYNOS5420_DMC_TZASC_0
Definition: cpu.h:25
#define EXYNOS5420_DMC_DREXI_1
Definition: cpu.h:24
#define EXYNOS5420_DMC_TZASC_1
Definition: cpu.h:26
unsigned short uint16_t
Definition: stdint.h:11
unsigned int uint32_t
Definition: stdint.h:14
unsigned char uint8_t
Definition: stdint.h:8
uint32_t phycontrol0
Definition: dmc.h:69
uint32_t qoscontrol8
Definition: dmc.h:101
unsigned char res27[0xc]
Definition: dmc.h:86
uint32_t pmnc_ppc
Definition: dmc.h:172
unsigned char res24[0xdebc]
Definition: dmc.h:80
uint32_t qoscontrol6
Definition: dmc.h:97
uint32_t bp_control3_r
Definition: dmc.h:164
uint32_t memcontrol
Definition: dmc.h:64
unsigned char res8[0x4]
Definition: dmc.h:39
unsigned char res16[0x4]
Definition: dmc.h:55
uint32_t winconfig_ctrl_gate
Definition: dmc.h:170
uint32_t bp_control2_r
Definition: dmc.h:160
uint32_t pmcnt3_ppc
Definition: dmc.h:192
unsigned char res23[0xc]
Definition: dmc.h:74
uint32_t perev0config
Definition: dmc.h:136
uint32_t timing_set_sw
Definition: dmc.h:117
uint32_t prechconfig0
Definition: dmc.h:68
uint32_t ccnt_ppc
Definition: dmc.h:184
uint8_t res36[0xc]
Definition: dmc.h:181
uint32_t qoscontrol13
Definition: dmc.h:111
uint32_t bp_control2_w
Definition: dmc.h:161
uint32_t mrstatus
Definition: dmc.h:83
uint8_t res39[0xc]
Definition: dmc.h:187
unsigned char res1[0xc]
Definition: dmc.h:18
unsigned char res28[0xc]
Definition: dmc.h:88
uint32_t chipstatus_ch1
Definition: dmc.h:81
uint32_t wrlvl_config1
Definition: dmc.h:132
uint32_t timingpower1
Definition: dmc.h:120
uint8_t res37[0xac]
Definition: dmc.h:183
uint32_t bp_control0
Definition: dmc.h:151
uint32_t timingpzq
Definition: dmc.h:73
uint32_t wrlvl_status
Definition: dmc.h:133
uint32_t phystatus
Definition: dmc.h:78
unsigned char res22[0xc]
Definition: dmc.h:72
uint8_t res38[0xc]
Definition: dmc.h:185
uint32_t ivcontrol
Definition: dmc.h:121
uint32_t qoscontrol3
Definition: dmc.h:91
unsigned char res31[0xc]
Definition: dmc.h:94
unsigned char res33[0xc]
Definition: dmc.h:98
unsigned char resr5[0x4]
Definition: dmc.h:33
uint32_t qoscontrol15
Definition: dmc.h:115
unsigned char res34[0xc]
Definition: dmc.h:100
uint32_t qoscontrol4
Definition: dmc.h:93
uint32_t bp_control1_w
Definition: dmc.h:157
uint32_t chipstatus_ch0
Definition: dmc.h:80
uint32_t pmcnt1_ppc
Definition: dmc.h:188
uint32_t concontrol
Definition: dmc.h:63
uint32_t brbrsvconfig
Definition: dmc.h:126
uint32_t cntens_ppc
Definition: dmc.h:174
uint32_t bp_control1_r
Definition: dmc.h:156
uint32_t winconfig_ctrl_read
Definition: dmc.h:169
uint32_t ctrl_io_rdata_ch0
Definition: dmc.h:141
unsigned char res19[0x4]
Definition: dmc.h:61
unsigned char res3[0x4]
Definition: dmc.h:29
unsigned char res25[0xc]
Definition: dmc.h:82
uint32_t bp_control0_r
Definition: dmc.h:152
uint32_t bp_control3
Definition: dmc.h:163
uint32_t qoscontrol11
Definition: dmc.h:107
uint32_t intenc_ppc
Definition: dmc.h:180
uint32_t qoscontrol12
Definition: dmc.h:109
uint32_t qoscontrol2
Definition: dmc.h:89
uint32_t wrlvl_config0
Definition: dmc.h:131
uint32_t timingdata1
Definition: dmc.h:119
unsigned char res13[0x4]
Definition: dmc.h:49
uint32_t qoscontrol1
Definition: dmc.h:87
uint8_t res23a[0x8]
Definition: dmc.h:143
unsigned char res21[0x8]
Definition: dmc.h:67
uint8_t res40[0xc]
Definition: dmc.h:189
uint32_t cacal_config1
Definition: dmc.h:145
uint32_t qoscontrol9
Definition: dmc.h:103
unsigned char res29[0xc]
Definition: dmc.h:90
unsigned char res20[0x14]
Definition: dmc.h:63
uint32_t timingpower
Definition: dmc.h:77
uint32_t pwrdnconfig
Definition: dmc.h:72
uint32_t bp_control3_w
Definition: dmc.h:165
uint32_t qoscontrol14
Definition: dmc.h:113
uint32_t wrtra_config
Definition: dmc.h:122
uint32_t cntenc_ppc
Definition: dmc.h:176
uint32_t bp_control1
Definition: dmc.h:155
uint32_t cacal_status
Definition: dmc.h:146
uint32_t winconfig_odt_w
Definition: dmc.h:167
uint32_t memconfig1
Definition: dmc.h:66
unsigned char res18[0x4]
Definition: dmc.h:59
uint32_t membaseconfig0
Definition: dmc.h:128
uint32_t perev1config
Definition: dmc.h:137
uint32_t emergent_config1
Definition: dmc.h:149
unsigned char res12[0x4]
Definition: dmc.h:47
unsigned char res15[0x4]
Definition: dmc.h:53
uint32_t pmcnt2_ppc
Definition: dmc.h:190
uint32_t bp_control2
Definition: dmc.h:159
unsigned char res7[0x4]
Definition: dmc.h:37
uint32_t timingrow
Definition: dmc.h:75
unsigned char res10[0x4]
Definition: dmc.h:43
uint32_t brbrsvcontrol
Definition: dmc.h:125
uint32_t qoscontrol10
Definition: dmc.h:105
unsigned char res32[0xc]
Definition: dmc.h:96
uint32_t timingdata
Definition: dmc.h:76
uint8_t res22a[0xc]
Definition: dmc.h:140
uint32_t directcmd
Definition: dmc.h:67
uint32_t cacal_config0
Definition: dmc.h:144
unsigned char res17[0x4]
Definition: dmc.h:57
uint32_t perevcontrol
Definition: dmc.h:135
uint32_t flag_ppc
Definition: dmc.h:182
unsigned char res14[0x4]
Definition: dmc.h:51
uint32_t intens_ppc
Definition: dmc.h:178
uint32_t qoscontrol0
Definition: dmc.h:85
uint32_t timingrow1
Definition: dmc.h:118
uint32_t brbqosconfig
Definition: dmc.h:127
unsigned char res6[0x4]
Definition: dmc.h:35
unsigned char res4[0x8]
Definition: dmc.h:31
unsigned char res2[0x4]
Definition: dmc.h:26
uint32_t ctrl_io_rdata_ch1
Definition: dmc.h:142
unsigned char res26[0xc]
Definition: dmc.h:84
uint32_t bp_control0_w
Definition: dmc.h:153
uint32_t cgcontrol
Definition: dmc.h:65
uint32_t membaseconfig1
Definition: dmc.h:129
uint32_t perev3config
Definition: dmc.h:139
uint32_t pmcnt0_ppc
Definition: dmc.h:186
unsigned char res9[0x4]
Definition: dmc.h:41
uint32_t qoscontrol7
Definition: dmc.h:99
uint32_t prechconfig1
Definition: dmc.h:70
uint32_t emergent_config0
Definition: dmc.h:148
uint32_t rdlvl_config
Definition: dmc.h:123
uint8_t res35[0xc]
Definition: dmc.h:179
unsigned char res11[0x4]
Definition: dmc.h:45
unsigned char res30[0xac]
Definition: dmc.h:92
uint8_t res41[0xc]
Definition: dmc.h:191
uint32_t perev2config
Definition: dmc.h:138
uint32_t qoscontrol5
Definition: dmc.h:95
uint32_t timingref
Definition: dmc.h:74
uint32_t phy_con27
Definition: dmc.h:228
unsigned char res2[4]
Definition: dmc.h:115
uint32_t phy_con20
Definition: dmc.h:221
uint32_t phy_con18
Definition: dmc.h:219
uint32_t phy_con6
Definition: dmc.h:206
uint32_t phy_con29
Definition: dmc.h:230
uint32_t phy_con9
Definition: dmc.h:209
uint32_t phy_con37
Definition: dmc.h:238
uint32_t phy_con25
Definition: dmc.h:226
uint32_t phy_con2
Definition: dmc.h:202
uint32_t phy_con32
Definition: dmc.h:233
uint32_t phy_con3
Definition: dmc.h:203
uint32_t phy_con39
Definition: dmc.h:240
uint32_t phy_con24
Definition: dmc.h:225
uint32_t phy_con17
Definition: dmc.h:218
uint32_t phy_con14
Definition: dmc.h:214
uint32_t phy_con26
Definition: dmc.h:227
uint32_t phy_con23
Definition: dmc.h:224
uint32_t phy_con40
Definition: dmc.h:241
uint32_t phy_con38
Definition: dmc.h:239
uint32_t phy_con8
Definition: dmc.h:208
uint32_t phy_con19
Definition: dmc.h:220
unsigned char res1[4]
Definition: dmc.h:113
uint32_t phy_con30
Definition: dmc.h:231
unsigned char res4[4]
Definition: dmc.h:125
uint32_t phy_con35
Definition: dmc.h:236
unsigned char res3[4]
Definition: dmc.h:119
uint32_t phy_con16
Definition: dmc.h:216
uint32_t phy_con28
Definition: dmc.h:229
uint32_t phy_con13
Definition: dmc.h:213
uint32_t phy_con0
Definition: dmc.h:200
uint32_t phy_con42
Definition: dmc.h:243
uint32_t phy_con34
Definition: dmc.h:235
uint32_t phy_con36
Definition: dmc.h:237
uint32_t phy_con31
Definition: dmc.h:232
uint32_t phy_con15
Definition: dmc.h:215
uint32_t phy_con10
Definition: dmc.h:210
uint32_t phy_con41
Definition: dmc.h:242
uint32_t phy_con12
Definition: dmc.h:212
uint32_t phy_con22
Definition: dmc.h:223
uint32_t phy_con4
Definition: dmc.h:204
uint32_t phy_con1
Definition: dmc.h:201
uint32_t phy_con21
Definition: dmc.h:222
uint32_t phy_con33
Definition: dmc.h:234
uint8_t res1[0xf00]
Definition: dmc.h:253
uint32_t memconfig1
Definition: dmc.h:258
uint8_t res2[0x8]
Definition: dmc.h:256
uint32_t memconfig0
Definition: dmc.h:257
uint32_t membaseconfig0
Definition: dmc.h:254
uint32_t membaseconfig1
Definition: dmc.h:255
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