![]() |
coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
|
#include <stdint.h>
#include <device/mmio.h>
#include <pc80/mc146818rtc.h>
#include <console/console.h>
#include "gm45.h"
Go to the source code of this file.
Data Structures | |
struct | address_bunch_t |
struct | read_timing_t |
struct | write_timing_t |
Functions | |
static void | print_read_timing (const int msg_lvl, const char *const msg, const int lane, const int channel, const read_timing_t *const timing) |
static int | normalize_read_timing (read_timing_t *const timing) |
static int | program_read_timing (const int ch, const int lane, read_timing_t *const timing) |
static int | read_training_test (const int channel, const int lane, const address_bunch_t *const addresses) |
static int | read_training_find_lower (const int channel, const int lane, const address_bunch_t *const addresses, read_timing_t *const lower) |
static int | read_training_find_upper (const int channel, const int lane, const address_bunch_t *const addresses, read_timing_t *const upper) |
static void | read_training_per_lane (const int channel, const int lane, const address_bunch_t *const addresses) |
static void | perform_read_training (const dimminfo_t *const dimms) |
static void | read_training_store_results (void) |
static void | read_training_restore_results (void) |
void | raminit_read_training (const dimminfo_t *const dimms, const int s3resume) |
static void | print_write_timing (const int msg_lvl, const char *const msg, const int group, const int channel, const write_timing_t *const timing) |
static int | normalize_write_timing (write_timing_t *const timing) |
static int | program_write_timing (const int ch, const int group, write_timing_t *const timing, int memclk1067) |
static int | write_training_test (const address_bunch_t *const addresses, const u32 *const masks) |
static int | write_training_find_lower (const int ch, const int group, const address_bunch_t *const addresses, const u32 masks[][2], const int memclk1067, write_timing_t *const lower) |
static int | write_training_find_upper (const int ch, const int group, const address_bunch_t *const addresses, const u32 masks[][2], const int memclk1067, write_timing_t *const upper) |
static void | write_training_per_group (const int ch, const int group, const address_bunch_t *const addresses, const u32 masks[][2], const int memclk1067) |
static void | perform_write_training (const int memclk1067, const dimminfo_t *const dimms) |
static void | write_training_store_results (void) |
static void | write_training_restore_results (const int memclk1067) |
void | raminit_write_training (const mem_clock_t ddr3clock, const dimminfo_t *const dimms, const int s3resume) |
Variables | |
static const u32 | read_training_schedule [] |
static const u32 | write_training_schedule [] |
static const u32 | write_training_bytelane_masks_abc [2][4][2] |
static const u32 | write_training_bytelane_masks_f [4][2] |
Definition at line 15 of file raminit_read_write_training.c.
#define CxRDTy_P | ( | p | ) | (((p) << CxRDTy_P_SHIFT) & CxRDTy_P_MASK) |
Definition at line 21 of file raminit_read_write_training.c.
#define CxRDTy_P_MASK (0x7 << CxRDTy_P_SHIFT) |
Definition at line 20 of file raminit_read_write_training.c.
#define CxRDTy_P_SHIFT 16 |
Definition at line 19 of file raminit_read_write_training.c.
#define CxRDTy_T | ( | t | ) | (((t) << CxRDTy_T_SHIFT) & CxRDTy_T_MASK) |
Definition at line 18 of file raminit_read_write_training.c.
#define CxRDTy_T_MASK (0xf << CxRDTy_T_SHIFT) |
Definition at line 17 of file raminit_read_write_training.c.
#define CxRDTy_T_SHIFT 20 |
Definition at line 16 of file raminit_read_write_training.c.
#define CxWRTy_ABOVE_D (0x1 << CxWRTy_D_SHIFT) |
Definition at line 289 of file raminit_read_write_training.c.
#define CxWRTy_BELOW_D (0x3 << CxWRTy_D_SHIFT) |
Definition at line 288 of file raminit_read_write_training.c.
#define CxWRTy_D_MASK (0x3 << CxWRTy_D_SHIFT) |
Definition at line 287 of file raminit_read_write_training.c.
#define CxWRTy_D_SHIFT 16 |
Definition at line 286 of file raminit_read_write_training.c.
#define CxWRTy_F | ( | f | ) | (((f) << CxWRTy_F_SHIFT) & CxWRTy_F_MASK) |
Definition at line 285 of file raminit_read_write_training.c.
#define CxWRTy_F_MASK (0x3 << CxWRTy_F_SHIFT) |
Definition at line 284 of file raminit_read_write_training.c.
#define CxWRTy_F_SHIFT 18 |
Definition at line 283 of file raminit_read_write_training.c.
#define CxWRTy_P | ( | p | ) | (((p) << CxWRTy_P_SHIFT) & CxWRTy_P_MASK) |
Definition at line 282 of file raminit_read_write_training.c.
#define CxWRTy_P_MASK (0x7 << CxWRTy_P_SHIFT) |
Definition at line 281 of file raminit_read_write_training.c.
#define CxWRTy_P_SHIFT 24 |
Definition at line 280 of file raminit_read_write_training.c.
#define CxWRTy_T | ( | t | ) | (((t) << CxWRTy_T_SHIFT) & CxWRTy_T_MASK) |
Definition at line 279 of file raminit_read_write_training.c.
#define CxWRTy_T_MASK (0xf << CxWRTy_T_SHIFT) |
Definition at line 278 of file raminit_read_write_training.c.
#define CxWRTy_T_SHIFT 28 |
Definition at line 277 of file raminit_read_write_training.c.
#define READ_TIMING_P_BOUND (1 << READ_TIMING_P_SHIFT) |
Definition at line 35 of file raminit_read_write_training.c.
#define READ_TIMING_P_SHIFT 3 |
Definition at line 34 of file raminit_read_write_training.c.
#define READ_TIMING_T_BOUND 14 |
Definition at line 36 of file raminit_read_write_training.c.
#define WRITE_TIMING_F_BOUND 4 |
Definition at line 330 of file raminit_read_write_training.c.
#define WRITE_TIMING_P_BOUND (1 << WRITE_TIMING_P_SHIFT) |
Definition at line 329 of file raminit_read_write_training.c.
#define WRITE_TIMING_P_SHIFT 3 |
Definition at line 328 of file raminit_read_write_training.c.
|
static |
Definition at line 49 of file raminit_read_write_training.c.
References BIOS_WARNING, read_timing_t::p, printk, READ_TIMING_P_BOUND, READ_TIMING_T_BOUND, and read_timing_t::t.
Referenced by program_read_timing().
|
static |
Definition at line 345 of file raminit_read_write_training.c.
References BIOS_WARNING, write_timing_t::f, write_timing_t::p, printk, write_timing_t::t, write_timing_t::t_bound, WRITE_TIMING_F_BOUND, and WRITE_TIMING_P_BOUND.
Referenced by program_write_timing().
|
static |
Definition at line 200 of file raminit_read_write_training.c.
References address_bunch_t::addr, ch, address_bunch_t::count, FOR_EACH_POPULATED_CHANNEL, FOR_EACH_POPULATED_RANK_IN_CHANNEL, offset, raminit_get_rank_addr(), read_training_per_lane(), read_training_schedule, and write32().
Referenced by raminit_read_training().
|
static |
Definition at line 550 of file raminit_read_write_training.c.
References addr, dimminfo_t::card_type, ch, count, FOR_EACH_CHANNEL, FOR_EACH_POPULATED_RANK, raminit_get_rank_addr(), write_training_bytelane_masks_abc, write_training_bytelane_masks_f, and write_training_per_group().
Referenced by raminit_write_training().
|
static |
Definition at line 41 of file raminit_read_write_training.c.
References read_timing_t::p, printk, and read_timing_t::t.
Referenced by read_training_per_lane().
|
static |
Definition at line 337 of file raminit_read_write_training.c.
References write_timing_t::f, write_timing_t::p, printk, and write_timing_t::t.
Referenced by write_training_per_group().
|
static |
Definition at line 74 of file raminit_read_write_training.c.
References ch, CxRDTy_MCHBAR, CxRDTy_P, CxRDTy_P_MASK, CxRDTy_T, CxRDTy_T_MASK, mchbar_read32(), mchbar_write32(), normalize_read_timing(), read_timing_t::p, and read_timing_t::t.
Referenced by read_training_find_lower(), read_training_find_upper(), and read_training_per_lane().
|
static |
Definition at line 380 of file raminit_read_write_training.c.
References ch, CxWRTy_ABOVE_D, CxWRTy_BELOW_D, CxWRTy_D_MASK, CxWRTy_F, CxWRTy_F_MASK, CxWRTy_MCHBAR, CxWRTy_P, CxWRTy_P_MASK, CxWRTy_T, CxWRTy_T_MASK, write_timing_t::f, mchbar_read32(), mchbar_write32(), normalize_write_timing(), write_timing_t::p, and write_timing_t::t.
Referenced by write_training_find_lower(), write_training_find_upper(), write_training_per_group(), and write_training_restore_results().
void raminit_read_training | ( | const dimminfo_t *const | dimms, |
const int | s3resume | ||
) |
Definition at line 265 of file raminit_read_write_training.c.
References perform_read_training(), raminit_reset_readwrite_pointers(), read_training_restore_results(), and read_training_store_results().
Referenced by raminit().
void raminit_write_training | ( | const mem_clock_t | ddr3clock, |
const dimminfo_t *const | dimms, | ||
const int | s3resume | ||
) |
Definition at line 634 of file raminit_read_write_training.c.
References MEM_CLOCK_1067MT, perform_write_training(), raminit_reset_readwrite_pointers(), write_training_restore_results(), and write_training_store_results().
Referenced by raminit().
|
static |
Definition at line 107 of file raminit_read_write_training.c.
References read_timing_t::p, program_read_timing(), read_training_test(), and read_timing_t::t.
Referenced by read_training_per_lane().
|
static |
Definition at line 134 of file raminit_read_write_training.c.
References BIOS_WARNING, read_timing_t::p, printk, program_read_timing(), read_training_test(), and read_timing_t::t.
Referenced by read_training_per_lane().
|
static |
Definition at line 162 of file raminit_read_write_training.c.
References BIOS_DEBUG, BIOS_WARNING, CxRDTy_MCHBAR, die(), mchbar_setbits32, read_timing_t::p, print_read_timing(), printk, program_read_timing(), RAM_DEBUG, READ_TIMING_P_BOUND, READ_TIMING_P_SHIFT, read_training_find_lower(), read_training_find_upper(), and read_timing_t::t.
Referenced by perform_read_training().
Definition at line 242 of file raminit_read_write_training.c.
References BIOS_DEBUG, ch, cmos_read(), CMOS_READ_TRAINING, CxRDTy_MCHBAR, CxRDTy_P, CxRDTy_P_MASK, CxRDTy_T, CxRDTy_T_MASK, FOR_EACH_CHANNEL, mchbar_read32(), mchbar_write32(), printk, and TOTAL_CHANNELS.
Referenced by raminit_read_training().
Definition at line 222 of file raminit_read_write_training.c.
References ch, CMOS_READ_TRAINING, cmos_write(), CxRDTy_MCHBAR, CxRDTy_P_MASK, CxRDTy_P_SHIFT, CxRDTy_T_MASK, CxRDTy_T_SHIFT, FOR_EACH_CHANNEL, mchbar_read32(), and TOTAL_CHANNELS.
Referenced by raminit_read_training().
|
static |
Definition at line 88 of file raminit_read_write_training.c.
References address_bunch_t::addr, address_bunch_t::count, offset, read32(), and read_training_schedule.
Referenced by read_training_find_lower(), and read_training_find_upper().
|
static |
Definition at line 446 of file raminit_read_write_training.c.
References ch, write_timing_t::f, write_timing_t::p, program_write_timing(), write_timing_t::t, and write_training_test().
Referenced by write_training_per_group().
|
static |
Definition at line 473 of file raminit_read_write_training.c.
References BIOS_WARNING, ch, write_timing_t::p, printk, program_write_timing(), write_timing_t::t, and write_training_test().
Referenced by write_training_per_group().
|
static |
Definition at line 502 of file raminit_read_write_training.c.
References BIOS_DEBUG, BIOS_WARNING, ch, CxWRTy_MCHBAR, die(), write_timing_t::f, mchbar_read32(), write_timing_t::p, print_write_timing(), printk, program_write_timing(), RAM_DEBUG, write_timing_t::t, write_timing_t::t_bound, WRITE_TIMING_P_BOUND, WRITE_TIMING_P_SHIFT, write_training_find_lower(), and write_training_find_upper().
Referenced by perform_write_training().
|
static |
Definition at line 609 of file raminit_read_write_training.c.
References BIOS_DEBUG, ch, cmos_read(), CMOS_WRITE_TRAINING, write_timing_t::f, FOR_EACH_CHANNEL, write_timing_t::p, printk, program_write_timing(), write_timing_t::t, and TOTAL_CHANNELS.
Referenced by raminit_write_training().
Definition at line 586 of file raminit_read_write_training.c.
References ch, cmos_write(), CMOS_WRITE_TRAINING, CxWRTy_F_MASK, CxWRTy_F_SHIFT, CxWRTy_MCHBAR, CxWRTy_P_MASK, CxWRTy_P_SHIFT, CxWRTy_T_MASK, CxWRTy_T_SHIFT, FOR_EACH_CHANNEL, mchbar_read32(), and TOTAL_CHANNELS.
Referenced by raminit_write_training().
|
static |
Definition at line 407 of file raminit_read_write_training.c.
References addr, address_bunch_t::addr, address_bunch_t::count, mchbar_read32(), mchbar_read8(), mchbar_setbits32, mchbar_setbits8, mchbar_write32(), mchbar_write8(), pattern, read32(), write32(), and write_training_schedule.
Referenced by write_training_find_lower(), and write_training_find_upper().
|
static |
Definition at line 22 of file raminit_read_write_training.c.
Referenced by perform_read_training(), and read_training_test().
|
static |
Definition at line 313 of file raminit_read_write_training.c.
Referenced by perform_write_training().
|
static |
Definition at line 324 of file raminit_read_write_training.c.
Referenced by perform_write_training().
|
static |
Definition at line 290 of file raminit_read_write_training.c.
Referenced by write_training_test().