coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
dramc_pi_api.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef _DRAMC_PI_API_MT8183_H
4 #define _DRAMC_PI_API_MT8183_H
5 
6 #include <types.h>
7 #include <soc/dramc_common.h>
8 #include <soc/emi.h>
9 
10 #define DATLAT_TAP_NUMBER 32
11 #define HW_REG_SHUFFLE_MAX 4
12 
13 #define DRAMC_BROADCAST_ON 0x1f
14 #define DRAMC_BROADCAST_OFF 0x0
15 #define TX_DQ_COARSE_TUNE_TO_FINE_TUNE_TAP 64
16 
17 #define IMP_LP4X_TERM_VREF_SEL 0x1b
18 #define IMP_DRVP_LP4X_UNTERM_VREF_SEL 0x1a
19 #define IMP_DRVN_LP4X_UNTERM_VREF_SEL 0x16
20 #define IMP_TRACK_LP4X_UNTERM_VREF_SEL 0x1a
21 #define MR23_DEFAULT_VALUE 0x3f
22 #define CA_TRAINING_NUM 10
23 
24 enum dram_te_op {
27 };
28 
29 enum {
30  PASS_RANGE_NA = 0x7fff
31 };
32 
33 enum {
35  GATING_GOLDEND_DQSCNT = 0x4646
36 };
37 
38 enum cke_type {
42 };
43 
44 typedef enum {
47 } cbt_freq;
48 
49 enum {
53 };
54 
55 enum {
61 };
62 
63 enum {
66 };
67 
68 struct reg_value {
71 };
72 
73 #define _SELPH_DQS_BITS(l, h) ((l << 0) | (l << 4) | (l << 8) | (l << 12) | \
74  (h << 16) | (h << 20) | (h << 24) | (h << 28))
75 
76 enum {
79  OEN_SHIFT = 16,
80 
89 };
90 
91 void dramc_get_rank_size(u64 *dram_rank_size);
92 void dramc_runtime_config(u32 rk_num);
93 void dramc_set_broadcast(u32 onoff);
95 u8 get_freq_fsq(u8 freq_group);
96 void dramc_init(const struct sdram_params *params, u8 freq_group,
97  struct dram_shared_data *shared);
98 void dramc_sw_impedance_save_reg(u8 freq_group,
99  const struct dram_impedance *impedance);
100 void dramc_sw_impedance_cal(const struct sdram_params *params, u8 term_option,
101  struct dram_impedance *impedance);
102 void dramc_apply_config_before_calibration(u8 freq_group, u32 cbt_mode);
103 void dramc_apply_config_after_calibration(const struct mr_value *mr, u32 rk_num);
104 int dramc_calibrate_all_channels(const struct sdram_params *pams,
105  u8 freq_group, struct mr_value *mr, bool run_dvfs);
106 void dramc_hw_gating_onoff(u8 chn, bool onoff);
107 void dramc_enable_phy_dcm(u8 chn, bool bEn);
108 void dramc_mode_reg_write(u8 chn, u8 mr_idx, u8 value);
109 u32 get_shu_freq(u8 shu);
110 void dramc_hw_dqsosc(u8 chn, u32 rk_num);
112 void get_dram_info_after_cal(u8 *density, u32 rk_num);
113 void set_mrr_pinmux_mapping(void);
114 void dramc_cke_fix_onoff(enum cke_type option, u8 chn);
115 void cbt_mrr_pinmux_mapping(void);
116 
117 #endif /* _DRAMC_PI_API_MT8183_H */
pte_t value
Definition: mmu.c:91
static struct sdram_info params
Definition: sdram_configs.c:83
#define BIT(nr)
Definition: ec_commands.h:45
void dramc_init(u32 channel, const struct mt8173_sdram_params *sdram_params)
@ TE_OP_WRITE_READ_CHECK
Definition: dramc_pi_api.h:84
@ TE_OP_READ_CHECK
Definition: dramc_pi_api.h:85
void dramc_runtime_config(u32 channel, const struct mt8173_sdram_params *sdram_params)
void dramc_get_rank_size(u64 *dram_rank_size)
Definition: emi.c:93
cke_type
Definition: dramc_pi_api.h:38
@ CKE_FIXON
Definition: dramc_pi_api.h:40
@ CKE_FIXOFF
Definition: dramc_pi_api.h:39
@ CKE_DYNAMIC
Definition: dramc_pi_api.h:41
void dramc_sw_impedance_cal(const struct sdram_params *params, u8 term_option, struct dram_impedance *impedance)
int dramc_calibrate_all_channels(const struct sdram_params *pams, u8 freq_group, struct mr_value *mr, bool run_dvfs)
void dramc_apply_config_after_calibration(const struct mr_value *mr, u32 rk_num)
void dramc_cke_fix_onoff(enum cke_type option, u8 chn)
@ SELPH_DQS0_3600
Definition: dramc_pi_api.h:87
@ SELPH_DQS1_2400
Definition: dramc_pi_api.h:84
@ SELPH_DQS0_3200
Definition: dramc_pi_api.h:85
@ SELPH_DQS1_3200
Definition: dramc_pi_api.h:86
@ SELPH_DQS1_3600
Definition: dramc_pi_api.h:88
@ DQ_DIV_SHIFT
Definition: dramc_pi_api.h:77
@ OEN_SHIFT
Definition: dramc_pi_api.h:79
@ DQ_DIV_MASK
Definition: dramc_pi_api.h:78
@ SELPH_DQS0_1600
Definition: dramc_pi_api.h:81
@ SELPH_DQS0_2400
Definition: dramc_pi_api.h:83
@ SELPH_DQS1_1600
Definition: dramc_pi_api.h:82
void get_dram_info_after_cal(u8 *density, u32 rk_num)
void dramc_hw_dqsosc(u8 chn, u32 rk_num)
cbt_freq
Definition: dramc_pi_api.h:44
@ CBT_LOW_FREQ
Definition: dramc_pi_api.h:45
@ CBT_HIGH_FREQ
Definition: dramc_pi_api.h:46
void set_mrr_pinmux_mapping(void)
Definition: emi.c:173
dram_te_op
Definition: dramc_pi_api.h:24
u32 dramc_get_broadcast(void)
Definition: emi.c:64
@ IMPCAL_STAGE_TRACKING
Definition: dramc_pi_api.h:52
@ IMPCAL_STAGE_DRVP
Definition: dramc_pi_api.h:50
@ IMPCAL_STAGE_DRVN
Definition: dramc_pi_api.h:51
@ PASS_RANGE_NA
Definition: dramc_pi_api.h:30
void dramc_dqs_precalculation_preset(void)
void dramc_mode_reg_write(u8 chn, u8 mr_idx, u8 value)
@ GATING_PATTERN_NUM
Definition: dramc_pi_api.h:34
@ GATING_GOLDEND_DQSCNT
Definition: dramc_pi_api.h:35
#define _SELPH_DQS_BITS(l, h)
Definition: dramc_pi_api.h:73
@ RX_DQS_CTL_LOOP
Definition: dramc_pi_api.h:59
@ DQS_GW_FINE_STEP
Definition: dramc_pi_api.h:58
@ DQS_GW_FINE_END
Definition: dramc_pi_api.h:57
@ DQS_GW_COARSE_STEP
Definition: dramc_pi_api.h:56
@ RX_DLY_DQSIENSTB_LOOP
Definition: dramc_pi_api.h:60
void cbt_mrr_pinmux_mapping(void)
Definition: emi.c:160
@ DLL_SLAVE
Definition: dramc_pi_api.h:65
@ DLL_MASTER
Definition: dramc_pi_api.h:64
void dramc_enable_phy_dcm(u8 chn, bool bEn)
void dramc_hw_gating_onoff(u8 chn, bool onoff)
void dramc_sw_impedance_save_reg(u8 freq_group, const struct dram_impedance *impedance)
u32 get_shu_freq(u8 shu)
Definition: emi.c:69
u8 get_freq_fsq(u8 freq_group)
void dramc_apply_config_before_calibration(u8 freq_group, u32 cbt_mode)
void dramc_set_broadcast(u32 onoff)
Definition: emi.c:59
uint64_t u64
Definition: stdint.h:54
uint32_t u32
Definition: stdint.h:51
uint8_t u8
Definition: stdint.h:45
Definition: emi.h:78
u32 * addr
Definition: dramc_pi_api.h:69
Defines the SDRAM parameter structure.
Definition: emi.h:15