coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
raminit_native.c File Reference
#include <commonlib/clamp.h>
#include <console/console.h>
#include <console/usb.h>
#include <cpu/intel/model_206ax/model_206ax.h>
#include <delay.h>
#include <device/device.h>
#include <device/pci_def.h>
#include <device/pci_ops.h>
#include <northbridge/intel/sandybridge/chip.h>
#include <stdbool.h>
#include <stdint.h>
#include "raminit_native.h"
#include "raminit_common.h"
#include "raminit_tables.h"
Include dependency graph for raminit_native.c:

Go to the source code of this file.

Macros

#define SNB_MIN_DCLK_133_MULT   3
 
#define SNB_MAX_DCLK_133_MULT   8
 
#define IVB_MIN_DCLK_133_MULT   3
 
#define IVB_MAX_DCLK_133_MULT   10
 
#define IVB_MIN_DCLK_100_MULT   7
 
#define IVB_MAX_DCLK_100_MULT   12
 
#define DEFAULT_TCK   TCK_800MHZ
 

Functions

static u32 get_FRQ (const ramctr_timing *ctrl)
 
static u8 get_CWL (u32 tCK)
 
static u32 get_REFI (u32 FRQ, u8 base_freq)
 
static u8 get_XSOffset (u32 FRQ, u8 base_freq)
 
static u8 get_MOD (u32 FRQ, u8 base_freq)
 
static u8 get_WLO (u32 FRQ, u8 base_freq)
 
static u8 get_CKE (u32 FRQ, u8 base_freq)
 
static u8 get_XPDLL (u32 FRQ, u8 base_freq)
 
static u8 get_XP (u32 FRQ, u8 base_freq)
 
static u8 get_AONPD (u32 FRQ, u8 base_freq)
 
static u32 get_COMP2 (const ramctr_timing *ctrl)
 
static u32 get_COMP1 (ramctr_timing *ctrl, const int channel)
 
static void normalize_tclk (ramctr_timing *ctrl, bool ref_100mhz_support)
 
static unsigned int get_mem_min_tck (void)
 
static void find_cas_tck (ramctr_timing *ctrl)
 
static void dram_timing (ramctr_timing *ctrl)
 
static void dram_freq (ramctr_timing *ctrl)
 
static void dram_ioregs (ramctr_timing *ctrl)
 
int try_init_dram_ddr3 (ramctr_timing *ctrl, int fast_boot, int s3resume, int me_uma_size)
 

Macro Definition Documentation

◆ DEFAULT_TCK

#define DEFAULT_TCK   TCK_800MHZ

Definition at line 264 of file raminit_native.c.

◆ IVB_MAX_DCLK_100_MULT

#define IVB_MAX_DCLK_100_MULT   12

Definition at line 24 of file raminit_native.c.

◆ IVB_MAX_DCLK_133_MULT

#define IVB_MAX_DCLK_133_MULT   10

Definition at line 22 of file raminit_native.c.

◆ IVB_MIN_DCLK_100_MULT

#define IVB_MIN_DCLK_100_MULT   7

Definition at line 23 of file raminit_native.c.

◆ IVB_MIN_DCLK_133_MULT

#define IVB_MIN_DCLK_133_MULT   3

Definition at line 21 of file raminit_native.c.

◆ SNB_MAX_DCLK_133_MULT

#define SNB_MAX_DCLK_133_MULT   8

Definition at line 20 of file raminit_native.c.

◆ SNB_MIN_DCLK_133_MULT

#define SNB_MIN_DCLK_133_MULT   3

Definition at line 19 of file raminit_native.c.

Function Documentation

◆ dram_freq()

static void dram_freq ( ramctr_timing ctrl)
static

Definition at line 537 of file raminit_native.c.

References ramctr_timing_st::base_freq, BIOS_DEBUG, BIOS_ERR, find_cas_tck(), ramctr_timing_st::FRQ, MC_BIOS_DATA, MC_BIOS_REQ, mchbar_read32(), mchbar_write32(), printk, ramctr_timing_st::tCK, TCK_400MHZ, 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_ioregs()

static void dram_ioregs ( ramctr_timing ctrl)
static

◆ dram_timing()

◆ find_cas_tck()

static void find_cas_tck ( ramctr_timing ctrl)
static

◆ get_AONPD()

static u8 get_AONPD ( u32  FRQ,
u8  base_freq 
)
static

Definition at line 152 of file raminit_native.c.

References frq_aonpd_map.

Referenced by dram_timing().

Here is the caller graph for this function:

◆ get_CKE()

static u8 get_CKE ( u32  FRQ,
u8  base_freq 
)
static

Definition at line 122 of file raminit_native.c.

References frq_cke_map.

Referenced by dram_timing().

Here is the caller graph for this function:

◆ get_COMP1()

static u32 get_COMP1 ( ramctr_timing ctrl,
const int  channel 
)
static

◆ get_COMP2()

static u32 get_COMP2 ( const ramctr_timing ctrl)
static

Definition at line 162 of file raminit_native.c.

References ramctr_timing_st::cpu, IS_IVY_CPU, ramctr_timing_st::tCK, TCK_1066MHZ, TCK_533MHZ, TCK_666MHZ, TCK_800MHZ, and TCK_933MHZ.

Referenced by dram_ioregs().

Here is the caller graph for this function:

◆ get_CWL()

static u8 get_CWL ( u32  tCK)
static

Definition at line 47 of file raminit_native.c.

References TCK_1000MHZ, TCK_1066MHZ, TCK_1100MHZ, TCK_1200MHZ, TCK_1333MHZ, TCK_533MHZ, TCK_666MHZ, TCK_700MHZ, TCK_800MHZ, TCK_900MHZ, and TCK_933MHZ.

Referenced by dram_timing().

Here is the caller graph for this function:

◆ get_FRQ()

static u32 get_FRQ ( const ramctr_timing ctrl)
static

◆ get_mem_min_tck()

static unsigned int get_mem_min_tck ( void  )
static

◆ get_MOD()

static u8 get_MOD ( u32  FRQ,
u8  base_freq 
)
static

Definition at line 102 of file raminit_native.c.

References frq_mod_map.

Referenced by dram_timing().

Here is the caller graph for this function:

◆ get_REFI()

static u32 get_REFI ( u32  FRQ,
u8  base_freq 
)
static

Definition at line 82 of file raminit_native.c.

References frq_refi_map.

Referenced by dram_timing().

Here is the caller graph for this function:

◆ get_WLO()

static u8 get_WLO ( u32  FRQ,
u8  base_freq 
)
static

Definition at line 112 of file raminit_native.c.

References frq_wlo_map.

Referenced by dram_timing().

Here is the caller graph for this function:

◆ get_XP()

static u8 get_XP ( u32  FRQ,
u8  base_freq 
)
static

Definition at line 142 of file raminit_native.c.

References frq_xp_map.

Referenced by dram_timing().

Here is the caller graph for this function:

◆ get_XPDLL()

static u8 get_XPDLL ( u32  FRQ,
u8  base_freq 
)
static

Definition at line 132 of file raminit_native.c.

References frq_xpdll_map.

Referenced by dram_timing().

Here is the caller graph for this function:

◆ get_XSOffset()

static u8 get_XSOffset ( u32  FRQ,
u8  base_freq 
)
static

Definition at line 92 of file raminit_native.c.

References frq_xs_map.

Referenced by dram_timing().

Here is the caller graph for this function:

◆ normalize_tclk()

static void normalize_tclk ( ramctr_timing ctrl,
bool  ref_100mhz_support 
)
static

Definition at line 217 of file raminit_native.c.

References ramctr_timing_st::base_freq, ramctr_timing_st::tCK, TCK_1000MHZ, TCK_1066MHZ, TCK_1100MHZ, TCK_1200MHZ, TCK_400MHZ, TCK_533MHZ, TCK_666MHZ, TCK_700MHZ, TCK_800MHZ, TCK_900MHZ, and TCK_933MHZ.

Referenced by find_cas_tck().

Here is the caller graph for this function:

◆ try_init_dram_ddr3()