1 /* SPDX-License-Identifier: BSD-3-Clause */
3 #ifndef __DRAMC_TOP_H__
4 #define __DRAMC_TOP_H__
8 #include "dramc_typedefs.h"
10 #include "dramc_common.h"
14 #if (FOR_DV_SIMULATION_USED==0)
21 #define DRAM_BASE 0x40000000ULL
22 #define DDR_BASE DRAM_BASE
25 #define dramc_crit printf
26 #define dramc_debug printf
27 #elif __FLASH_TOOL_DA__
28 #define dramc_crit LOGD
29 #define dramc_debug LOGD
31 #define dramc_crit print
32 #define dramc_debug printf
36 #define DRAMC_MAX_CH 4
37 #define DRAMC_MAX_RK 2
38 #define DRAMC_MR_CNT 4
39 #define DRAMC_FREQ_CNT 7
46 extern struct dramc_param
*dramc_params
;
58 int mt_get_dram_type(void);
59 int get_dram_channel_support_nr(void);
60 int get_dram_channel_nr(void);
61 int get_dram_rank_nr(void);
62 int get_dram_mr_cnt(void);
63 int get_dram_freq_cnt(void);
65 void get_dram_rank_size(u64 dram_rank_size
[DRAMC_MAX_RK
]);
66 void get_dram_freq_step(u32 dram_freq_step
[]);
67 void set_dram_mr(unsigned int index
, unsigned short value
);
68 unsigned short get_dram_mr(unsigned int index
);
69 void get_dram_mr_info(struct mr_info_t mr_info
[]);
70 void reserve_dramc_dummy_read(void);
72 typedef struct _AC_TIMING_EXTERNAL_T
75 U32 AC_TIME_EMI_FREQUENCY
:16;
76 U32 AC_TIME_EMI_TRAS
:8;
77 U32 AC_TIME_EMI_TRP
:8;
80 U32 AC_TIME_EMI_TRPAB
:8;
81 U32 AC_TIME_EMI_TRC
:8;
82 U32 AC_TIME_EMI_TRFC
:8;
83 U32 AC_TIME_EMI_TRFCPB
:8;
86 U32 AC_TIME_EMI_TXP
:8;
87 U32 AC_TIME_EMI_TRTP
:8;
88 U32 AC_TIME_EMI_TRCD
:8;
89 U32 AC_TIME_EMI_TWR
:8;
92 U32 AC_TIME_EMI_TWTR
:8;
93 U32 AC_TIME_EMI_TRRD
:8;
94 U32 AC_TIME_EMI_TFAW
:8;
95 U32 AC_TIME_EMI_TRTW_ODT_OFF
:4;
96 U32 AC_TIME_EMI_TRTW_ODT_ON
:4;
99 U32 AC_TIME_EMI_REFCNT
:8;
100 U32 AC_TIME_EMI_REFCNT_FR_CLK
:8;
101 U32 AC_TIME_EMI_TXREFCNT
:8;
102 U32 AC_TIME_EMI_TZQCS
:8;
105 U32 AC_TIME_EMI_TRTPD
:8;
106 U32 AC_TIME_EMI_TWTPD
:8;
107 U32 AC_TIME_EMI_TMRR2W_ODT_OFF
:8;
108 U32 AC_TIME_EMI_TMRR2W_ODT_ON
:8;
112 U32 AC_TIME_EMI_TRAS_05T
:2;
113 U32 AC_TIME_EMI_TRP_05T
:2;
114 U32 AC_TIME_EMI_TRPAB_05T
:2;
115 U32 AC_TIME_EMI_TRC_05T
:2;
117 U32 AC_TIME_EMI_TRFC_05T
:2;
118 U32 AC_TIME_EMI_TRFCPB_05T
:2;
119 U32 AC_TIME_EMI_TXP_05T
:2;
120 U32 AC_TIME_EMI_TRTP_05T
:2;
122 U32 AC_TIME_EMI_TRCD_05T
:2;
123 U32 AC_TIME_EMI_TWR_05T
:2;
124 U32 AC_TIME_EMI_TWTR_05T
:2;
125 U32 AC_TIME_EMI_TRRD_05T
:2;
127 U32 AC_TIME_EMI_TFAW_05T
:2;
128 U32 AC_TIME_EMI_TRTW_ODT_OFF_05T
:2;
129 U32 AC_TIME_EMI_TRTW_ODT_ON_05T
:2;
130 U32 AC_TIME_EMI_TRTPD_05T
:2;
134 U32 AC_TIME_EMI_TWTPD_05T
:2;
135 U32 AC_TIME_EMI_TMRR2W_ODT_OFF_05T
:2;
136 U32 AC_TIME_EMI_TMRR2W_ODT_ON_05T
:2;
139 }AC_TIMING_EXTERNAL_T
;
141 //[FOR_CHROMEOS] Move EMI_SETTINGS to dramc_custom.h
143 unsigned int type
; /* 0x0000 : Invalid
144 0x0001 : Discrete DDR1
145 0x0002 : Discrete LPDDR2
146 0x0003 : Discrete LPDDR3
147 0x0004 : Discrete PCDDR3
148 0x0005 : Discrete LPDDR4
149 0x0006 : Discrete LPDR4X
150 0x0101 : MCP(NAND+DDR1)
151 0x0102 : MCP(NAND+LPDDR2)
152 0x0103 : MCP(NAND+LPDDR3)
153 0x0104 : MCP(NAND+PCDDR3)
154 0x0201 : MCP(eMMC+DDR1)
155 0x0202 : MCP(eMMC+LPDDR2)
156 0x0203 : MCP(eMMC+LPDDR3)
157 0x0204 : MCP(eMMC+PCDDR3)
158 0x0205 : MCP(eMMC+LPDDR4)
159 0x0206 : MCP(eMMC+LPDR4X) */
160 unsigned int EMI_CONA_VAL
;
161 unsigned int EMI_CONH_VAL
;
162 unsigned int EMI_CONK_VAL
;
163 unsigned int EMI_CONF_VAL
;
164 unsigned int CHN0_EMI_CONA_VAL
;
165 unsigned int CHN1_EMI_CONA_VAL
;
166 u64 DRAM_RANK_SIZE
[4];
167 unsigned int dram_cbt_mode_extern
;
168 unsigned int iLPDDR3_MODE_REG_5
;
169 unsigned int highest_freq
;
174 unsigned int id_length
;
175 unsigned char ID
[16];
176 u64 DRAM_RANK_SIZE
[4];
177 unsigned int reserved
[6];
178 unsigned int iLPDDR3_MODE_REG_5
;
181 //typedef EMI_SETTINGS_v15 EMI_SETTINGS;
182 #if (FOR_DV_SIMULATION_USED==0)
183 void setup_dramc_voltage_by_pmic(void);
184 void switch_dramc_voltage_to_auto_mode(void);
186 uint32
mt_set_emis(uint8
* emi
, uint32 len
, bool use_default
);
190 extern int num_of_emi_records
;
191 extern EMI_SETTINGS g_default_emi_setting
;
192 extern unsigned int channel_num_auxadc
;
193 #if DRAM_AUXADC_CONFIG
194 extern unsigned int dram_type_auxadc
;
197 #include "x_hal_io.h"
199 void init_ta2_single_channel(unsigned int);
201 #define LAST_DRAMC_MAGIC_PATTERN 0x19870611
202 static void update_last_dramc_info(void);
203 void init_ta2_all_channel(void);
205 unsigned long long ta2_result_magic
;
206 unsigned long long ta2_result_last
;
207 unsigned long long ta2_result_past
;
208 unsigned long long ta2_result_checksum
;
209 unsigned long long reboot_count
;
210 volatile unsigned int last_fatal_err_flag
;
211 volatile unsigned int fatal_err_flag
;
212 volatile unsigned int storage_api_err_flag
;
213 volatile unsigned int last_gating_err
[4][2];
214 volatile unsigned int gating_err
[4][2];
220 #define DEF_LAST_DRAMC LAST_DRAMC_INFO_T
222 #define OFFSET_DRAM_FATAL_ERR (31)
223 #define OFFSET_DRAM_TA2_ERR (23)
224 #define OFFSET_DRAM_GATING_ERR (7)
225 #define OFFSET_CPU_RW_ERR (5)
226 #define OFFSET_DDR_RSV_MODE_FLOW (4)
227 #define OFFSET_DDR_RSV_MODE_ERR (3)
228 #define OFFSET_EMI_DCS_ERR (2)
229 #define OFFSET_DVFSRC_ERR (1)
230 #define OFFSET_DRS_ERR (0)
232 #define ERR_DRAM_TA2_RK0 (1 << 0)
233 #define ERR_DRAM_TA2_RK1 (1 << 1)
235 #define ERR_DRAM_GATING_RK0_R (1 << 0)
236 #define ERR_DRAM_GATING_RK0_F (1 << 1)
237 #define ERR_DRAM_GATING_RK1_R (1 << 2)
238 #define ERR_DRAM_GATING_RK1_F (1 << 3)
240 #define ERR_CPU_RW_RK0 (1 << 0)
241 #define ERR_CPU_RW_RK1 (1 << 1)
244 #define DDR_RSV_MODE_ERR_MASK (0x1f)
246 unsigned int check_last_dram_fatal_exception(void);
247 unsigned int check_dram_fatal_exception(void);
248 void set_err_code_for_storage_api(void);
249 void dram_fatal_set_ta2_err(unsigned int chn
, unsigned int err_code
);
250 void dram_fatal_set_gating_err(unsigned int chn
, unsigned int err_code
);
251 void dram_fatal_set_cpu_rw_err(unsigned int err_code
);
252 void dram_fatal_set_stberr(unsigned int chn
, unsigned int rk
, unsigned int err_code
);
254 void dram_fatal_backup_stberr(void);
255 void dram_fatal_init_stberr(void);
256 void dram_fatal_set_err(unsigned int err_code
, unsigned int mask
, unsigned int offset
);
258 unsigned int get_ch_num_by_auxadc(void);
261 #define dram_fatal_set_cpu_rw_err(err_code)\
263 dram_fatal_set_err(err_code, 0x3, OFFSET_CPU_RW_ERR);\
266 #define dram_fatal_set_ddr_rsv_mode_err()\
268 dram_fatal_set_err(0x1, 0x1, OFFSET_DDR_RSV_MODE_ERR);\
271 #define dram_fatal_set_emi_dcs_err()\
273 dram_fatal_set_err(0x1, 0x1, OFFSET_EMI_DCS_ERR);\
276 #define dram_fatal_set_dvfsrc_err()\
278 dram_fatal_set_err(0x1, 0x1, OFFSET_DVFSRC_ERR);\
281 #define dram_fatal_set_drs_err()\
283 dram_fatal_set_err(0x1, 0x1, OFFSET_DRS_ERR);\
286 #define dram_fatal_set_ddr_rsv_mode_flow()\
288 dram_fatal_set_err(0x1, 0x1, OFFSET_DDR_RSV_MODE_FLOW);\
320 //================================================
321 //=============pmic related api for ETT HQA test ==============
322 //================================================
323 #if (__ETT__ || CFG_DRAM_LOG_TO_STORAGE)
327 #define MAX_VCORE 1193750
328 #define MAX_VDRAM 1300000
329 #define MAX_VDDQ 1300000
330 #define MAX_VMDDR 2000000
331 #define MAX_VIO18 1900000
333 #define UNIT_VCORE 6250
334 #define UNIT_VDRAM 5000
335 #define UNIT_VDDQ 10000
336 #define UNIT_VMDDR 10000
337 #define UNIT_VIO18 10000
338 #define UNIT_VIO18_STEP 100000
340 #define HQA_VIO18_HV 1950000
341 #define HQA_VCORE_HV_LP4_KSHU0_PL 787500
342 #define HQA_VCORE_HV_LP4_KSHU1_PL 737500
343 #define HQA_VCORE_HV_LP4_KSHU2_PL 712500
344 #define HQA_VCORE_HV_LP4_KSHU3_PL 712500
345 #define HQA_VCORE_HV_LP4_KSHU4_PL 687500
346 #define HQA_VCORE_HV_LP4_KSHU5_PL 687500
347 #define HQA_VCORE_HV_LP4_KSHU6_PL 687500
348 #define HQA_VCORE_HV_LP4_KSHU0_ETT 787500
349 #define HQA_VCORE_HV_LP4_KSHU1_ETT 787500
350 #define HQA_VCORE_HV_LP4_KSHU2_ETT 787500
351 #define HQA_VCORE_HV_LP4_KSHU3_ETT 787500
352 #define HQA_VCORE_HV_LP4_KSHU4_ETT 787500
353 #define HQA_VCORE_HV_LP4_KSHU5_ETT 787500
354 #define HQA_VCORE_HV_LP4_KSHU6_ETT 787500
355 #define HQA_VDRAM_HV_LP4 1170000
356 #define HQA_VDDQ_HV_LP4 650000
357 #define HQA_VMDDR_HV_LP4 790000
359 #if defined(MTK_AGING_FLAVOR_LOAD)
360 #define HQA_VIO18_NV 1730000
362 #define HQA_VIO18_NV 1800000
364 #define HQA_VCORE_NV_LP4_KSHU0_PL 750000
365 #define HQA_VCORE_NV_LP4_KSHU1_PL 700000
366 #define HQA_VCORE_NV_LP4_KSHU2_PL 675000
367 #define HQA_VCORE_NV_LP4_KSHU3_PL 675000
368 #define HQA_VCORE_NV_LP4_KSHU4_PL 650000
369 #define HQA_VCORE_NV_LP4_KSHU5_PL 650000
370 #define HQA_VCORE_NV_LP4_KSHU6_PL 650000
371 #define HQA_VCORE_NV_LP4_KSHU0_ETT 750000
372 #define HQA_VCORE_NV_LP4_KSHU1_ETT 700000
373 #define HQA_VCORE_NV_LP4_KSHU2_ETT 675000
374 #define HQA_VCORE_NV_LP4_KSHU3_ETT 675000
375 #define HQA_VCORE_NV_LP4_KSHU4_ETT 650000
376 #define HQA_VCORE_NV_LP4_KSHU5_ETT 650000
377 #define HQA_VCORE_NV_LP4_KSHU6_ETT 650000
378 #if defined(MTK_AGING_FLAVOR_LOAD)
379 #define HQA_VDRAM_NV_LP4 1060000
380 #define HQA_VDDQ_NV_LP4 570000
381 #define HQA_VMDDR_NV_LP4 710000
383 #define HQA_VDRAM_NV_LP4 1125000
384 #define HQA_VDDQ_NV_LP4 600000
385 #define HQA_VMDDR_NV_LP4 750000
388 #define HQA_VIO18_LV 1730000
389 #define HQA_VCORE_LV_LP4_KSHU0_PL 712500
390 #define HQA_VCORE_LV_LP4_KSHU1_PL 662500
391 #define HQA_VCORE_LV_LP4_KSHU2_PL 637500
392 #define HQA_VCORE_LV_LP4_KSHU3_PL 637500
393 #define HQA_VCORE_LV_LP4_KSHU4_PL 612500
394 #define HQA_VCORE_LV_LP4_KSHU5_PL 612500
395 #define HQA_VCORE_LV_LP4_KSHU6_PL 612500
396 #define HQA_VCORE_LV_LP4_KSHU0_ETT 712500
397 #define HQA_VCORE_LV_LP4_KSHU1_ETT 612500
398 #define HQA_VCORE_LV_LP4_KSHU2_ETT 568750
399 #define HQA_VCORE_LV_LP4_KSHU3_ETT 568750
400 #define HQA_VCORE_LV_LP4_KSHU4_ETT 518750
401 #define HQA_VCORE_LV_LP4_KSHU5_ETT 518750
402 #define HQA_VCORE_LV_LP4_KSHU6_ETT 518750
403 #define HQA_VDRAM_LV_LP4 1060000
404 #define HQA_VDDQ_LV_LP4 570000
405 #define HQA_VMDDR_LV_LP4 710000
407 #define _SEL_PREFIX_SHU_PL(type,vol,dtype,shu) HQA_##type##_##vol##_##dtype##_##shu##_PL
408 #define _SEL_PREFIX_SHU_ETT(type,vol,dtype,shu) HQA_##type##_##vol##_##dtype##_##shu##_ETT
409 #define _SEL_PREFIX(type,vol,dtype) HQA_##type##_##vol##_##dtype
410 #define _SEL_VIO18(vol) HQA_VIO18_##vol
412 #define STD_VIO18 _SEL_VIO18(NV)
413 #define STD_VCORE(dtype,shu) _SEL_PREFIX_SHU_PL(VCORE,NV,dtype,shu)
414 #define STD_VDRAM(dtype) _SEL_PREFIX(VDRAM,NV,dtype)
415 #define STD_VDDQ _SEL_PREFIX(VDDQ,NV,LP4)
416 #define STD_VMDDR _SEL_PREFIX(VMDDR,NV,LP4)
418 #if defined(MTK_AGING_FLAVOR_LOAD)
423 //#define HVCORE_HVDRAM
424 #if defined(MTK_AGING_FLAVOR_LOAD)
425 #define LVCORE_LVDRAM
427 #define NVCORE_NVDRAM
428 //#define LVCORE_LVDRAM
429 //#define HVCORE_HVDRAM
432 #if defined(HVCORE_HVDRAM)
433 #define HQA_VCORE(dtype,shu) _SEL_PREFIX_SHU_PL(VCORE,HV,dtype,shu)
434 #define HQA_VDRAM(dtype) _SEL_PREFIX(VDRAM,HV,dtype)
435 #define HQA_VDDQ _SEL_PREFIX(VDDQ,HV,LP4)
436 #define HQA_VMDDR _SEL_PREFIX(VMDDR,HV,LP4)
437 #define HQA_VIO18 _SEL_VIO18(HV)
438 #elif defined(NVCORE_NVDRAM)
439 #define HQA_VCORE(dtype,shu) _SEL_PREFIX_SHU_PL(VCORE,NV,dtype,shu)
440 #define HQA_VDRAM(dtype) _SEL_PREFIX(VDRAM,NV,dtype)
441 #define HQA_VDDQ _SEL_PREFIX(VDDQ,NV,LP4)
442 #define HQA_VMDDR _SEL_PREFIX(VMDDR,NV,LP4)
443 #define HQA_VIO18 _SEL_VIO18(NV)
444 #elif defined(LVCORE_LVDRAM)
445 #define HQA_VCORE(dtype,shu) _SEL_PREFIX_SHU_PL(VCORE,LV,dtype,shu)
446 #define HQA_VDRAM(dtype) _SEL_PREFIX(VDRAM,LV,dtype)
447 #define HQA_VDDQ _SEL_PREFIX(VDDQ,LV,LP4)
448 #define HQA_VMDDR _SEL_PREFIX(VMDDR,LV,LP4)
449 #define HQA_VIO18 _SEL_VIO18(LV)
450 #elif defined(HVCORE_LVDRAM)
451 #define HQA_VCORE(dtype,shu) _SEL_PREFIX_SHU_PL(VCORE,HV,dtype,shu)
452 #define HQA_VDRAM(dtype) _SEL_PREFIX(VDRAM,LV,dtype)
453 #define HQA_VDDQ _SEL_PREFIX(VDDQ,LV,LP4)
454 #define HQA_VMDDR _SEL_PREFIX(VMDDR,LV,LP4)
455 #define HQA_VIO18 _SEL_VIO18(LV)
456 #elif defined(LVCORE_HVDRAM)
457 #define HQA_VCORE(dtype,shu) _SEL_PREFIX_SHU_PL(VCORE,LV,dtype,shu)
458 #define HQA_VDRAM(dtype) _SEL_PREFIX(VDRAM,HV,dtype)
459 #define HQA_VDDQ _SEL_PREFIX(VDDQ,HV,LP4)
460 #define HQA_VMDDR _SEL_PREFIX(VMDDR,HV,LP4)
461 #define HQA_VIO18 _SEL_VIO18(HV)
463 #error "Please set HQA voltage type"
466 #define SEL_PREFIX_VCORE(dtype,shu) HQA_VCORE(dtype,shu)
467 #define SEL_PREFIX_VDRAM(dtype) HQA_VDRAM(dtype)
468 #define SEL_PREFIX_VDDQ HQA_VDDQ
469 #define SEL_PREFIX_VMDDR HQA_VMDDR
470 #define SEL_VIO18 HQA_VIO18
473 #if defined(MTK_AGING_FLAVOR_LOAD)
479 #define SEL_PREFIX_VCORE(dtype,shu) STD_VCORE(dtype,shu)
480 #define SEL_PREFIX_VDRAM(dtype) STD_VDRAM(dtype)
481 #define SEL_PREFIX_VDDQ STD_VDDQ
482 #define SEL_PREFIX_VMDDR STD_VMDDR
483 #define SEL_VIO18 STD_VIO18
484 #endif // #define DRAM_HQA
486 #if SUPPORT_SAVE_TIME_FOR_CALIBRATION
488 #define PART_DRAM_DATA_SIZE 0x100000
490 #define DRAM_CALIBRATION_DATA_MAGIC 0x9502
492 typedef struct _DRAM_CALIBRATION_HEADER_T
497 } DRAM_CALIBRATION_HEADER_T
;
499 typedef struct _DRAM_CALIBRATION_MRR_DATA_T
503 DRAM_INFO_BY_MRR_T DramInfo
;
504 } DRAM_CALIBRATION_MRR_DATA_T
;
506 typedef struct _DRAM_CALIBRATION_SHU_DATA_T
510 SAVE_TIME_FOR_CALIBRATION_T calibration_data
;
511 } DRAM_CALIBRATION_SHU_DATA_T
;
513 typedef struct _DRAM_CALIBRATION_DATA_T
515 DRAM_CALIBRATION_HEADER_T header
;
516 DRAM_CALIBRATION_MRR_DATA_T mrr_info
;
517 DRAM_CALIBRATION_SHU_DATA_T data
[DRAM_DFS_SRAM_MAX
];
518 } DRAM_CALIBRATION_DATA_T
;
521 #define ERR_NULL_POINTER (0x1)
522 #define ERR_MAGIC_NUMBER (0x2)
523 #define ERR_CHECKSUM (0x3)
524 #define ERR_PL_UPDATED (0x4)
525 #define ERR_BLKDEV_NOT_FOUND (0x5)
526 #define ERR_BLKDEV_READ_FAIL (0x6)
527 #define ERR_BLKDEV_WRITE_FAIL (0x7)
528 #define ERR_BLKDEV_NO_PART (0x8)
530 #define ERR_DATA_FORMATTED_OFFSET (12)
533 DRAM_STORAGE_API_READ
= 0,
534 DRAM_STORAGE_API_WRITE
,
535 DRAM_STORAGE_API_CLEAN
,
536 } DRAM_STORAGE_API_TPYE
;
538 extern u32 g_dram_storage_api_err_code
;
539 #define SET_DRAM_STORAGE_API_ERR(err_type, api_type) \
541 g_dram_storage_api_err_code |= (err_type << (api_type * 4));\
544 #define SET_DATA_FORMATTED_STORAGE_API_ERR() \
546 g_dram_storage_api_err_code |= (1 << ERR_DATA_FORMATTED_OFFSET);\
549 int read_offline_dram_calibration_data(DRAM_DFS_SRAM_SHU_T shuffle
, SAVE_TIME_FOR_CALIBRATION_T
*offLine_SaveData
);
550 int write_offline_dram_calibration_data(DRAM_DFS_SRAM_SHU_T shuffle
, SAVE_TIME_FOR_CALIBRATION_T
*offLine_SaveData
);
551 int clean_dram_calibration_data(void);
553 void dram_fatal_exception_detection_start(void);
554 void dram_fatal_exception_detection_end(void);
556 #define CBT_VREF_OFFSET 2
557 #define WRITE_LEVELING_OFFSET 5
558 #define GATING_START_OFFSET 0
559 #define GATING_PASS_WIN_OFFSET 3
560 #define RX_WIN_PERBIT_OFFSET 5
561 #define RX_WIN_PERBIT_VREF_OFFSET 4
562 #define TX_WIN_PERBIT_OFFSET 5
563 #define TX_WIN_PERBIT_VREF_OFFSET 4
564 #define RX_DATLAT_OFFSET 1
565 #define RX_WIN_HIGH_SPEED_TH 10
566 #define RX_WIN_LOW_SPEED_TH 100
573 #define SLT_ERR_NO_DATA (-1)
574 #define SLT_ERR_NO_DEV (-2)
575 #define SLT_ERR_NO_ADDR (-3)
576 #define SLT_ERR_WRITE_FAIL (-4)
577 #define SLT_ERR_READ_FAIL (-5)
579 typedef struct _DRAM_SLT_HEADER_T
585 typedef struct _DRAM_SLT_DATA_T
587 DRAM_SLT_HEADER_T header
;
591 int read_slt_data(DRAM_SLT_DATA_T
*data
);
592 int write_slt_data(DRAM_SLT_DATA_T
*data
);
593 int clean_slt_data(void);
597 unsigned long long get_dram_size(void);
600 unsigned long long full_sys_addr
;
610 unsigned int get_dramc_addr(dram_addr_t
*dram_addr
, unsigned int offset
);
611 unsigned int get_dummy_read_addr(dram_addr_t
*dram_addr
);
612 unsigned int is_discrete_lpddr4(void);
613 unsigned int DRAM_MRR(int MRR_num
);
615 void dram_auto_detection(void);
617 int mt_get_freq_setting(DRAMC_CTX_T
*p
);
618 unsigned int dramc_get_vmdd_voltage(unsigned int ddr_type
);
619 unsigned int dramc_get_vmddq_voltage(unsigned int ddr_type
);
620 unsigned int dramc_set_vmdd_voltage(unsigned int ddr_type
, unsigned int vdram
);
621 unsigned int dramc_set_vmddq_voltage(unsigned int ddr_type
, unsigned int vddq
);
623 void release_dram(void);
625 #endif /* __DRAMC_TOP_H__ */