xref: /openbmc/u-boot/board/freescale/t1040qds/ddr.h (revision 7d436078)
1*7d436078SPrabhakar Kushwaha /*
2*7d436078SPrabhakar Kushwaha  * Copyright 2013 Freescale Semiconductor, Inc.
3*7d436078SPrabhakar Kushwaha  *
4*7d436078SPrabhakar Kushwaha  * SPDX-License-Identifier:	GPL-2.0+
5*7d436078SPrabhakar Kushwaha  */
6*7d436078SPrabhakar Kushwaha 
7*7d436078SPrabhakar Kushwaha #ifndef __DDR_H__
8*7d436078SPrabhakar Kushwaha #define __DDR_H__
9*7d436078SPrabhakar Kushwaha struct board_specific_parameters {
10*7d436078SPrabhakar Kushwaha 	u32 n_ranks;
11*7d436078SPrabhakar Kushwaha 	u32 datarate_mhz_high;
12*7d436078SPrabhakar Kushwaha 	u32 rank_gb;
13*7d436078SPrabhakar Kushwaha 	u32 clk_adjust;
14*7d436078SPrabhakar Kushwaha 	u32 wrlvl_start;
15*7d436078SPrabhakar Kushwaha 	u32 wrlvl_ctl_2;
16*7d436078SPrabhakar Kushwaha 	u32 wrlvl_ctl_3;
17*7d436078SPrabhakar Kushwaha 	u32 cpo;
18*7d436078SPrabhakar Kushwaha 	u32 write_data_delay;
19*7d436078SPrabhakar Kushwaha 	u32 force_2t;
20*7d436078SPrabhakar Kushwaha };
21*7d436078SPrabhakar Kushwaha 
22*7d436078SPrabhakar Kushwaha /*
23*7d436078SPrabhakar Kushwaha  * These tables contain all valid speeds we want to override with board
24*7d436078SPrabhakar Kushwaha  * specific parameters. datarate_mhz_high values need to be in ascending order
25*7d436078SPrabhakar Kushwaha  * for each n_ranks group.
26*7d436078SPrabhakar Kushwaha  */
27*7d436078SPrabhakar Kushwaha 
28*7d436078SPrabhakar Kushwaha static const struct board_specific_parameters udimm0[] = {
29*7d436078SPrabhakar Kushwaha 	/*
30*7d436078SPrabhakar Kushwaha 	 * memory controller 0
31*7d436078SPrabhakar Kushwaha 	 *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl | cpo  |wrdata|2T
32*7d436078SPrabhakar Kushwaha 	 * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3  |      |delay |
33*7d436078SPrabhakar Kushwaha 	 */
34*7d436078SPrabhakar Kushwaha 	{2,  1350, 4, 4,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0},
35*7d436078SPrabhakar Kushwaha 	{2,  1350, 0, 5,     7, 0x0709090b, 0x0c0c0d09,   0xff,    2,  0},
36*7d436078SPrabhakar Kushwaha 	{2,  1666, 4, 4,     8, 0x080a0a0d, 0x0d10100b,   0xff,    2,  0},
37*7d436078SPrabhakar Kushwaha 	{2,  1666, 0, 5,     7, 0x080a0a0c, 0x0d0d0e0a,   0xff,    2,  0},
38*7d436078SPrabhakar Kushwaha 	{2,  1900, 0, 4,     8, 0x090a0b0e, 0x0f11120c,   0xff,    2,  0},
39*7d436078SPrabhakar Kushwaha 	{2,  2140, 0, 4,     8, 0x090a0b0e, 0x0f11120c,   0xff,    2,  0},
40*7d436078SPrabhakar Kushwaha 	{1,  1350, 0, 5,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0},
41*7d436078SPrabhakar Kushwaha 	{1,  1700, 0, 5,     8, 0x080a0a0c, 0x0c0d0e0a,   0xff,    2,  0},
42*7d436078SPrabhakar Kushwaha 	{1,  1900, 0, 4,     8, 0x080a0a0c, 0x0e0e0f0a,   0xff,    2,  0},
43*7d436078SPrabhakar Kushwaha 	{1,  2140, 0, 4,     8, 0x090a0b0c, 0x0e0f100b,   0xff,    2,  0},
44*7d436078SPrabhakar Kushwaha 	{}
45*7d436078SPrabhakar Kushwaha };
46*7d436078SPrabhakar Kushwaha 
47*7d436078SPrabhakar Kushwaha static const struct board_specific_parameters *udimms[] = {
48*7d436078SPrabhakar Kushwaha 	udimm0,
49*7d436078SPrabhakar Kushwaha };
50*7d436078SPrabhakar Kushwaha #endif
51