![]() |
coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
|
#include <device/mmio.h>
#include <console/console.h>
#include <delay.h>
#include <string.h>
#include <types.h>
#include "raminit.h"
#include "x4x.h"
Go to the source code of this file.
Data Structures | |
struct | db_limit |
Macros | |
#define | WT_PATTERN_SIZE 80 |
#define | CONSISTENCY 10 |
#define | RT_PATTERN_SIZE 40 |
#define | RT_LOOPS 3 |
#define | N_SAMPLES 5 |
Enumerations | |
enum | training_modes { SUCCEEDING = 0 , FAILING = 1 } |
Functions | |
static void | print_dll_setting (const struct dll_setting *dll_setting, u8 default_verbose) |
static void | set_db (const struct sysinfo *s, struct dll_setting *dq_dqs_setting) |
static int | increment_dq_dqs (const struct sysinfo *s, struct dll_setting *dq_dqs_setting) |
static int | decrement_dq_dqs (const struct sysinfo *s, struct dll_setting *dq_dqs_setting) |
static u8 | test_dq_aligned (const struct sysinfo *s, const u8 channel) |
static int | find_dq_limit (const struct sysinfo *s, const u8 channel, struct dll_setting dq_setting[TOTAL_BYTELANES], u8 dq_lim[TOTAL_BYTELANES], const enum training_modes expected_result) |
int | do_write_training (struct sysinfo *s) |
static int | rt_increment_dqs (struct rt_dqs_setting *setting) |
static u8 | test_dqs_aligned (const struct sysinfo *s, const u8 channel) |
static int | rt_find_dqs_limit (struct sysinfo *s, u8 channel, struct rt_dqs_setting dqs_setting[TOTAL_BYTELANES], u8 dqs_lim[TOTAL_BYTELANES], const enum training_modes expected_result) |
int | do_read_training (struct sysinfo *s) |
static void | set_rank_write_level (struct sysinfo *s, u8 channel, u8 config, u8 config_rank, u8 target_rank, int wl_enable) |
static void | sample_dq (const struct sysinfo *s, u8 channel, u8 rank, u8 high_found[8]) |
static enum cb_err | increment_to_dqs_edge (struct sysinfo *s, u8 channel, u8 rank) |
void | search_write_leveling (struct sysinfo *s) |
Variables | |
static const u8 | max_tap [3] = {12, 10, 13} |
static const u32 | write_training_schedule [WT_PATTERN_SIZE] |
static const u32 | read_training_schedule [RT_PATTERN_SIZE] |
enum training_modes |
|
static |
Definition at line 102 of file dq_dqs.c.
References CB_ERR, CB_SUCCESS, dll_setting::clk_delay, dll_setting::coarse, max_tap, MEM_CLOCK_800MHz, dll_setting::pi, s, set_db(), and dll_setting::tap.
int do_read_training | ( | struct sysinfo * | s | ) |
Definition at line 421 of file dq_dqs.c.
References address, BIOS_CRIT, BIOS_DEBUG, BIOS_ERR, CB_ERR, CB_SUCCESS, FAILING, FOR_EACH_BYTELANE, FOR_EACH_POPULATED_CHANNEL, FOR_EACH_POPULATED_RANK_IN_CHANNEL, FOR_EACH_RANK_IN_CHANNEL, memset(), printk, RAM_DEBUG, read_training_schedule, rt_find_dqs_limit(), rt_increment_dqs(), RT_LOOPS, RT_PATTERN_SIZE, rt_set_dqs(), s, SUCCEEDING, test_address(), TOTAL_BYTELANES, TOTAL_CHANNELS, and write32p().
Referenced by do_raminit().
int do_write_training | ( | struct sysinfo * | s | ) |
Definition at line 253 of file dq_dqs.c.
References BIOS_CRIT, BIOS_DEBUG, BIOS_ERR, BIOS_WARNING, CB_ERR, CB_SUCCESS, CONSISTENCY, dqset(), FAILING, find_dq_limit(), FOR_EACH_BYTELANE, FOR_EACH_POPULATED_CHANNEL, increment_dq_dqs(), memcpy(), memset(), print_dll_setting(), printk, RAM_DEBUG, s, SUCCEEDING, and TOTAL_BYTELANES.
Referenced by do_raminit().
|
static |
Definition at line 198 of file dq_dqs.c.
References BIOS_CRIT, CB_ERR, CB_SUCCESS, CONSISTENCY, dqset(), FAILING, FOR_EACH_BYTELANE, increment_dq_dqs(), memset(), printk, RAM_DEBUG, s, test_dq_aligned(), and TOTAL_BYTELANES.
Referenced by do_write_training().
|
static |
Definition at line 77 of file dq_dqs.c.
References CB_ERR, CB_SUCCESS, dll_setting::clk_delay, dll_setting::coarse, max_tap, MEM_CLOCK_800MHz, dll_setting::pi, s, set_db(), and dll_setting::tap.
Referenced by do_write_training(), find_dq_limit(), and search_write_leveling().
Definition at line 612 of file dq_dqs.c.
References address, FOR_EACH_BYTELANE, mchbar_read8(), memset(), N_SAMPLES, test_address(), TOTAL_BYTELANES, udelay(), and write32p().
Referenced by search_write_leveling().
|
static |
Definition at line 11 of file dq_dqs.c.
References BIOS_DEBUG, dll_setting::clk_delay, dll_setting::coarse, dll_setting::db_en, dll_setting::db_sel, dll_setting::pi, printk, RAM_DEBUG, and dll_setting::tap.
Referenced by do_write_training().
|
static |
Definition at line 367 of file dq_dqs.c.
References BIOS_CRIT, CB_ERR, CB_SUCCESS, FOR_EACH_BYTELANE, printk, RAM_DEBUG, rt_increment_dqs(), rt_set_dqs(), s, SUCCEEDING, and test_dqs_aligned().
Referenced by do_read_training().
|
static |
Definition at line 331 of file dq_dqs.c.
References CB_ERR, CB_SUCCESS, rt_dqs_setting::pi, and rt_dqs_setting::tap.
Referenced by do_read_training(), and rt_find_dqs_limit().
Definition at line 740 of file dq_dqs.c.
References BIOS_DEBUG, ch, config, count, die(), dqset(), FOR_EACH_POPULATED_CHANNEL, FOR_EACH_POPULATED_CHANNEL_AND_BYTELANE, FOR_EACH_POPULATED_RANK_IN_CHANNEL, increment_dq_dqs(), increment_to_dqs_edge(), mchbar_clrbits8, mchbar_clrsetbits16(), mchbar_clrsetbits32(), mchbar_clrsetbits8(), mchbar_setbits8, MEM_CLOCK_1066MHz, MEM_CLOCK_1333MHz, MEM_CLOCK_800MHz, NORMALOP_CMD, printk, s, send_jedec_cmd(), and set_rank_write_level().
Referenced by do_raminit().
|
static |
Definition at line 28 of file dq_dqs.c.
References dll_setting::db_en, dll_setting::db_sel, MEM_CLOCK_1066MHz, MEM_CLOCK_1333MHz, MEM_CLOCK_800MHz, dll_setting::pi, db_limit::pi0, db_limit::pi1, s, dll_setting::tap, db_limit::tap0, and db_limit::tap1.
Referenced by decrement_dq_dqs(), and increment_dq_dqs().
|
static |
Definition at line 505 of file dq_dqs.c.
References BIOS_WARNING, config, config_rank(), ddr3_emrs1_rtt_nom_config, EMRS1_CMD, printk, RAM_DEBUG, s, and send_jedec_cmd().
Referenced by search_write_leveling().
Definition at line 157 of file dq_dqs.c.
References address, count, FOR_EACH_BYTELANE, FOR_EACH_POPULATED_RANK_IN_CHANNEL, mchbar_write32(), pattern, read32p(), s, test_address(), write32(), write32p(), write_training_schedule, and WT_PATTERN_SIZE.
Referenced by find_dq_limit().
Definition at line 344 of file dq_dqs.c.
References address, FOR_EACH_BYTELANE, FOR_EACH_POPULATED_RANK_IN_CHANNEL, read32p(), read_training_schedule, RT_PATTERN_SIZE, s, test_address(), and write32().
Referenced by rt_find_dqs_limit().
|
static |
Definition at line 75 of file dq_dqs.c.
Referenced by decrement_dq_dqs(), and increment_dq_dqs().
|
static |
Definition at line 318 of file dq_dqs.c.
Referenced by do_read_training(), and test_dqs_aligned().
|
static |
Definition at line 129 of file dq_dqs.c.
Referenced by test_dq_aligned().