coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
gpio.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 <gpio.h>
6 #include <soc/gpio.h>
8 
9 enum {
10  SKU_1_LTE = 1, /* Wifi + LTE */
11  SKU_2_WIFI = 2, /* Wifi */
12  SKU_3_LTE_2CAM = 3, /* Wifi + LTE + dual camera */
13  SKU_4_WIFI_2CAM = 4, /* Wifi + dual camera */
14 };
15 
16 static const struct pad_config default_override_table[] = {
17  PAD_NC(GPIO_104, UP_20K),
18 
19  /* EN_PP3300_TOUCHSCREEN */
20  PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_146, 0, DEEP, NONE, Tx0RxDCRx0,
21  DISPUPD),
22 
23  PAD_NC(GPIO_213, DN_20K),
24 };
25 
26 static const struct pad_config lte_override_table[] = {
27  /* Default override table. */
28  PAD_NC(GPIO_104, UP_20K),
29 
30  /* EN_PP3300_TOUCHSCREEN */
31  PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_146, 0, DEEP, NONE, Tx0RxDCRx0,
32  DISPUPD),
33 
34  PAD_NC(GPIO_213, DN_20K),
35 
36  /* Be specific to LTE SKU */
37  /* UART2-CTS_B -- EN_PP3300_DX_LTE_SOC */
38  PAD_CFG_GPO(GPIO_67, 1, PWROK),
39 
40  /* PCIE_WAKE1_B -- FULL_CARD_POWER_OFF */
41  PAD_CFG_GPO(GPIO_117, 1, PWROK),
42 
43  /* AVS_I2S1_MCLK -- PLT_RST_LTE_L */
44  PAD_CFG_GPO(GPIO_161, 1, DEEP),
45 };
46 
47 const struct pad_config *variant_override_gpio_table(size_t *num)
48 {
51 
52  switch (sku_id) {
53  case SKU_1_LTE:
54  case SKU_3_LTE_2CAM:
56  return lte_override_table;
57  default:
60  }
61 }
62 
63 static const struct pad_config lte_early_override_table[] = {
64  /* UART2-CTS_B -- EN_PP3300_DX_LTE_SOC */
65  PAD_CFG_GPO(GPIO_67, 1, PWROK),
66 
67  /* PCIE_WAKE1_B -- FULL_CARD_POWER_OFF */
68  PAD_CFG_GPO(GPIO_117, 1, PWROK),
69 
70  /* AVS_I2S1_MCLK -- PLT_RST_LTE_L */
71  PAD_CFG_GPO(GPIO_161, 0, DEEP),
72 };
73 
75 {
77 
79 }
uint32_t sku_id(void)
#define ARRAY_SIZE(a)
Definition: helpers.h:12
uint32_t google_chromeec_get_board_sku(void)
Definition: ec_skuid.c:6
#define GPIO_161
Definition: gpio_apl.h:282
#define GPIO_213
Definition: gpio_apl.h:171
const struct pad_config *__weak variant_override_gpio_table(size_t *num)
Definition: gpio.c:450
const struct soc_amd_gpio *__weak variant_early_override_gpio_table(size_t *size)
Definition: gpio.c:317
static const struct pad_config lte_override_table[]
Definition: gpio.c:26
@ SKU_4_WIFI_2CAM
Definition: gpio.c:13
@ SKU_1_LTE
Definition: gpio.c:10
@ SKU_2_WIFI
Definition: gpio.c:11
@ SKU_3_LTE_2CAM
Definition: gpio.c:12
static const struct pad_config default_override_table[]
Definition: gpio.c:16
static const struct pad_config lte_early_override_table[]
Definition: gpio.c:63
#define GPIO_104
Definition: gpio.h:69
#define GPIO_67
Definition: gpio.h:53
#define GPIO_146
Definition: gpio.h:93
#define PAD_NC(pin)
Definition: gpio_defs.h:263
#define GPIO_117
Definition: gpio.h:84
#define PAD_CFG_GPO_IOSSTATE_IOSTERM(pad, val, rst, pull, iosstate, ioterm)
Definition: gpio_defs.h:277
#define PAD_CFG_GPO(pad, val, rst)
Definition: gpio_defs.h:247
unsigned int uint32_t
Definition: stdint.h:14