coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mainboard.c File Reference
#include <string.h>
#include <console/console.h>
#include <device/device.h>
#include <device/mmio.h>
#include <acpi/acpi.h>
#include <acpi/acpigen.h>
#include <amdblocks/amd_pci_util.h>
#include <amdblocks/gpio.h>
#include <amdblocks/smi.h>
#include <baseboard/variants.h>
#include <boardid.h>
#include <gpio.h>
#include <smbios.h>
#include <soc/cpu.h>
#include <soc/gpio.h>
#include <soc/pci_devs.h>
#include <soc/platform_descriptors.h>
#include <soc/southbridge.h>
#include <soc/smi.h>
#include <soc/soc_util.h>
#include <amdblocks/acpimmio.h>
#include <variant/ec.h>
#include <variant/thermal.h>
#include <commonlib/helpers.h>
Include dependency graph for mainboard.c:

Go to the source code of this file.

Data Structures

struct  fch_irq_routing
 

Macros

#define METHOD_BACKLIGHT_ENABLE   "\\_SB.BKEN"
 
#define METHOD_BACKLIGHT_DISABLE   "\\_SB.BKDS"
 
#define METHOD_MAINBOARD_INI   "\\_SB.MINI"
 
#define METHOD_MAINBOARD_WAK   "\\_SB.MWAK"
 
#define METHOD_MAINBOARD_PTS   "\\_SB.MPTS"
 

Functions

 _Static_assert (sizeof(fch_pic_routing)==sizeof(fch_apic_routing), "PIC and APIC FCH interrupt tables must be the same size")
 
static void init_tables (void)
 
static void pirq_setup (void)
 
static void mainboard_configure_gpios (void)
 
static void mainboard_devtree_update (void)
 
static void mainboard_init (void *chip_info)
 
void mainboard_get_dxio_ddi_descriptors (const fsp_dxio_descriptor **dxio_descs, size_t *dxio_num, const fsp_ddi_descriptor **ddi_descs, size_t *ddi_num)
 
static void mainboard_write_blken (void)
 
static void mainboard_write_blkdis (void)
 
static void mainboard_write_mini (void)
 
static void mainboard_write_mwak (void)
 
static void mainboard_write_mpts (void)
 
static void mainboard_fill_ssdt (const struct device *dev)
 
static void mainboard_enable (struct device *dev)
 
static void mainboard_final (void *chip_info)
 
void __weak variant_devtree_update (void)
 
__weak const struct soc_amd_gpiovariant_override_gpio_table (size_t *size)
 

Variables

static uint8_t fch_pic_routing [0x80]
 
static uint8_t fch_apic_routing [0x80]
 
static const struct fch_irq_routing fch_pirq []
 
struct chip_operations mainboard_ops
 

Macro Definition Documentation

◆ METHOD_BACKLIGHT_DISABLE

#define METHOD_BACKLIGHT_DISABLE   "\\_SB.BKDS"

Definition at line 29 of file mainboard.c.

◆ METHOD_BACKLIGHT_ENABLE

#define METHOD_BACKLIGHT_ENABLE   "\\_SB.BKEN"

Definition at line 28 of file mainboard.c.

◆ METHOD_MAINBOARD_INI

#define METHOD_MAINBOARD_INI   "\\_SB.MINI"

Definition at line 30 of file mainboard.c.

◆ METHOD_MAINBOARD_PTS

#define METHOD_MAINBOARD_PTS   "\\_SB.MPTS"

Definition at line 32 of file mainboard.c.

◆ METHOD_MAINBOARD_WAK

#define METHOD_MAINBOARD_WAK   "\\_SB.MWAK"

Definition at line 31 of file mainboard.c.

Function Documentation

◆ _Static_assert()

_Static_assert ( sizeof(fch_pic_routing = =sizeof(fch_apic_routing),
"PIC and APIC FCH interrupt tables must be the same size"   
)

◆ init_tables()

static void init_tables ( void  )
static

Definition at line 88 of file mainboard.c.

References fch_irq_routing::apic_irq_num, ARRAY_SIZE, fch_apic_routing, fch_pic_routing, fch_pirq, fch_irq_routing::intr_index, memset(), fch_irq_routing::pic_irq_num, and PIRQ_NC.

Referenced by mainboard_enable().

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

◆ mainboard_configure_gpios()

static void mainboard_configure_gpios ( void  )
static

Definition at line 110 of file mainboard.c.

References gpio_configure_pads_with_override(), variant_base_gpio_table(), and variant_override_gpio_table().

Referenced by mainboard_chip_init(), and mainboard_init().

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

◆ mainboard_devtree_update()

static void mainboard_devtree_update ( void  )
static

Definition at line 122 of file mainboard.c.

References variant_audio_update(), variant_bluetooth_update(), variant_devtree_update(), and variant_touchscreen_update().

Here is the call graph for this function:

◆ mainboard_enable()

static void mainboard_enable ( struct device dev)
static

Definition at line 199 of file mainboard.c.

References init_tables(), mainboard_fill_ssdt(), device::ops, and pirq_setup().

Here is the call graph for this function:

◆ mainboard_fill_ssdt()

static void mainboard_fill_ssdt ( const struct device dev)
static

Definition at line 187 of file mainboard.c.

References mainboard_write_blkdis(), mainboard_write_blken(), mainboard_write_mini(), mainboard_write_mpts(), and mainboard_write_mwak().

Referenced by mainboard_enable().

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

◆ mainboard_final()

static void mainboard_final ( void chip_info)
static

Definition at line 209 of file mainboard.c.

References acpi_get_sleep_type(), and finalize_gpios().

Here is the call graph for this function:

◆ mainboard_get_dxio_ddi_descriptors()

void mainboard_get_dxio_ddi_descriptors ( const fsp_dxio_descriptor **  dxio_descs,
size_t dxio_num,
const fsp_ddi_descriptor **  ddi_descs,
size_t ddi_num 
)

Definition at line 144 of file mainboard.c.

References variant_get_dxio_ddi_descriptors().

Here is the call graph for this function:

◆ mainboard_init()

static void mainboard_init ( void chip_info)
static

Definition at line 130 of file mainboard.c.

References BIOS_INFO, board_id(), mainboard_configure_gpios(), mainboard_devtree_update(), mainboard_ec_init(), and printk.

Here is the call graph for this function:

◆ mainboard_write_blkdis()

static void mainboard_write_blkdis ( void  )
static

Definition at line 159 of file mainboard.c.

References acpigen_pop_len(), acpigen_soc_set_tx_gpio(), acpigen_write_method(), GPIO_85, and METHOD_BACKLIGHT_DISABLE.

Referenced by mainboard_fill_ssdt().

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

◆ mainboard_write_blken()

static void mainboard_write_blken ( void  )
static

Definition at line 152 of file mainboard.c.

References acpigen_pop_len(), acpigen_soc_clear_tx_gpio(), acpigen_write_method(), GPIO_85, and METHOD_BACKLIGHT_ENABLE.

Referenced by mainboard_fill_ssdt().

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

◆ mainboard_write_mini()

static void mainboard_write_mini ( void  )
static

Definition at line 166 of file mainboard.c.

References acpigen_emit_namestring(), acpigen_pop_len(), acpigen_write_method(), METHOD_BACKLIGHT_ENABLE, and METHOD_MAINBOARD_INI.

Referenced by mainboard_fill_ssdt().

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

◆ mainboard_write_mpts()

static void mainboard_write_mpts ( void  )
static

Definition at line 180 of file mainboard.c.

References acpigen_emit_namestring(), acpigen_pop_len(), acpigen_write_method(), METHOD_BACKLIGHT_DISABLE, and METHOD_MAINBOARD_PTS.

Referenced by mainboard_fill_ssdt().

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

◆ mainboard_write_mwak()

static void mainboard_write_mwak ( void  )
static

Definition at line 173 of file mainboard.c.

References acpigen_emit_namestring(), acpigen_pop_len(), acpigen_write_method(), METHOD_BACKLIGHT_ENABLE, and METHOD_MAINBOARD_WAK.

Referenced by mainboard_fill_ssdt().

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

◆ pirq_setup()

static void pirq_setup ( void  )
static

Definition at line 104 of file mainboard.c.

References fch_apic_routing, fch_pic_routing, intr_data_ptr, and picr_data_ptr.

Referenced by mainboard_enable().

Here is the caller graph for this function:

◆ variant_devtree_update()

void __weak variant_devtree_update ( void  )

Definition at line 220 of file mainboard.c.

◆ variant_override_gpio_table()

__weak const struct soc_amd_gpio* variant_override_gpio_table ( size_t size)

Definition at line 224 of file mainboard.c.

References NULL.

Referenced by mainboard_chip_init(), mainboard_configure_gpios(), and mainboard_init().

Here is the caller graph for this function:

Variable Documentation

◆ fch_apic_routing

uint8_t fch_apic_routing[0x80]
static

Definition at line 43 of file mainboard.c.

Referenced by init_tables(), and pirq_setup().

◆ fch_pic_routing

uint8_t fch_pic_routing[0x80]
static

Definition at line 42 of file mainboard.c.

Referenced by init_tables(), and pirq_setup().

◆ fch_pirq

const struct fch_irq_routing fch_pirq[]
static
Initial value:
= {
{ PIRQ_A, 6, PIRQ_NC },
{ PIRQ_B, 13, PIRQ_NC },
{ PIRQ_C, 14, PIRQ_NC },
{ PIRQ_D, 15, PIRQ_NC },
{ PIRQ_E, 15, PIRQ_NC },
{ PIRQ_F, 14, PIRQ_NC },
{ PIRQ_G, 13, PIRQ_NC },
{ PIRQ_H, 6, PIRQ_NC },
{ PIRQ_SCI, 9, 9 },
{ PIRQ_EMMC, 5, 5 },
{ PIRQ_GPIO, 7, 7 },
{ PIRQ_I2C2, 10, 10 },
{ PIRQ_I2C3, 11, 11 },
{ PIRQ_UART0, 4, 4 },
{ PIRQ_UART1, 3, 3 },
{ PIRQ_MISC, 0xfa, 0x00 },
{ PIRQ_MISC0, 0x91, 0x00 },
{ PIRQ_MISC1, 0x00, 0x00 },
{ PIRQ_MISC2, 0x00, 0x00 },
}
@ PIRQ_A
Definition: acpi_pirq_gen.h:22
@ PIRQ_C
Definition: acpi_pirq_gen.h:24
@ PIRQ_G
Definition: acpi_pirq_gen.h:28
@ PIRQ_H
Definition: acpi_pirq_gen.h:29
@ PIRQ_E
Definition: acpi_pirq_gen.h:26
@ PIRQ_D
Definition: acpi_pirq_gen.h:25
@ PIRQ_F
Definition: acpi_pirq_gen.h:27
@ PIRQ_B
Definition: acpi_pirq_gen.h:23
#define PIRQ_EMMC
#define PIRQ_MISC0
#define PIRQ_SCI
#define PIRQ_MISC
#define PIRQ_NC
#define PIRQ_UART0
#define PIRQ_I2C3
#define PIRQ_I2C2
#define PIRQ_UART1
#define PIRQ_GPIO
#define PIRQ_MISC2
#define PIRQ_MISC1

Referenced by init_tables().

◆ mainboard_ops

struct chip_operations mainboard_ops
Initial value:
= {
.init = mainboard_init,
.enable_dev = mainboard_enable,
.final = mainboard_final,
}
static void mainboard_init(void *chip_info)
Definition: mainboard.c:130
static void mainboard_final(void *chip_info)
Definition: mainboard.c:209
static void mainboard_enable(struct device *dev)
Definition: mainboard.c:199

Definition at line 209 of file mainboard.c.