coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
variants.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #ifndef __BASEBOARD_VARIANTS_H__
4 #define __BASEBOARD_VARIANTS_H__
5 
6 #include <stddef.h>
7 #include <boardid.h>
9 #include <FspmUpd.h>
10 #include <soc/amd/picasso/chip.h>
11 #include <soc/platform_descriptors.h>
12 
13 const struct soc_amd_gpio *variant_early_gpio_table(size_t *size);
14 /*
15  * This function provides base GPIO configuration table. It is typically provided by
16  * baseboard using a weak implementation. If GPIO configuration for a variant differs
17  * significantly from the baseboard, then the variant can also provide a strong implementation
18  * of this function.
19  */
20 const struct soc_amd_gpio *variant_base_gpio_table(size_t *size);
21 /*
22  * This function allows variant to override any GPIOs that are different than the base GPIO
23  * configuration provided by variant_base_gpio_table().
24  */
25 const struct soc_amd_gpio *variant_override_gpio_table(size_t *size);
26 
27 /* This function provides GPIO init in bootblock. */
28 const struct soc_amd_gpio *variant_bootblock_gpio_table(size_t *size, int slp_typ);
29 
30 /*
31  * This function provides GPIO table for the pads that need to be configured when entering
32  * sleep.
33  */
34 const struct soc_amd_gpio *variant_sleep_gpio_table(size_t *size, int slp_typ);
35 
36 /* This function provides GPIO settings for eSPI bus. */
37 const struct soc_amd_gpio *variant_espi_gpio_table(size_t *size);
38 
39 /* This function provides GPIO settings for TPM i2c bus. */
40 const struct soc_amd_gpio *variant_tpm_gpio_table(size_t *size);
41 
43 
44 /* Program any required GPIOs at the finalize phase */
45 void finalize_gpios(int slp_typ);
46 /* Modify devictree settings during ramstage. */
47 void variant_devtree_update(void);
48 /* Update audio configuration in devicetree during ramstage. */
49 void variant_audio_update(void);
50 /* Update bluetooth configuration in devicetree during ramstage. */
51 void variant_bluetooth_update(void);
52 /* Update touchscreen configuration in devicetree during ramstage. */
54 /* Configure PCIe GPIOs as per variant sequencing requirements. */
56 
57 /* Per variant FSP-S initialization, default implementation in baseboard and
58  * overridable by the variant. */
59 void variant_get_dxio_ddi_descriptors(const fsp_dxio_descriptor **dxio_descs,
60  size_t *dxio_num,
61  const fsp_ddi_descriptor **ddi_descs,
62  size_t *ddi_num);
63 
64 /* Provide the descriptors for the associated baseboard for the variant. These functions
65  * can be used for obtaining the baseboard's descriptors if the variant followed the
66  * baseboard. */
67 const fsp_dxio_descriptor *baseboard_get_dxio_descriptors(size_t *num);
68 const fsp_ddi_descriptor *baseboard_get_ddi_descriptors(size_t *num);
69 
70 /* Retrieve attributes from FW_CONFIG in CBI. */
71 /* Return value of SAR config. */
72 int variant_gets_sar_config(void);
73 /* Return value of Mainboard Type config */
75 /* Return 0 if non-existent, 1 if present. */
76 int variant_has_emmc(void);
77 /* Return 0 if non-existent, 1 if present. */
78 int variant_has_nvme(void);
79 /* Return 0 if non-existent, 1 if present. */
80 int variant_has_wwan(void);
81 /* Add variant is_convertible to identify convertible sku */
82 int variant_is_convertible(void);
83 
84 /* Determine if booting in factory by using CROS_SKU_UNPROVISIONED. */
86 
87 /* Return true if variant uses v3 version of reference schematics. */
89 /* Return true if variant uses v3.6 version of reference schematics. */
91 /* Return true if variant uses CODEC_GPI pin for headphone jack interrupt. */
92 bool variant_uses_codec_gpi(void);
93 /* Return true if variant has active low power enable for WiFi. */
95 /* Return value of daughterboard ID */
97 /* Return true if the board has a fingerprint sensor. */
98 bool variant_has_fingerprint(void);
99 /* Return true if the board needs an extra fpmcu delay. */
100 bool fpmcu_needs_delay(void);
101 
102 #endif /* __BASEBOARD_VARIANTS_H__ */
#define FSP_M_CONFIG
Definition: fsp_upd.h:8
void variant_devtree_update(void)
Definition: mainboard.c:86
const struct pad_config * variant_early_gpio_table(size_t *num)
Definition: gpio.c:204
const struct pad_config * variant_override_gpio_table(size_t *num)
Definition: gpio.c:450
const struct pad_config * variant_sleep_gpio_table(size_t *num)
Definition: gpio.c:466
const struct pad_config * variant_base_gpio_table(size_t *num)
Definition: gpio.c:444
const struct soc_amd_gpio * variant_tpm_gpio_table(size_t *size)
Definition: gpio.c:354
const struct soc_amd_gpio * variant_espi_gpio_table(size_t *size)
Definition: gpio.c:348
const struct soc_amd_gpio * variant_bootblock_gpio_table(size_t *size)
Definition: gpio.c:300
void variant_bluetooth_update(void)
int variant_has_nvme(void)
Definition: helpers.c:108
const fsp_ddi_descriptor * baseboard_get_ddi_descriptors(size_t *num)
bool variant_uses_codec_gpi(void)
Definition: helpers.c:160
void variant_get_dxio_ddi_descriptors(const fsp_dxio_descriptor **dxio_descs, size_t *dxio_num, const fsp_ddi_descriptor **ddi_descs, size_t *ddi_num)
void variant_touchscreen_update(void)
void variant_updm_update(FSP_M_CONFIG *mcfg)
Definition: romstage.c:6
int variant_gets_mb_type_config(void)
Definition: helpers.c:98
bool variant_uses_v3_schematics(void)
Definition: helpers.c:124
void variant_audio_update(void)
void finalize_gpios(int slp_typ)
bool variant_has_active_low_wifi_power(void)
Definition: helpers.c:165
bool fpmcu_needs_delay(void)
Definition: helpers.c:194
int variant_has_wwan(void)
Definition: helpers.c:113
int variant_get_daughterboard_id(void)
Definition: helpers.c:181
bool variant_has_fingerprint(void)
Definition: helpers.c:186
int variant_has_emmc(void)
Definition: helpers.c:103
int variant_is_convertible(void)
Definition: helpers.c:118
int variant_gets_sar_config(void)
Definition: helpers.c:93
const fsp_dxio_descriptor * baseboard_get_dxio_descriptors(size_t *num)
void variant_pcie_gpio_configure(void)
int boot_is_factory_unprovisioned(void)
Definition: sku_id.c:14
bool variant_uses_v3_6_schematics(void)
Definition: helpers.c:140