xref: /rk3399_rockchip-uboot/board/freescale/ls1043ardb/ddr.h (revision dc557e9a1fe00ca9d884bd88feef5bebf23fede4)
1f3a8e2b7SMingkai Hu /*
2f3a8e2b7SMingkai Hu  * Copyright 2015 Freescale Semiconductor, Inc.
3f3a8e2b7SMingkai Hu  *
4f3a8e2b7SMingkai Hu  * SPDX-License-Identifier:	GPL-2.0+
5f3a8e2b7SMingkai Hu  */
6f3a8e2b7SMingkai Hu 
7f3a8e2b7SMingkai Hu #ifndef __DDR_H__
8f3a8e2b7SMingkai Hu #define __DDR_H__
9074596c0SShengzhou Liu 
10074596c0SShengzhou Liu extern void erratum_a008850_post(void);
11074596c0SShengzhou Liu 
12f3a8e2b7SMingkai Hu struct board_specific_parameters {
13f3a8e2b7SMingkai Hu 	u32 n_ranks;
14f3a8e2b7SMingkai Hu 	u32 datarate_mhz_high;
15f3a8e2b7SMingkai Hu 	u32 rank_gb;
16f3a8e2b7SMingkai Hu 	u32 clk_adjust;
17f3a8e2b7SMingkai Hu 	u32 wrlvl_start;
18f3a8e2b7SMingkai Hu 	u32 wrlvl_ctl_2;
19f3a8e2b7SMingkai Hu 	u32 wrlvl_ctl_3;
20f3a8e2b7SMingkai Hu 	u32 cpo_override;
21f3a8e2b7SMingkai Hu 	u32 write_data_delay;
22f3a8e2b7SMingkai Hu 	u32 force_2t;
23f3a8e2b7SMingkai Hu };
24f3a8e2b7SMingkai Hu 
25f3a8e2b7SMingkai Hu /*
26f3a8e2b7SMingkai Hu  * These tables contain all valid speeds we want to override with board
27f3a8e2b7SMingkai Hu  * specific parameters. datarate_mhz_high values need to be in ascending order
28f3a8e2b7SMingkai Hu  * for each n_ranks group.
29f3a8e2b7SMingkai Hu  */
30f3a8e2b7SMingkai Hu static const struct board_specific_parameters udimm0[] = {
31f3a8e2b7SMingkai Hu 	/*
32f3a8e2b7SMingkai Hu 	 * memory controller 0
33f3a8e2b7SMingkai Hu 	 *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl | cpo  |wrdata|2T
34f3a8e2b7SMingkai Hu 	 * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3  |      |delay |
35f3a8e2b7SMingkai Hu 	 */
36f3a8e2b7SMingkai Hu #ifdef CONFIG_SYS_FSL_DDR4
37*e04f9d0cSShengzhou Liu 	{1,  1666, 0, 12,     7, 0x07090800, 0x00000000,},
38*e04f9d0cSShengzhou Liu 	{1,  1900, 0, 12,     7, 0x07090800, 0x00000000,},
39*e04f9d0cSShengzhou Liu 	{1,  2200, 0, 12,     7, 0x07090800, 0x00000000,},
40f3a8e2b7SMingkai Hu #endif
41f3a8e2b7SMingkai Hu 	{}
42f3a8e2b7SMingkai Hu };
43f3a8e2b7SMingkai Hu 
44f3a8e2b7SMingkai Hu static const struct board_specific_parameters *udimms[] = {
45f3a8e2b7SMingkai Hu 	udimm0,
46f3a8e2b7SMingkai Hu };
47f3a8e2b7SMingkai Hu 
48f3a8e2b7SMingkai Hu #endif
49