coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
raminit_common.h File Reference
#include <stdint.h>
Include dependency graph for raminit_common.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  iosav_ssq
 
union  gdcr_rx_reg
 
union  gdcr_tx_reg
 
union  gdcr_cmd_pi_coding_reg
 
union  gdcr_training_mod_reg
 
union  comp_ofst_1_reg
 
union  tc_dbp_reg
 
union  tc_rap_reg
 
union  tc_rwp_reg
 
union  tc_othp_reg
 
union  tc_dtp_reg
 
union  tc_rfp_reg
 
union  tc_rftp_reg
 
union  tc_srftp_reg
 
struct  odtmap_st
 
struct  dimm_info_st
 
struct  ram_rank_timings
 
struct  ram_rank_timings::ram_lane_timings
 
struct  ramctr_timing_st
 

Macros

#define BASEFREQ   133
 
#define tDLLK   512
 
#define NUM_CHANNELS   2
 
#define NUM_SLOTRANKS   4
 
#define NUM_SLOTS   2
 
#define NUM_LANES   9
 
#define IOSAV_MRS   (0xf000)
 
#define IOSAV_PRE   (0xf002)
 
#define IOSAV_ZQCS   (0xf003)
 
#define IOSAV_ACT   (0xf006)
 
#define IOSAV_RD   (0xf105)
 
#define IOSAV_NOP_ALT   (0xf107)
 
#define IOSAV_WR   (0xf201)
 
#define IOSAV_NOP   (0xf207)
 
#define SSQ_NA   0 /* Non-data */
 
#define SSQ_RD   1 /* Read */
 
#define SSQ_WR   2 /* Write */
 
#define SSQ_RW   3 /* Read and write */
 
#define NUM_PATTERNS   4
 
#define MRC_CACHE_VERSION   5
 
#define SOUTHBRIDGE   PCI_DEV(0, 0x1f, 0)
 
#define FOR_ALL_LANES   for (lane = 0; lane < ctrl->lanes; lane++)
 
#define FOR_ALL_CHANNELS   for (channel = 0; channel < NUM_CHANNELS; channel++)
 
#define FOR_ALL_POPULATED_RANKS   for (slotrank = 0; slotrank < NUM_SLOTRANKS; slotrank++) if (ctrl->rankmap[channel] & (1 << slotrank))
 
#define FOR_ALL_POPULATED_CHANNELS   for (channel = 0; channel < NUM_CHANNELS; channel++) if (ctrl->rankmap[channel])
 
#define MAX_EDGE_TIMING   71
 
#define MAX_TX_DQ   127
 
#define MAX_TX_DQS   511
 
#define MAX_RCVEN   127
 
#define MAX_CAS   18
 
#define MIN_CAS   4
 
#define QCLK_PI   64
 
#define MAKE_ERR   ((channel << 16) | (slotrank << 8) | 1)
 
#define GET_ERR_CHANNEL(x)   (x >> 16)
 

Typedefs

typedef struct ramctr_timing_st ramctr_timing
 
typedef struct odtmap_st odtmap
 
typedef struct dimm_info_st dimm_info
 

Enumerations

enum  power_down_mode {
  PDM_NONE = 0 , PDM_APD = 1 , PDM_PPD = 2 , PDM_APD_PPD = 3 ,
  PDM_DLL_OFF = 6 , PDM_APD_DLL_OFF = 7
}
 

Functions

void iosav_write_sequence (const int ch, const struct iosav_ssq *seq, const unsigned int length)
 
void iosav_run_queue (const int ch, const u8 loops, const u8 as_timer)
 
void wait_for_iosav (int channel)
 
void iosav_run_once_and_wait (const int ch)
 
void iosav_write_zqcs_sequence (int channel, int slotrank, u32 gap, u32 post, u32 wrap)
 
void iosav_write_prea_sequence (int channel, int slotrank, u32 post, u32 wrap)
 
void iosav_write_read_mpr_sequence (int channel, int slotrank, u32 tMOD, u32 loops, u32 gap, u32 loops2, u32 post2)
 
void iosav_write_prea_act_read_sequence (ramctr_timing *ctrl, int channel, int slotrank)
 
void iosav_write_jedec_write_leveling_sequence (ramctr_timing *ctrl, int channel, int slotrank, int bank, u32 mr1reg)
 
void iosav_write_misc_write_sequence (ramctr_timing *ctrl, int channel, int slotrank, u32 gap0, u32 loops0, u32 gap1, u32 loops2, u32 wrap2)
 
void iosav_write_command_training_sequence (ramctr_timing *ctrl, int channel, int slotrank, unsigned int address)
 
void iosav_write_data_write_sequence (ramctr_timing *ctrl, int channel, int slotrank)
 
void iosav_write_aggressive_write_read_sequence (ramctr_timing *ctrl, int channel, int slotrank)
 
void iosav_write_memory_test_sequence (ramctr_timing *ctrl, int channel, int slotrank)
 
void dram_mrscommands (ramctr_timing *ctrl)
 
void program_timings (ramctr_timing *ctrl, int channel)
 
void dram_find_common_params (ramctr_timing *ctrl)
 
void dram_xover (ramctr_timing *ctrl)
 
void dram_timing_regs (ramctr_timing *ctrl)
 
void dram_dimm_mapping (ramctr_timing *ctrl)
 
void dram_dimm_set_mapping (ramctr_timing *ctrl, int training)
 
void dram_zones (ramctr_timing *ctrl, int training)
 
void dram_memorymap (ramctr_timing *ctrl, int me_uma_size)
 
void dram_jedecreset (ramctr_timing *ctrl)
 
int receive_enable_calibration (ramctr_timing *ctrl)
 
int write_training (ramctr_timing *ctrl)
 
int command_training (ramctr_timing *ctrl)
 
int read_mpr_training (ramctr_timing *ctrl)
 
int aggressive_read_training (ramctr_timing *ctrl)
 
int aggressive_write_training (ramctr_timing *ctrl)
 
void normalize_training (ramctr_timing *ctrl)
 
int channel_test (ramctr_timing *ctrl)
 
void set_scrambling_seed (ramctr_timing *ctrl)
 
void set_wmm_behavior (const u32 cpu)
 
void prepare_training (ramctr_timing *ctrl)
 
void set_read_write_timings (ramctr_timing *ctrl)
 
void set_normal_operation (ramctr_timing *ctrl)
 
void final_registers (ramctr_timing *ctrl)
 
void restore_timings (ramctr_timing *ctrl)
 
int try_init_dram_ddr3 (ramctr_timing *ctrl, int fast_boot, int s3resume, int me_uma_size)
 
void channel_scrub (ramctr_timing *ctrl)
 
bool get_host_ecc_cap (void)
 
bool get_host_ecc_forced (void)
 

Macro Definition Documentation

◆ BASEFREQ

#define BASEFREQ   133

Definition at line 8 of file raminit_common.h.

◆ FOR_ALL_CHANNELS

#define FOR_ALL_CHANNELS   for (channel = 0; channel < NUM_CHANNELS; channel++)

Definition at line 425 of file raminit_common.h.

◆ FOR_ALL_LANES

#define FOR_ALL_LANES   for (lane = 0; lane < ctrl->lanes; lane++)

Definition at line 424 of file raminit_common.h.

◆ FOR_ALL_POPULATED_CHANNELS

#define FOR_ALL_POPULATED_CHANNELS   for (channel = 0; channel < NUM_CHANNELS; channel++) if (ctrl->rankmap[channel])

Definition at line 427 of file raminit_common.h.

◆ FOR_ALL_POPULATED_RANKS

#define FOR_ALL_POPULATED_RANKS   for (slotrank = 0; slotrank < NUM_SLOTRANKS; slotrank++) if (ctrl->rankmap[channel] & (1 << slotrank))

Definition at line 426 of file raminit_common.h.

◆ GET_ERR_CHANNEL

#define GET_ERR_CHANNEL (   x)    (x >> 16)

Definition at line 443 of file raminit_common.h.

◆ IOSAV_ACT

#define IOSAV_ACT   (0xf006)

Definition at line 20 of file raminit_common.h.

◆ IOSAV_MRS

#define IOSAV_MRS   (0xf000)

Definition at line 17 of file raminit_common.h.

◆ IOSAV_NOP

#define IOSAV_NOP   (0xf207)

Definition at line 24 of file raminit_common.h.

◆ IOSAV_NOP_ALT

#define IOSAV_NOP_ALT   (0xf107)

Definition at line 22 of file raminit_common.h.

◆ IOSAV_PRE

#define IOSAV_PRE   (0xf002)

Definition at line 18 of file raminit_common.h.

◆ IOSAV_RD

#define IOSAV_RD   (0xf105)

Definition at line 21 of file raminit_common.h.

◆ IOSAV_WR

#define IOSAV_WR   (0xf201)

Definition at line 23 of file raminit_common.h.

◆ IOSAV_ZQCS

#define IOSAV_ZQCS   (0xf003)

Definition at line 19 of file raminit_common.h.

◆ MAKE_ERR

#define MAKE_ERR   ((channel << 16) | (slotrank << 8) | 1)

Definition at line 442 of file raminit_common.h.

◆ MAX_CAS

#define MAX_CAS   18

Definition at line 432 of file raminit_common.h.

◆ MAX_EDGE_TIMING

#define MAX_EDGE_TIMING   71

Definition at line 428 of file raminit_common.h.

◆ MAX_RCVEN

#define MAX_RCVEN   127

Definition at line 431 of file raminit_common.h.

◆ MAX_TX_DQ

#define MAX_TX_DQ   127

Definition at line 429 of file raminit_common.h.

◆ MAX_TX_DQS

#define MAX_TX_DQS   511

Definition at line 430 of file raminit_common.h.

◆ MIN_CAS

#define MIN_CAS   4

Definition at line 433 of file raminit_common.h.

◆ MRC_CACHE_VERSION

#define MRC_CACHE_VERSION   5

Definition at line 307 of file raminit_common.h.

◆ NUM_CHANNELS

#define NUM_CHANNELS   2

Definition at line 11 of file raminit_common.h.

◆ NUM_LANES

#define NUM_LANES   9

Definition at line 14 of file raminit_common.h.

◆ NUM_PATTERNS

#define NUM_PATTERNS   4

Definition at line 302 of file raminit_common.h.

◆ NUM_SLOTRANKS

#define NUM_SLOTRANKS   4

Definition at line 12 of file raminit_common.h.

◆ NUM_SLOTS

#define NUM_SLOTS   2

Definition at line 13 of file raminit_common.h.

◆ QCLK_PI

#define QCLK_PI   64

Definition at line 440 of file raminit_common.h.

◆ SOUTHBRIDGE

#define SOUTHBRIDGE   PCI_DEV(0, 0x1f, 0)

Definition at line 422 of file raminit_common.h.

◆ SSQ_NA

#define SSQ_NA   0 /* Non-data */

Definition at line 27 of file raminit_common.h.

◆ SSQ_RD

#define SSQ_RD   1 /* Read */

Definition at line 28 of file raminit_common.h.

◆ SSQ_RW

#define SSQ_RW   3 /* Read and write */

Definition at line 30 of file raminit_common.h.

◆ SSQ_WR

#define SSQ_WR   2 /* Write */

Definition at line 29 of file raminit_common.h.

◆ tDLLK

#define tDLLK   512

Definition at line 9 of file raminit_common.h.

Typedef Documentation

◆ dimm_info

typedef struct dimm_info_st dimm_info

◆ odtmap

typedef struct odtmap_st odtmap

◆ ramctr_timing

Definition at line 1 of file raminit_common.h.

Enumeration Type Documentation

◆ power_down_mode

Enumerator
PDM_NONE 
PDM_APD 
PDM_PPD 
PDM_APD_PPD 
PDM_DLL_OFF 
PDM_APD_DLL_OFF 

Definition at line 309 of file raminit_common.h.

Function Documentation

◆ aggressive_read_training()

◆ aggressive_write_training()

◆ channel_scrub()

◆ channel_test()

◆ command_training()

int command_training ( ramctr_timing ctrl)

Definition at line 2057 of file raminit_common.c.

References BIOS_EMERG, DIV_ROUND_UP, fill_pattern5(), FOR_ALL_POPULATED_CHANNELS, MIN, printk, printram, program_timings(), ramctr_timing_st::rankmap, reprogram_320c(), ramctr_timing_st::tCMD, and try_cmd_stretch().

Referenced by try_init_dram_ddr3().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dram_dimm_mapping()

void dram_dimm_mapping ( ramctr_timing ctrl)

◆ dram_dimm_set_mapping()

void dram_dimm_set_mapping ( ramctr_timing ctrl,
int  training 
)

Definition at line 290 of file raminit_common.c.

References ecc, ramctr_timing_st::ecc_enabled, FOR_ALL_CHANNELS, MAD_DIMM, ramctr_timing_st::mad_dimm, mchbar_write32(), and udelay().

Referenced by try_init_dram_ddr3().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dram_find_common_params()

◆ dram_jedecreset()

void dram_jedecreset ( ramctr_timing ctrl)

Definition at line 539 of file raminit_common.c.

References FOR_ALL_CHANNELS, IOSAV_STATUS_ch, MC_INIT_STATE, MC_INIT_STATE_ch, MC_INIT_STATE_G, mchbar_clrbits32, mchbar_read32(), mchbar_setbits32, mchbar_write32(), ramctr_timing_st::rankmap, RCOMP_TIMER, udelay(), and write_reset().

Referenced by reprogram_320c(), and try_init_dram_ddr3().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dram_memorymap()

void dram_memorymap ( ramctr_timing ctrl,
int  me_uma_size 
)

Definition at line 369 of file raminit_common.c.

References BDSM, BGSM, BIOS_DEBUG, ramctr_timing_st::channel_size_mb, DEFAULT_PCI_MMIO_SIZE, GGC, HOST_BRIDGE, MAX, ME_STLEN_EN, MELCK, MESEG_BASE, MESEG_MASK, MIN, pci_read_config16(), pci_read_config32(), pci_write_config32(), printk, REMAPBASE, REMAPLIMIT, TOLUD, TOM, TOUUD, TSEGMB, and val.

Referenced by try_init_dram_ddr3().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dram_mrscommands()

◆ dram_timing_regs()

◆ dram_xover()

void dram_xover ( ramctr_timing ctrl)

Definition at line 101 of file raminit_common.c.

References FOR_ALL_CHANNELS, GDCRCKPICODE_ch, GDCRCMDPICODING_ch, get_XOVER_CLK(), get_XOVER_CMD(), mchbar_write32(), printram, and ramctr_timing_st::rankmap.

Referenced by try_init_dram_ddr3().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dram_zones()

void dram_zones ( ramctr_timing ctrl,
int  training 
)

Definition at line 308 of file raminit_common.c.

References ramctr_timing_st::channel_size_mb, MAD_CHNL, MAD_ZR, mchbar_read32(), mchbar_write32(), and val.

Referenced by init_dram_ddr3(), and try_init_dram_ddr3().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ final_registers()

◆ get_host_ecc_cap()

bool get_host_ecc_cap ( void  )

Definition at line 360 of file raminit_common.c.

References CAPID0_A, HOST_BRIDGE, and pci_read_config32().

Referenced by reinit_ctrl().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_host_ecc_forced()

bool get_host_ecc_forced ( void  )

Definition at line 347 of file raminit_common.c.

References CAPID0_A, HOST_BRIDGE, and pci_read_config32().

Referenced by reinit_ctrl().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ iosav_run_once_and_wait()

◆ iosav_run_queue()

void iosav_run_queue ( const int  ch,
const u8  loops,
const u8  as_timer 
)

Definition at line 28 of file raminit_iosav.c.

References ch, IOSAV_SEQ_CTL_ch, mchbar_write32(), and ssq_count.

Referenced by channel_scrub(), dram_mrscommands(), iosav_run_once_and_wait(), and write_reset().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ iosav_write_aggressive_write_read_sequence()

void iosav_write_aggressive_write_read_sequence ( ramctr_timing ctrl,
int  channel,
int  slotrank 
)

◆ iosav_write_command_training_sequence()

void iosav_write_command_training_sequence ( ramctr_timing ctrl,
int  channel,
int  slotrank,
unsigned int  address 
)

◆ iosav_write_data_write_sequence()

void iosav_write_data_write_sequence ( ramctr_timing ctrl,
int  channel,
int  slotrank 
)

◆ iosav_write_jedec_write_leveling_sequence()

void iosav_write_jedec_write_leveling_sequence ( ramctr_timing ctrl,
int  channel,
int  slotrank,
int  bank,
u32  mr1reg 
)

Definition at line 298 of file raminit_iosav.c.

References ARRAY_SIZE, iosav_ssq::bank, ramctr_timing_st::CAS, iosav_ssq::command, ramctr_timing_st::CWL, IOSAV_MRS, IOSAV_NOP, IOSAV_NOP_ALT, iosav_write_sequence(), iosav_ssq::sp_cmd_ctrl, SSQ_NA, SSQ_RD, SSQ_WR, ramctr_timing_st::tMOD, and ramctr_timing_st::tWLO.

Referenced by write_level_rank().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ iosav_write_memory_test_sequence()

void iosav_write_memory_test_sequence ( ramctr_timing ctrl,
int  channel,
int  slotrank 
)

Definition at line 776 of file raminit_iosav.c.

References ARRAY_SIZE, iosav_ssq::command, IOSAV_ACT, IOSAV_PRE, IOSAV_RD, IOSAV_WR, iosav_write_sequence(), iosav_ssq::sp_cmd_ctrl, SSQ_NA, SSQ_RD, and SSQ_WR.

Referenced by channel_test().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ iosav_write_misc_write_sequence()

void iosav_write_misc_write_sequence ( ramctr_timing ctrl,
int  channel,
int  slotrank,
u32  gap0,
u32  loops0,
u32  gap1,
u32  loops2,
u32  wrap2 
)

Definition at line 385 of file raminit_iosav.c.

References ARRAY_SIZE, iosav_ssq::command, ramctr_timing_st::CWL, IOSAV_ACT, IOSAV_NOP, IOSAV_WR, iosav_write_sequence(), iosav_ssq::sp_cmd_ctrl, SSQ_NA, SSQ_WR, ramctr_timing_st::tRCD, and ramctr_timing_st::tWTR.

Referenced by test_tx_dq(), and train_write_flyby().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ iosav_write_prea_act_read_sequence()

void iosav_write_prea_act_read_sequence ( ramctr_timing ctrl,
int  channel,
int  slotrank 
)

Definition at line 201 of file raminit_iosav.c.

References ARRAY_SIZE, ramctr_timing_st::CAS, iosav_ssq::command, IOSAV_ACT, IOSAV_PRE, IOSAV_RD, iosav_write_sequence(), MAX, iosav_ssq::sp_cmd_ctrl, SSQ_NA, SSQ_RD, ramctr_timing_st::tFAW, ramctr_timing_st::tRP, ramctr_timing_st::tRRD, and ramctr_timing_st::tRTP.

Referenced by test_tx_dq().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ iosav_write_prea_sequence()

void iosav_write_prea_sequence ( int  channel,
int  slotrank,
u32  post,
u32  wrap 
)

Definition at line 79 of file raminit_iosav.c.

References ARRAY_SIZE, iosav_ssq::command, IOSAV_PRE, iosav_write_sequence(), iosav_ssq::sp_cmd_ctrl, and SSQ_NA.

Referenced by receive_enable_calibration(), and tx_dq_write_leveling().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ iosav_write_read_mpr_sequence()

void iosav_write_read_mpr_sequence ( int  channel,
int  slotrank,
u32  tMOD,
u32  loops,
u32  gap,
u32  loops2,
u32  post2 
)

Definition at line 108 of file raminit_iosav.c.

References ARRAY_SIZE, iosav_ssq::command, IOSAV_MRS, IOSAV_RD, iosav_write_sequence(), iosav_ssq::sp_cmd_ctrl, SSQ_NA, and SSQ_RD.

Referenced by find_predefined_pattern(), find_read_mpr_margin(), and test_rcven().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ iosav_write_sequence()

◆ iosav_write_zqcs_sequence()

void iosav_write_zqcs_sequence ( int  channel,
int  slotrank,
u32  gap,
u32  post,
u32  wrap 
)

Definition at line 51 of file raminit_iosav.c.

References ARRAY_SIZE, iosav_ssq::command, iosav_write_sequence(), IOSAV_ZQCS, iosav_ssq::sp_cmd_ctrl, and SSQ_NA.

Referenced by disable_refresh_machine(), dram_mrscommands(), jedec_write_leveling(), and write_reset().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ normalize_training()

◆ prepare_training()

void prepare_training ( ramctr_timing ctrl)

Definition at line 2738 of file raminit_common.c.

References FOR_ALL_POPULATED_CHANNELS, mchbar_setbits32, TC_RAP_ch, udelay(), and wait_for_iosav().

Referenced by try_init_dram_ddr3().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ program_timings()

void program_timings ( ramctr_timing ctrl,
int  channel 
)

Definition at line 910 of file raminit_common.c.

References BIOS_ERR, CCC_MAX_PI, gdcr_cmd_pi_coding_reg::cmd_logic_delay, gdcr_cmd_pi_coding_reg::cmd_pi_code, gdcr_cmd_pi_coding_reg::ctl_logic_delay_d0, gdcr_cmd_pi_coding_reg::ctl_logic_delay_d1, gdcr_cmd_pi_coding_reg::ctl_pi_code_d0, gdcr_cmd_pi_coding_reg::ctl_pi_code_d1, FOR_ALL_LANES, FOR_ALL_POPULATED_RANKS, GDCRCKLOGICDELAY_ch, GDCRCKPICODE_ch, GDCRCMDPICODING_ch, GDCRRX, GDCRTX, get_XOVER_CLK(), get_XOVER_CMD(), ram_rank_timings::io_latency, lane_base, ram_rank_timings::lanes, MAX, mchbar_read32(), mchbar_write32(), NUM_SLOTS, ramctr_timing_st::pi_code_offset, ram_rank_timings::pi_coding, printk, QCLK_PI, ramctr_timing_st::rankmap, gdcr_rx_reg::raw, gdcr_tx_reg::raw, gdcr_cmd_pi_coding_reg::raw, ram_rank_timings::ram_lane_timings::rcven, rcven(), gdcr_rx_reg::rcven_pi_code, ram_rank_timings::roundtrip_latency, ram_rank_timings::ram_lane_timings::rx_dqs_n, ram_rank_timings::ram_lane_timings::rx_dqs_p, SC_IO_LATENCY_ch, SC_ROUNDT_LAT_ch, ramctr_timing_st::timings, ram_rank_timings::ram_lane_timings::tx_dq, gdcr_tx_reg::tx_dq_pi_code, and ram_rank_timings::ram_lane_timings::tx_dqs.

Referenced by aggressive_read_training(), aggressive_write_training(), command_training(), find_agrsv_read_margin(), find_predefined_pattern(), find_rcven_pi_coarse(), find_read_mpr_margin(), find_roundtrip_latency(), fine_tune_rcven_pi(), normalize_training(), read_mpr_training(), receive_enable_calibration(), restore_timings(), test_command_training(), try_cmd_stretch(), tx_dq_write_leveling(), write_level_rank(), and write_training().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_mpr_training()

◆ receive_enable_calibration()

◆ restore_timings()

◆ set_normal_operation()

void set_normal_operation ( ramctr_timing ctrl)

Definition at line 2790 of file raminit_common.c.

References FOR_ALL_POPULATED_CHANNELS, MC_INIT_STATE_ch, mchbar_clrbits32, mchbar_write32(), ramctr_timing_st::rankmap, and TC_RAP_ch.

Referenced by init_dram_ddr3().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_read_write_timings()

◆ set_scrambling_seed()

void set_scrambling_seed ( ramctr_timing ctrl)

Definition at line 2712 of file raminit_common.c.

References FOR_ALL_POPULATED_CHANNELS, mchbar_clrbits32, mchbar_write32(), NUM_CHANNELS, SCHED_CBIT_ch, SCRAMBLING_SEED_1_ch, SCRAMBLING_SEED_2_HI_ch, and SCRAMBLING_SEED_2_LO_ch.

Referenced by init_dram_ddr3().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_wmm_behavior()

void set_wmm_behavior ( const u32  cpu)

Definition at line 2729 of file raminit_common.c.

References IS_SANDY_CPU, IS_SANDY_CPU_D0, IS_SANDY_CPU_D1, mchbar_write32(), and SC_WDBWM.

Referenced by try_init_dram_ddr3().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ try_init_dram_ddr3()

◆ wait_for_iosav()

◆ write_training()

int write_training ( ramctr_timing ctrl)

Definition at line 1844 of file raminit_common.c.

References fill_pattern0(), FOR_ALL_CHANNELS, FOR_ALL_POPULATED_CHANNELS, FOR_ALL_POPULATED_RANKS, jedec_write_leveling(), mchbar_setbits32, printram, program_timings(), TC_RWP_ch, train_write_flyby(), and tx_dq_write_leveling().

Referenced by try_init_dram_ddr3().

Here is the call graph for this function:
Here is the caller graph for this function: