coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mainboard.c File Reference
#include <bootstate.h>
#include <console/console.h>
#include <device/mmio.h>
#include <device/device.h>
#include <device/pci_ops.h>
#include <device/pci_ids.h>
#include <hwilib.h>
#include <i210.h>
#include <intelblocks/cpulib.h>
#include <intelblocks/fast_spi.h>
#include <intelblocks/systemagent.h>
#include <soc/pci_devs.h>
#include <soc/ramstage.h>
#include <string.h>
#include <timer.h>
#include <timestamp.h>
#include <baseboard/variants.h>
#include <types.h>
Include dependency graph for mainboard.c:

Go to the source code of this file.

Macros

#define MAX_PATH_DEPTH   12
 
#define MAX_NUM_MAPPINGS   10
 
#define BIOS_MAILBOX_WAIT_MAX_MS   1000
 
#define BIOS_MAILBOX_DATA   0x7080
 
#define BIOS_MAILBOX_INTERFACE   0x7084
 
#define RUN_BUSY_STS   (1 << 31)
 
#define SD_CAP_BYP   0x810
 
#define SD_CAP_BYP_EN   0x5A
 
#define SD_CAP_BYP_REG1   0x814
 

Functions

static uint8_t is_mac_adr_valid (uint8_t mac[MAC_ADDR_LEN])
 This function can decide if a given MAC address is valid or not. More...
 
enum cb_err mainboard_get_mac_address (struct device *dev, uint8_t mac[MAC_ADDR_LEN])
 This function will search for a MAC address which can be assigned to a MACPHY. More...
 
static void config_pmic_imon (void)
 This function fixes an accuracy issue with IDT PMIC. More...
 
void mainboard_silicon_init_params (FSP_S_CONFIG *silconfig)
 
static void mainboard_init (void *chip_info)
 
static void mainboard_final (void *chip_info)
 
void __weak variant_mainboard_final (void)
 
static void wait_for_legacy_dev (void *unused)
 
 BOOT_STATE_INIT_ENTRY (BS_DEV_ENUMERATE, BS_ON_ENTRY, wait_for_legacy_dev, NULL)
 

Variables

struct chip_operations mainboard_ops
 

Macro Definition Documentation

◆ BIOS_MAILBOX_DATA

#define BIOS_MAILBOX_DATA   0x7080

Definition at line 26 of file mainboard.c.

◆ BIOS_MAILBOX_INTERFACE

#define BIOS_MAILBOX_INTERFACE   0x7084

Definition at line 27 of file mainboard.c.

◆ BIOS_MAILBOX_WAIT_MAX_MS

#define BIOS_MAILBOX_WAIT_MAX_MS   1000

Definition at line 25 of file mainboard.c.

◆ MAX_NUM_MAPPINGS

#define MAX_NUM_MAPPINGS   10

Definition at line 23 of file mainboard.c.

◆ MAX_PATH_DEPTH

#define MAX_PATH_DEPTH   12

Definition at line 22 of file mainboard.c.

◆ RUN_BUSY_STS

#define RUN_BUSY_STS   (1 << 31)

Definition at line 28 of file mainboard.c.

◆ SD_CAP_BYP

#define SD_CAP_BYP   0x810

Definition at line 30 of file mainboard.c.

◆ SD_CAP_BYP_EN

#define SD_CAP_BYP_EN   0x5A

Definition at line 31 of file mainboard.c.

◆ SD_CAP_BYP_REG1

#define SD_CAP_BYP_REG1   0x814

Definition at line 32 of file mainboard.c.

Function Documentation

◆ BOOT_STATE_INIT_ENTRY()

BOOT_STATE_INIT_ENTRY ( BS_DEV_ENUMERATE  ,
BS_ON_ENTRY  ,
wait_for_legacy_dev  ,
NULL   
)

◆ config_pmic_imon()

static void config_pmic_imon ( void  )
static

This function fixes an accuracy issue with IDT PMIC.

The current reported system power consumption is higher than the actual consumption. With a correction of slope and offset for Vcc and Vnn, the issue is solved.

Definition at line 111 of file mainboard.c.

References BIOS_DEBUG, BIOS_ERR, BIOS_INFO, BIOS_MAILBOX_DATA, BIOS_MAILBOX_INTERFACE, BIOS_MAILBOX_WAIT_MAX_MS, cpu_get_power_max(), MCHBAR32, printk, RUN_BUSY_STS, stopwatch_expired(), and stopwatch_init_msecs_expire().

Referenced by mainboard_init().

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

◆ is_mac_adr_valid()

static uint8_t is_mac_adr_valid ( uint8_t  mac[MAC_ADDR_LEN])
static

This function can decide if a given MAC address is valid or not.

Currently, addresses filled with 0xff or 0x00 are not valid.

Parameters
macBuffer to the MAC address to check
Returns
0 if address is not valid, otherwise 1

Definition at line 39 of file mainboard.c.

References MAC_ADDR_LEN.

◆ mainboard_final()

◆ mainboard_get_mac_address()

enum cb_err mainboard_get_mac_address ( struct device dev,
uint8_t  mac[MAC_ADDR_LEN] 
)

This function will search for a MAC address which can be assigned to a MACPHY.

Parameters
devpointer to PCI device
macbuffer where to store the MAC address
Returns
cb_err CB_ERR or CB_SUCCESS

Definition at line 39 of file mainboard.c.

◆ mainboard_init()

static void mainboard_init ( void chip_info)
static

Definition at line 200 of file mainboard.c.

References config_pmic_imon(), gpio_configure_pads(), and variant_gpio_table().

Here is the call graph for this function:

◆ mainboard_silicon_init_params()

void mainboard_silicon_init_params ( FSP_S_CONFIG silconfig)

Definition at line 177 of file mainboard.c.

References BIOS_DEBUG, memset(), and printk.

Here is the call graph for this function:

◆ variant_mainboard_final()

void __weak variant_mainboard_final ( void  )

Definition at line 245 of file mainboard.c.

Referenced by mainboard_final().

Here is the caller graph for this function:

◆ wait_for_legacy_dev()

static void wait_for_legacy_dev ( void unused)
static

Definition at line 254 of file mainboard.c.

References BIOS_NOTICE, CB_SUCCESS, CONFIG, get_us_since_boot(), printk, stopwatch_init_msecs_expire(), and stopwatch_wait_until_expired().

Here is the call graph for this function:

Variable Documentation

◆ mainboard_ops

struct chip_operations mainboard_ops
Initial value:
= {
.init = mainboard_init,
.final = mainboard_final,
}
static void mainboard_init(void *chip_info)
Definition: mainboard.c:200
static void mainboard_final(void *chip_info)
Definition: mainboard.c:211

Definition at line 245 of file mainboard.c.