coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mainboard.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <baseboard/gpio.h>
4 #include <baseboard/variants.h>
5 #include <device/device.h>
7 #include <ec/ec.h>
8 #include <soc/gpio.h>
9 #include <smbios.h>
10 #include <stdint.h>
11 #include <string.h>
12 #include "board_id.h"
13 #include <fw_config.h>
14 
15 const char *smbios_system_sku(void)
16 {
17  static char sku_str[7] = "";
19 
20  snprintf(sku_str, sizeof(sku_str), "sku%u", sku_id);
21  return sku_str;
22 }
23 
24 static void mainboard_init(void *chip_info)
25 {
27 
28  if (CONFIG(EC_GOOGLE_CHROMEEC))
30 
32 }
33 
35 {
36  /* Override dev tree settings per board */
37 }
38 
39 #if CONFIG(BOARD_INTEL_ADLRVP_M_EXT_EC) || CONFIG(BOARD_INTEL_ADLRVP_N_EXT_EC)
40 static void add_fw_config_oem_string(const struct fw_config *config, void *arg)
41 {
42  struct smbios_type11 *t;
43  char buffer[64];
44 
45  t = (struct smbios_type11 *)arg;
46 
47  snprintf(buffer, sizeof(buffer), "%s-%s", config->field_name, config->option_name);
49 }
50 
51 static void mainboard_smbios_strings(struct device *dev, struct smbios_type11 *t)
52 {
53  fw_config_for_each_found(add_fw_config_oem_string, t);
54 }
55 #endif
56 
57 static void mainboard_enable(struct device *dev)
58 {
59 #if CONFIG(BOARD_INTEL_ADLRVP_M_EXT_EC) || CONFIG(BOARD_INTEL_ADLRVP_N_EXT_EC)
60  dev->ops->get_smbios_strings = mainboard_smbios_strings;
61 #endif
62 }
63 
66  .enable_dev = mainboard_enable,
67 };
68 
69 const char *mainboard_vbt_filename(void)
70 {
71  if (!CONFIG(CHROMEOS))
72  return "vbt.bin";
73 
75  switch (sku_id) {
76  case ADL_P_LP5_1:
77  case ADL_P_LP5_2:
78  return "vbt_adlrvp_lp5.bin";
79  case ADL_M_LP5:
80  return "vbt_adlrvp_m_lp5.bin";
81  case ADL_P_DDR5_1:
82  case ADL_P_DDR5_2:
83  return "vbt_adlrvp_ddr5.bin";
84  case ADL_M_LP4:
85  return "vbt_adlrvp_m_lp4.bin";
86  default:
87  return "vbt.bin";
88  }
89 }
struct chip_operations mainboard_ops
Definition: mainboard.c:19
int smbios_add_string(u8 *start, const char *str)
Definition: smbios.c:40
@ CONFIG
Definition: dsi_common.h:201
void mainboard_ec_init(void)
Definition: ec.c:8
static void mainboard_smbios_strings(struct device *dev, struct smbios_type11 *t)
Definition: mainboard.c:29
static void add_fw_config_oem_string(const struct fw_config *config, void *arg)
Definition: mainboard.c:18
void __weak variant_devtree_update(void)
Definition: mainboard.c:86
const char * smbios_system_sku(void)
Definition: mainboard.c:174
uint32_t sku_id(void)
Definition: mainboard.c:11
const char * mainboard_vbt_filename(void)
Definition: mainboard.c:177
@ ADL_M_LP4
Definition: variants.h:24
@ ADL_P_DDR5_2
Definition: variants.h:16
@ ADL_P_LP5_1
Definition: variants.h:18
@ ADL_M_LP5
Definition: variants.h:25
@ ADL_P_DDR5_1
Definition: variants.h:15
@ ADL_P_LP5_2
Definition: variants.h:19
static void mainboard_init(void *chip_info)
Definition: mainboard.c:24
static void mainboard_enable(struct device *dev)
Definition: mainboard.c:57
struct bootblock_arg arg
Definition: decompressor.c:22
enum board_config config
Definition: memory.c:448
static uint8_t get_board_id(void)
Definition: boardid.c:14
void variant_configure_gpio_pads(void)
Definition: gpio.c:274
u8 buffer[C2P_BUFFER_MAXSIZE]
Definition: psp_smm.c:18
const struct smm_save_state_ops *legacy_ops __weak
Definition: save_state.c:8
unsigned char uint8_t
Definition: stdint.h:8
void(* init)(void *chip_info)
Definition: device.h:25
Definition: device.h:107
struct device_operations * ops
Definition: device.h:143
struct fw_config - Firmware configuration field and option.
Definition: fw_config.h:20
u8 eos[2]
Definition: smbios.h:815
int snprintf(char *buf, size_t size, const char *fmt,...)
Note: This file is only for POSIX compatibility, and is meant to be chain-included via string....
Definition: vsprintf.c:35