coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
rcven.c File Reference
#include <console/console.h>
#include <device/mmio.h>
#include "raminit.h"
#include "i945.h"
Include dependency graph for rcven.c:

Go to the source code of this file.

Functions

static u32 sample_strobes (int channel_offset, struct sys_info *sysinfo)
 sample the strobes signal More...
 
static void set_receive_enable (int channel_offset, u8 medium, u8 coarse)
 This function sets receive enable coarse and medium timing parameters. More...
 
static int normalize (int channel_offset, u8 *mediumcoarse, u8 *fine)
 
static int find_preamble (int channel_offset, u8 *mediumcoarse, struct sys_info *sysinfo)
 
static int add_quarter_clock (int channel_offset, u8 *mediumcoarse, u8 *fine)
 add a quarter clock to the current receive enable settings More...
 
static int find_strobes_low (int channel_offset, u8 *mediumcoarse, u8 *fine, struct sys_info *sysinfo)
 
static int find_strobes_edge (int channel_offset, u8 *mediumcoarse, u8 *fine, struct sys_info *sysinfo)
 
static int receive_enable_autoconfig (int channel_offset, struct sys_info *sysinfo)
 Here we use a trick. More...
 
void receive_enable_adjust (struct sys_info *sysinfo)
 

Function Documentation

◆ add_quarter_clock()

static int add_quarter_clock ( int  channel_offset,
u8 mediumcoarse,
u8 fine 
)
static

add a quarter clock to the current receive enable settings

Definition at line 142 of file rcven.c.

References BIOS_DEBUG, BIOS_SPEW, C0WL0REOST, mchbar_write8(), printk, and set_receive_enable().

Referenced by receive_enable_autoconfig().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ find_preamble()

static int find_preamble ( int  channel_offset,
u8 mediumcoarse,
struct sys_info sysinfo 
)
static

Definition at line 109 of file rcven.c.

References BIOS_DEBUG, BIOS_SPEW, printk, sample_strobes(), and set_receive_enable().

Referenced by receive_enable_autoconfig().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ find_strobes_edge()

static int find_strobes_edge ( int  channel_offset,
u8 mediumcoarse,
u8 fine,
struct sys_info sysinfo 
)
static

Definition at line 198 of file rcven.c.

References BIOS_DEBUG, BIOS_SPEW, C0WL0REOST, mchbar_write8(), printk, sample_strobes(), and set_receive_enable().

Referenced by receive_enable_autoconfig().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ find_strobes_low()

static int find_strobes_low ( int  channel_offset,
u8 mediumcoarse,
u8 fine,
struct sys_info sysinfo 
)
static

Definition at line 165 of file rcven.c.

References BIOS_DEBUG, BIOS_SPEW, C0WL0REOST, mchbar_write8(), printk, sample_strobes(), and set_receive_enable().

Referenced by receive_enable_autoconfig().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ normalize()

static int normalize ( int  channel_offset,
u8 mediumcoarse,
u8 fine 
)
static

Definition at line 87 of file rcven.c.

References BIOS_DEBUG, BIOS_SPEW, C0WL0REOST, mchbar_write8(), printk, and set_receive_enable().

Referenced by receive_enable_autoconfig().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ receive_enable_adjust()

void receive_enable_adjust ( struct sys_info sysinfo)

Definition at line 299 of file rcven.c.

References receive_enable_autoconfig(), and SYSINFO_DIMM_NOT_POPULATED.

Referenced by sdram_program_receive_enable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ receive_enable_autoconfig()

static int receive_enable_autoconfig ( int  channel_offset,
struct sys_info sysinfo 
)
static

Here we use a trick.

The RCVEN channel 1 registers are all at an offset of 0x80 to the channel 0 registers. We don't want to waste a lot of if ()s so let's just pass 0 or 0x80 for the channel offset.

Definition at line 261 of file rcven.c.

References add_quarter_clock(), BIOS_DEBUG, BIOS_SPEW, C0WL0REOST, find_preamble(), find_strobes_edge(), find_strobes_low(), mchbar_read8(), normalize(), and printk.

Referenced by receive_enable_adjust().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sample_strobes()

static u32 sample_strobes ( int  channel_offset,
struct sys_info sysinfo 
)
static

sample the strobes signal

[19] = 1: all bits are high [18] = 1: all bits are low [19:18] = 00: bits are mixed high, low

Definition at line 11 of file rcven.c.

References addr, C0DRB3, C0DRC1, mchbar_clrbits32, mchbar_read32(), mchbar_read8(), mchbar_setbits32, RCVENMT, and read32().

Referenced by find_preamble(), find_strobes_edge(), and find_strobes_low().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_receive_enable()

static void set_receive_enable ( int  channel_offset,
u8  medium,
u8  coarse 
)
static

This function sets receive enable coarse and medium timing parameters.

Definition at line 50 of file rcven.c.

References BIOS_DEBUG, BIOS_SPEW, C0DRT1, mchbar_read32(), mchbar_write32(), printk, and RCVENMT.

Referenced by add_quarter_clock(), find_preamble(), find_strobes_edge(), find_strobes_low(), and normalize().

Here is the call graph for this function:
Here is the caller graph for this function: