coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
raminit_iosav.c File Reference
#include <commonlib/helpers.h>
#include <types.h>
#include "raminit_native.h"
#include "raminit_common.h"
#include "raminit_tables.h"
#include "sandybridge.h"
Include dependency graph for raminit_iosav.c:

Go to the source code of this file.

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)
 

Variables

static unsigned int ssq_count = 0
 

Function Documentation

◆ 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:

◆ wait_for_iosav()

Variable Documentation

◆ ssq_count

unsigned int ssq_count = 0
static

Definition at line 14 of file raminit_iosav.c.

Referenced by iosav_run_queue(), and iosav_write_sequence().