1 /*
2  * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef DFS_H
8 #define DFS_H
9 
10 #include <stdint.h>
11 
12 struct rk3399_sdram_default_config {
13 	unsigned char bl;
14 	/* 1:auto precharge, 0:never auto precharge */
15 	unsigned char ap;
16 	/* dram driver strength */
17 	unsigned char dramds;
18 	/* dram ODT, if odt=0, this parameter invalid */
19 	unsigned char dramodt;
20 	/* ca ODT, if odt=0, this parameter invalid
21 	 * only used by LPDDR4
22 	 */
23 	unsigned char caodt;
24 	unsigned char burst_ref_cnt;
25 	/* zqcs period, unit(s) */
26 	unsigned char zqcsi;
27 };
28 
29 struct drv_odt_lp_config {
30 	uint32_t pd_idle;
31 	uint32_t sr_idle;
32 	uint32_t sr_mc_gate_idle;
33 	uint32_t srpd_lite_idle;
34 	uint32_t standby_idle;
35 	uint32_t odt_en;
36 
37 	uint32_t dram_side_drv;
38 	uint32_t dram_side_dq_odt;
39 	uint32_t dram_side_ca_odt;
40 };
41 
42 uint32_t ddr_set_rate(uint32_t hz);
43 uint32_t ddr_round_rate(uint32_t hz);
44 uint32_t ddr_get_rate(void);
45 uint32_t dram_set_odt_pd(uint32_t arg0, uint32_t arg1, uint32_t arg2);
46 void dram_dfs_init(void);
47 void ddr_prepare_for_sys_suspend(void);
48 void ddr_prepare_for_sys_resume(void);
49 
50 #endif /* DFS_H */
51