blob: dbcd1ae6d92e3e890f25b577f36577300410694b [file] [log] [blame]
/*
* Copyright 2021 NXP
* SPDX-License-Identifier: BSD-3-Clause
*
*/
#ifndef _INPUT_H_
#define _INPUT_H_
enum dram_types {
DDR4,
DDR3,
LPDDR4,
LPDDR3,
LPDDR2,
DDR5,
};
enum dimm_types {
UDIMM,
SODIMM,
RDIMM,
LRDIMM,
NODIMM,
};
struct input_basic {
enum dram_types dram_type;
enum dimm_types dimm_type;
int lp4x_mode; /* 0x1 = lpddr4x mode, when dram_type is lpddr4
*/
/* not used for protocols other than lpddr4 */
int num_dbyte; /* number of dbytes physically instantiated */
int num_active_dbyte_dfi0; /* number of active dbytes to be
* controlled by dfi0
*/
int num_active_dbyte_dfi1; /* number of active dbytes to be
* controlled by dfi1. Not used for
* protocols other than lpddr3 and
* lpddr4
*/
int num_anib; /* number of anibs physically instantiated */
int num_rank_dfi0; /* number of ranks in dfi0 channel */
int num_rank_dfi1; /* number of ranks in dfi1 channel */
int dram_data_width; /* 4,8,16 or 32 depending on protocol and dram
* type
*/
int num_pstates;
int frequency; /* memclk frequency in mhz -- round up */
int pll_bypass; /* pll bypass enable */
int dfi_freq_ratio; /* selected dfi frequency ratio */
int dfi1exists; /* whether they phy config has dfi1 channel */
int train2d;
int hard_macro_ver;
int read_dbienable;
int dfi_mode; /* no longer used */
};
struct input_advanced {
int d4rx_preamble_length;
int d4tx_preamble_length;
int ext_cal_res_val; /* external pull-down resistor */
int is2ttiming;
int odtimpedance;
int tx_impedance;
int atx_impedance;
int mem_alert_en;
int mem_alert_puimp;
int mem_alert_vref_level;
int mem_alert_sync_bypass;
int dis_dyn_adr_tri;
int phy_mstr_train_interval;
int phy_mstr_max_req_to_ack;
int wdqsext;
int cal_interval;
int cal_once;
int dram_byte_swap;
int rx_en_back_off;
int train_sequence_ctrl;
int phy_gen2_umctl_opt;
int phy_gen2_umctl_f0rc5x;
int tx_slew_rise_dq;
int tx_slew_fall_dq;
int tx_slew_rise_ac;
int tx_slew_fall_ac;
int enable_high_clk_skew_fix;
int disable_unused_addr_lns;
int phy_init_sequence_num;
int cs_mode; /* rdimm */
int cast_cs_to_cid; /* rdimm */
};
struct input {
struct input_basic basic;
struct input_advanced adv;
unsigned int mr[7];
unsigned int cs_d0;
unsigned int cs_d1;
unsigned int mirror;
unsigned int odt[4];
unsigned int rcw[16];
unsigned int rcw3x;
unsigned int vref;
};
#endif