15614e71bSYork Sun /* 234e026f9SYork Sun * Copyright 2008-2014 Freescale Semiconductor, Inc. 35614e71bSYork Sun * 4*5b8031ccSTom Rini * SPDX-License-Identifier: GPL-2.0 55614e71bSYork Sun */ 65614e71bSYork Sun 75614e71bSYork Sun #ifndef COMMON_TIMING_PARAMS_H 85614e71bSYork Sun #define COMMON_TIMING_PARAMS_H 95614e71bSYork Sun 105614e71bSYork Sun typedef struct { 115614e71bSYork Sun /* parameters to constrict */ 125614e71bSYork Sun 135614e71bSYork Sun unsigned int tckmin_x_ps; 145614e71bSYork Sun unsigned int tckmax_ps; 155614e71bSYork Sun unsigned int trcd_ps; 165614e71bSYork Sun unsigned int trp_ps; 175614e71bSYork Sun unsigned int tras_ps; 1834e026f9SYork Sun #if defined(CONFIG_SYS_FSL_DDR3) || defined(CONFIG_SYS_FSL_DDR4) 1934e026f9SYork Sun unsigned int taamin_ps; 2034e026f9SYork Sun #endif 215614e71bSYork Sun 2234e026f9SYork Sun #ifdef CONFIG_SYS_FSL_DDR4 2334e026f9SYork Sun unsigned int trfc1_ps; 2434e026f9SYork Sun unsigned int trfc2_ps; 2534e026f9SYork Sun unsigned int trfc4_ps; 2634e026f9SYork Sun unsigned int trrds_ps; 2734e026f9SYork Sun unsigned int trrdl_ps; 2834e026f9SYork Sun unsigned int tccdl_ps; 2934e026f9SYork Sun #else 305614e71bSYork Sun unsigned int twtr_ps; /* maximum = 63750 ps */ 315614e71bSYork Sun unsigned int trfc_ps; /* maximum = 255 ns + 256 ns + .75 ns 325614e71bSYork Sun = 511750 ps */ 335614e71bSYork Sun 345614e71bSYork Sun unsigned int trrd_ps; /* maximum = 63750 ps */ 3534e026f9SYork Sun unsigned int trtp_ps; /* byte 38, spd->trtp */ 3634e026f9SYork Sun #endif 3734e026f9SYork Sun unsigned int twr_ps; /* maximum = 63750 ps */ 385614e71bSYork Sun unsigned int trc_ps; /* maximum = 254 ns + .75 ns = 254750 ps */ 395614e71bSYork Sun 405614e71bSYork Sun unsigned int refresh_rate_ps; 415614e71bSYork Sun unsigned int extended_op_srt; 425614e71bSYork Sun 4334e026f9SYork Sun #if defined(CONFIG_SYS_FSL_DDR1) || defined(CONFIG_SYS_FSL_DDR2) 445614e71bSYork Sun unsigned int tis_ps; /* byte 32, spd->ca_setup */ 455614e71bSYork Sun unsigned int tih_ps; /* byte 33, spd->ca_hold */ 465614e71bSYork Sun unsigned int tds_ps; /* byte 34, spd->data_setup */ 475614e71bSYork Sun unsigned int tdh_ps; /* byte 35, spd->data_hold */ 485614e71bSYork Sun unsigned int tdqsq_max_ps; /* byte 44, spd->tdqsq */ 495614e71bSYork Sun unsigned int tqhs_ps; /* byte 45, spd->tqhs */ 5034e026f9SYork Sun #endif 515614e71bSYork Sun 525614e71bSYork Sun unsigned int ndimms_present; 5334e026f9SYork Sun unsigned int lowest_common_spd_caslat; 545614e71bSYork Sun unsigned int highest_common_derated_caslat; 555614e71bSYork Sun unsigned int additive_latency; 565614e71bSYork Sun unsigned int all_dimms_burst_lengths_bitmask; 575614e71bSYork Sun unsigned int all_dimms_registered; 585614e71bSYork Sun unsigned int all_dimms_unbuffered; 595614e71bSYork Sun unsigned int all_dimms_ecc_capable; 605614e71bSYork Sun 615614e71bSYork Sun unsigned long long total_mem; 625614e71bSYork Sun unsigned long long base_address; 635614e71bSYork Sun 645614e71bSYork Sun /* DDR3 RDIMM */ 655614e71bSYork Sun unsigned char rcw[16]; /* Register Control Word 0-15 */ 665614e71bSYork Sun } common_timing_params_t; 675614e71bSYork Sun 685614e71bSYork Sun #endif 69