diff options
| author | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-12-10 14:31:56 +0100 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-12-10 22:23:59 +0100 | 
| commit | f15ea6e1d67782a1626d4a4922b6c20e380085e5 (patch) | |
| tree | 57d78f1ee94a2060eaa591533278d2934d4f1da3 /board/freescale/t2080qds/ddr.h | |
| parent | cb7ee1b98cac6baf244daefb1192adf5a47bc983 (diff) | |
| parent | f44483b57c49282299da0e5c10073b909cdad979 (diff) | |
| download | olio-uboot-2014.01-f15ea6e1d67782a1626d4a4922b6c20e380085e5.tar.xz olio-uboot-2014.01-f15ea6e1d67782a1626d4a4922b6c20e380085e5.zip | |
Merge branch 'u-boot/master' into 'u-boot-arm/master'
Conflicts:
	arch/arm/cpu/armv7/rmobile/Makefile
	doc/README.scrapyard
Needed manual fix:
	arch/arm/cpu/armv7/omap-common/Makefile
	board/compulab/cm_t335/u-boot.lds
Diffstat (limited to 'board/freescale/t2080qds/ddr.h')
| -rw-r--r-- | board/freescale/t2080qds/ddr.h | 85 | 
1 files changed, 85 insertions, 0 deletions
| diff --git a/board/freescale/t2080qds/ddr.h b/board/freescale/t2080qds/ddr.h new file mode 100644 index 000000000..964eaada1 --- /dev/null +++ b/board/freescale/t2080qds/ddr.h @@ -0,0 +1,85 @@ +/* + * Copyright 2013 Freescale Semiconductor, Inc. + * + * SPDX-License-Identifier:     GPL-2.0+ + */ + +#ifndef __DDR_H__ +#define __DDR_H__ +struct board_specific_parameters { +	u32 n_ranks; +	u32 datarate_mhz_high; +	u32 rank_gb; +	u32 clk_adjust; +	u32 wrlvl_start; +	u32 wrlvl_ctl_2; +	u32 wrlvl_ctl_3; +	u32 cpo; +	u32 write_data_delay; +	u32 force_2t; +}; + +/* + * These tables contain all valid speeds we want to override with board + * specific parameters. datarate_mhz_high values need to be in ascending order + * for each n_ranks group. + */ + +static const struct board_specific_parameters udimm0[] = { +	/* +	 * memory controller 0 +	 *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl | cpo  |wrdata|2T +	 * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3  |      |delay | +	 */ +	{2,  1350, 4, 4,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0}, +	{2,  1350, 0, 5,     7, 0x0709090b, 0x0c0c0d09,   0xff,    2,  0}, +	{2,  1666, 4, 4,     8, 0x080a0a0d, 0x0d10100b,   0xff,    2,  0}, +	{2,  1666, 0, 5,     7, 0x080a0a0c, 0x0d0d0e0a,   0xff,    2,  0}, +	{2,  1900, 0, 4,     8, 0x090a0b0e, 0x0f11120c,   0xff,    2,  0}, +	{2,  2140, 0, 4,     8, 0x090a0b0e, 0x0f11120c,   0xff,    2,  0}, +	{1,  1350, 0, 5,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0}, +	{1,  1700, 0, 5,     8, 0x080a0a0c, 0x0c0d0e0a,   0xff,    2,  0}, +	{1,  1800, 2, 5,     6, 0x06070709, 0x110a0b08,   0xff,    2,  0}, +	{1,  1866, 2, 4,     6, 0x06060708, 0x09090a07,   0xff,    2,  0}, +	{1,  1900, 2, 4,     6, 0x06060708, 0x09090a07,   0xff,    2,  0}, +	{1,  2000, 2, 4,     8, 0x090a0b0d, 0x0e0f110b,   0xff,    2,  0}, +	{1,  2133, 2, 4,     8, 0x090a0b0d, 0x0e0f110b,   0xff,    2,  0}, +	{} +}; + +static const struct board_specific_parameters rdimm0[] = { +	/* +	 * memory controller 0 +	 *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl | cpo  |wrdata|2T +	 * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3  |      |delay | +	 */ +	{4,  1350, 0, 5,     9, 0x08070605, 0x06070806,   0xff,    2,  0}, +	{4,  1666, 0, 5,    11, 0x0a080706, 0x07090906,   0xff,    2,  0}, +	{4,  2140, 0, 5,    12, 0x0b090807, 0x080a0b07,   0xff,    2,  0}, +	{2,  1350, 0, 5,     9, 0x08070605, 0x06070806,   0xff,    2,  0}, +	{2,  1666, 0, 5,    11, 0x0a090806, 0x08090a06,   0xff,    2,  0}, +	{2,  2140, 0, 5,    12, 0x0b090807, 0x080a0b07,   0xff,    2,  0}, +	{1,  1350, 0, 5,     9, 0x08070605, 0x06070806,   0xff,    2,  0}, +	{1,  1666, 0, 5,    11, 0x0a090806, 0x08090a06,   0xff,    2,  0}, +	{1,  2140, 0, 4,    12, 0x0b090807, 0x080a0b07,   0xff,    2,  0}, +	{} +}; + +/* + * The three slots have slightly different timing. The center values are good + * for all slots. We use identical speed tables for them. In future use, if + * DIMMs require separated tables, make more entries as needed. + */ +static const struct board_specific_parameters *udimms[] = { +	udimm0, +}; + +/* + * The three slots have slightly different timing. See comments above. + */ +static const struct board_specific_parameters *rdimms[] = { +	rdimm0, +}; + + +#endif |