/* * 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