coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
variant.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <baseboard/variants.h>
4 #include <boardid.h>
5 #include <device/device.h>
6 #include <drivers/i2c/hid/chip.h>
7 #include <fw_config.h>
8 #include <gpio.h>
9 #include <soc/gpio.h>
10 
11 static void devtree_update_emmc_rtd3(uint32_t board_ver)
12 {
13  struct device *emmc_rtd3 = DEV_PTR(emmc_rtd3);
14  if (board_ver > 1)
15  return;
16 
17  emmc_rtd3->enabled = 0;
18 }
19 
20 static void devtree_update_audio_codec(void)
21 {
22  struct device *audio_codec = DEV_PTR(audio_codec);
23  struct drivers_i2c_generic_config *config = audio_codec->chip_info;
24 
25  if (fw_config_probe(FW_CONFIG(AUDIO, MAX98360_ALC5682I_VS_I2S)))
26  config->hid = "RTL5682";
27 }
28 
29 static const struct pad_config nvme_disable_pads[] = {
30  PAD_NC(GPP_B2, NONE), /* B2 : VRALERT# ==> M2_SSD_PLA_L */
31  PAD_NC(GPP_B4, NONE), /* B4 : PROC_GP3 ==> SSD_PERST_L */
32  PAD_NC(GPP_D3, NONE), /* D3 : ISH_GP3 ==> M2_SSD_PLN_L */
33  PAD_NC(GPP_D5, NONE), /* D5 : SRCCLKREQ0# ==> SSD_CLKREQ_ODL */
34  PAD_NC(GPP_D11, NONE), /* D11 : ISH_SPI_MISO ==> EN_PP3300_SSD */
35 };
36 
37 static const struct pad_config emmc_disable_pads[] = {
38  PAD_NC(GPP_B3, NONE), /* B3 : PROC_GP2 ==> eMMC_PERST_L */
39  PAD_NC(GPP_E20, NONE), /* E20 : USB_C1_LSX_SOC_TX ==> EN_PP3300_eMMC */
40  PAD_NC(GPP_F19, NONE), /* F19 : SRCCLKREQ6# ==> EMMC_CLKREQ_ODL */
41 };
42 
43 static void disable_unused_gpios(void)
44 {
45  int emmc_detected = gpio_get(GPP_T2);
46 
47  if (emmc_detected == 1)
49  else
51 }
52 
54 {
55  uint32_t board_ver = board_id();
57  devtree_update_emmc_rtd3(board_ver);
59 }
#define GPP_B2
Definition: gpio_soc_defs.h:55
#define GPP_D11
#define GPP_D5
#define GPP_E20
#define GPP_T2
Definition: gpio_soc_defs.h:93
#define GPP_B3
Definition: gpio_soc_defs.h:56
#define GPP_B4
Definition: gpio_soc_defs.h:57
#define GPP_F19
#define GPP_D3
#define ARRAY_SIZE(a)
Definition: helpers.h:12
uint32_t board_id(void)
board_id() - Get the board version
Definition: ec_boardid.c:6
#define FW_CONFIG(__field, __option)
Definition: fw_config.h:28
static const struct pad_config emmc_disable_pads[]
Definition: variant.c:37
static void devtree_update_audio_codec(void)
Definition: variant.c:20
static const struct pad_config nvme_disable_pads[]
Definition: variant.c:29
static void devtree_update_emmc_rtd3(uint32_t board_ver)
Definition: variant.c:11
static void disable_unused_gpios(void)
Definition: variant.c:43
void variant_devtree_update(void)
Definition: variant.c:53
#define DEV_PTR(_alias)
Definition: device.h:403
int gpio_get(gpio_t gpio)
Definition: gpio.c:166
bool fw_config_probe(const struct fw_config *match)
Definition: fw_config.c:62
enum board_config config
Definition: memory.c:448
@ AUDIO
Definition: dramc_pi_api.h:49
void gpio_configure_pads(const struct soc_amd_gpio *gpio_list_ptr, size_t size)
program a particular set of GPIO
Definition: gpio.c:307
#define PAD_NC(pin)
Definition: gpio_defs.h:263
unsigned int uint32_t
Definition: stdint.h:14
Definition: device.h:107
DEVTREE_CONST void * chip_info
Definition: device.h:164
unsigned int enabled
Definition: device.h:122