![]() |
coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
|
#include <device/pci_ops.h>
#include <device/smbus_host.h>
#include <cbmem.h>
#include <cf9_reset.h>
#include <console/console.h>
#include <arch/cpu.h>
#include <spd.h>
#include <string.h>
#include <device/dram/ddr2.h>
#include <device/dram/ddr3.h>
#include <mrc_cache.h>
#include <timestamp.h>
#include <types.h>
#include "raminit.h"
#include "x4x.h"
Go to the source code of this file.
Data Structures | |
struct | abs_timings |
Macros | |
#define | MRC_CACHE_VERSION 0 |
#define | CTRL_MIN_TCLK_DDR2 TCK_400MHZ |
Functions | |
static u16 | ddr2_get_crc (u8 device, u8 len) |
static u16 | ddr3_get_crc (u8 device, u8 len) |
static enum cb_err | verify_spds (const u8 *spd_map, const struct sysinfo *ctrl_cached) |
static void | select_cas_dramfreq_ddr2 (struct sysinfo *s, const struct abs_timings *saved_timings) |
static void | mchinfo_ddr2 (struct sysinfo *s) |
static int | ddr2_save_dimminfo (u8 dimm_idx, u8 *raw_spd, struct abs_timings *saved_timings, struct sysinfo *s) |
static void | normalize_tCLK (u32 *tCLK) |
static void | select_cas_dramfreq_ddr3 (struct sysinfo *s, struct abs_timings *saved_timings) |
static void | workaround_stacked_mode (struct sysinfo *s) |
static int | ddr3_save_dimminfo (u8 dimm_idx, u8 *raw_spd, struct abs_timings *saved_timings, struct sysinfo *s) |
static void | select_discrete_timings (struct sysinfo *s, const struct abs_timings *timings) |
static void | print_selected_timings (struct sysinfo *s) |
static void | find_fsb_speed (struct sysinfo *s) |
static void | decode_spd_select_timings (struct sysinfo *s) |
static void | find_dimm_config (struct sysinfo *s) |
static void | checkreset_ddr2 (int boot_path) |
void | sdram_initialize (int boot_path, const u8 *spd_map) |
#define CTRL_MIN_TCLK_DDR2 TCK_400MHZ |
|
static |
Definition at line 529 of file raminit.c.
References BIOS_DEBUG, full_reset(), HOST_BRIDGE, mchbar_read32(), pci_and_config8(), PCI_DEV, pci_or_config8(), pci_read_config8(), pci_write_config8(), PMSTS_MCHBAR, and printk.
Referenced by sdram_initialize().
Definition at line 22 of file raminit.c.
References spd_ddr2_calc_unique_crc().
|
static |
Definition at line 135 of file raminit.c.
References dimm_attr_ddr2_st::banks, BIOS_DEBUG, BIOS_ERR, dimm_attr_ddr2_st::cas_supported, abs_timings::cas_supported, CB_ERR, CB_SUCCESS, dimm_attr_ddr2_st::col_bits, CONFIG, dimm_attr_ddr2_st::cycle_time, dram_print_spd_ddr2(), MAX, abs_timings::min_tCLK_cas, abs_timings::min_tRAS, abs_timings::min_tRCD, abs_timings::min_tRFC, abs_timings::min_tRP, abs_timings::min_tRRD, abs_timings::min_tRTP, abs_timings::min_tWR, abs_timings::min_tWTR, N_BANKS_4, N_BANKS_8, printk, dimm_attr_ddr2_st::ranks, dimm_attr_ddr2_st::row_bits, s, spd_ddr2_calc_unique_crc(), spd_decode_ddr2(), spd_decode_spd_size_ddr2(), SPD_STATUS_OK, dimm_attr_ddr2_st::tRAS, dimm_attr_ddr2_st::tRCD, dimm_attr_ddr2_st::tRFC, dimm_attr_ddr2_st::tRP, dimm_attr_ddr2_st::tRRD, dimm_attr_ddr2_st::tRTP, dimm_attr_ddr2_st::tWR, dimm_attr_ddr2_st::tWTR, and dimm_attr_ddr2_st::width.
Referenced by decode_spd_select_timings().
Definition at line 30 of file raminit.c.
References spd_ddr3_calc_unique_crc().
|
static |
Definition at line 334 of file raminit.c.
References BIOS_ERR, dimm_attr_ddr3_st::cas_supported, abs_timings::cas_supported, CB_ERR, CB_SUCCESS, dimm_attr_ddr3_st::col_bits, CONFIG, dram_print_spd_ddr3(), dimm_attr_ddr3_st::flags, MAX, abs_timings::min_tAA, abs_timings::min_tRAS, abs_timings::min_tRCD, abs_timings::min_tRFC, abs_timings::min_tRP, abs_timings::min_tRRD, abs_timings::min_tRTP, abs_timings::min_tWR, abs_timings::min_tWTR, N_BANKS_8, dimm_flags_ddr3_st::pins_mirrored, printk, dimm_attr_ddr3_st::ranks, dimm_attr_ddr3_st::row_bits, s, spd_ddr3_calc_unique_crc(), spd_decode_ddr3(), SPD_STATUS_OK, dimm_attr_ddr3_st::tAA, dimm_attr_ddr3_st::tRAS, dimm_attr_ddr3_st::tRCD, dimm_attr_ddr3_st::tRFC, dimm_attr_ddr3_st::tRP, dimm_attr_ddr3_st::tRRD, dimm_attr_ddr3_st::tRTP, dimm_attr_ddr3_st::tWR, dimm_attr_ddr3_st::tWTR, and dimm_attr_ddr3_st::width.
Referenced by decode_spd_select_timings().
Definition at line 433 of file raminit.c.
References BIOS_DEBUG, BIOS_WARNING, abs_timings::cas_supported, DDR2, ddr2_save_dimminfo(), DDR2SPD, DDR3, ddr3_save_dimminfo(), DDR3SPD, device, die(), FOR_EACH_DIMM, memset(), printk, RAW_CARD_POPULATED, RAW_CARD_UNPOPULATED, s, select_cas_dramfreq_ddr2(), select_cas_dramfreq_ddr3(), select_discrete_timings(), smbus_read_byte(), SPD_MEMORY_TYPE, UINT32_MAX, and workaround_stacked_mode().
Referenced by sdram_initialize().
Definition at line 504 of file raminit.c.
References BIOS_DEBUG, die(), DIMMS_PER_CHANNEL, FOR_EACH_POPULATED_CHANNEL, FOR_EACH_POPULATED_DIMM_IN_CHANNEL, printk, and s.
Referenced by sdram_initialize().
Definition at line 413 of file raminit.c.
References BIOS_WARNING, CLKCFG_FSBCLK_MASK, CLKCFG_FSBCLK_SHIFT, CLKCFG_MCHBAR, FSB_CLOCK_1066MHz, FSB_CLOCK_1333MHz, FSB_CLOCK_800MHz, mchbar_read32(), printk, and s.
Referenced by sdram_initialize().
Definition at line 115 of file raminit.c.
References BIOS_WARNING, cpuid_ext(), cpuid_result::eax, HOST_BRIDGE, pci_read_config16(), pci_read_config32(), and printk.
Referenced by sdram_initialize().
Definition at line 207 of file raminit.c.
References TCK_400MHZ, TCK_533MHZ, and TCK_666MHZ.
Referenced by select_cas_dramfreq_ddr3().
Definition at line 396 of file raminit.c.
References BIOS_DEBUG, ddr_to_mhz(), fsb_to_mhz(), printk, and s.
Referenced by sdram_initialize().
boot_path | 0 = normal, 1 = reset, 2 = resume from s3 |
Definition at line 562 of file raminit.c.
References BIOS_DEBUG, sysinfo::boot_path, BOOT_PATH_RESUME, BOOT_PATH_WARM_RESET, CB_SUCCESS, cbmem_recovery(), checkreset_ddr2(), decode_spd_select_timings(), do_raminit(), find_dimm_config(), find_fsb_speed(), full_reset(), HOST_BRIDGE, sysinfo::max_fsb, mchinfo_ddr2(), memcpy(), memset(), mrc_cache_current_mmap_leak(), mrc_cache_stash_data(), MRC_CACHE_VERSION, MRC_TRAINING_DATA, pci_and_config8(), PCI_DEV, pci_or_config8(), pci_read_config8(), pci_write_config8(), print_selected_timings(), printk, s, sysinfo::s3resume, sysinfo::spd_map, system_reset(), timestamp_add_now(), TS_INITRAM_END, TS_INITRAM_START, and verify_spds().
|
static |
Definition at line 79 of file raminit.c.
References abs_timings::cas_supported, CTRL_MIN_TCLK_DDR2, die(), MEM_CLOCK_667MHz, MEM_CLOCK_800MHz, abs_timings::min_tCLK_cas, s, SPD_CAS_LATENCY_DDR2_5, SPD_CAS_LATENCY_DDR2_6, spd_get_msbs(), TCK_200MHZ, TCK_266MHZ, TCK_333MHZ, and TCK_400MHZ.
Referenced by decode_spd_select_timings().
|
static |
Definition at line 219 of file raminit.c.
References BIOS_ERR, BIOS_SPEW, abs_timings::cas_supported, DDR3_MAX_CAS, die(), DIV_ROUND_UP, FSB_CLOCK_1066MHz, FSB_CLOCK_1333MHz, FSB_CLOCK_800MHz, HOST_BRIDGE, MAX, MEM_CLOCK_1066MHz, MEM_CLOCK_1333MHz, MEM_CLOCK_800MHz, abs_timings::min_tAA, abs_timings::min_tclk, normalize_tCLK(), pci_read_config16(), printk, s, TCK_400MHZ, TCK_533MHZ, and TCK_666MHZ.
Referenced by decode_spd_select_timings().
|
static |
Definition at line 385 of file raminit.c.
References DIV_ROUND_UP, timings::min_tRAS, timings::min_tRCD, timings::min_tRFC, timings::min_tRP, timings::min_tWR, and s.
Referenced by decode_spd_select_timings().
Definition at line 30 of file raminit.c.
Referenced by sdram_initialize().
Definition at line 317 of file raminit.c.
References CHANNEL_IS_POPULATED, D0F0_DEVEN, DDR2, HOST_BRIDGE, IGD0EN, MEM_CLOCK_1066MHz, pci_read_config32(), and s.
Referenced by decode_spd_select_timings().