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 <boardid.h>
6 #include <gpio.h>
7 #include <soc/gpio.h>
9 
10 #define SKU_UNKNOWN 0xFFFFFFFF
11 
12 static const struct pad_config default_override_table[] = {
13  PAD_NC(GPIO_52, UP_20K),
14  PAD_NC(GPIO_53, UP_20K),
15  PAD_NC(GPIO_67, UP_20K),
16  PAD_NC(GPIO_117, UP_20K),
17  PAD_CFG_GPI_APIC_IOS(GPIO_137, NONE, DEEP, LEVEL, INVERT, HIZCRx1,
18  DISPUPD),
19  PAD_NC(GPIO_143, UP_20K),
20 
21  /* EN_PP3300_TOUCHSCREEN */
22  PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_146, 0, DEEP, NONE, Tx0RxDCRx0,
23  DISPUPD),
24 
25  PAD_NC(GPIO_161, DN_20K),
26 
27  PAD_NC(GPIO_213, DN_20K),
28  PAD_NC(GPIO_214, DN_20K),
29 };
30 
31 static const struct pad_config sku1_default_override_table[] = {
32  /* disable I2C7 SCL and SDA */
33  PAD_NC(GPIO_114, UP_20K), /* LPSS_I2C7_SDA */
34  PAD_NC(GPIO_115, UP_20K), /* LPSS_I2C7_SCL */
35 
36  PAD_NC(GPIO_52, UP_20K),
37  PAD_NC(GPIO_53, UP_20K),
38  PAD_NC(GPIO_67, UP_20K),
39  PAD_NC(GPIO_117, UP_20K),
40  PAD_CFG_GPI_APIC_IOS(GPIO_137, NONE, DEEP, LEVEL, INVERT, HIZCRx1,
41  DISPUPD),
42  PAD_NC(GPIO_143, UP_20K),
43 
44  /* EN_PP3300_TOUCHSCREEN */
45  PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_146, 0, DEEP, NONE, Tx0RxDCRx0,
46  DISPUPD),
47 
48  PAD_NC(GPIO_161, DN_20K),
49 
50  /* EN_PP3300_WLAN_L */
51  PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_178, 0, DEEP, NONE, Tx0RxDCRx0,
52  DISPUPD),
53 
54  PAD_NC(GPIO_213, DN_20K),
55  PAD_NC(GPIO_214, DN_20K),
56 };
57 
59 {
60  if ((sku_id == 1) || (sku_id == 6))
61  return true;
62  else
63  return false;
64 }
65 
66 const struct pad_config *variant_override_gpio_table(size_t *num)
67 {
68  const struct pad_config *c;
70 
75  } else {
78  }
79 
80  return c;
81 }
uint32_t sku_id(void)
#define ARRAY_SIZE(a)
Definition: helpers.h:12
int google_chromeec_cbi_get_sku_id(uint32_t *id)
Definition: ec.c:839
#define GPIO_214
Definition: gpio_apl.h:172
#define GPIO_178
Definition: gpio_apl.h:300
#define GPIO_161
Definition: gpio_apl.h:282
#define GPIO_213
Definition: gpio_apl.h:171
#define GPIO_53
Definition: gpio_glk.h:67
#define GPIO_52
Definition: gpio_glk.h:66
const struct pad_config *__weak variant_override_gpio_table(size_t *num)
Definition: gpio.c:450
bool no_touchscreen_sku(uint32_t sku_id)
Definition: gpio.c:46
static const struct pad_config sku1_default_override_table[]
Definition: gpio.c:31
#define SKU_UNKNOWN
Definition: gpio.c:10
static const struct pad_config default_override_table[]
Definition: gpio.c:12
#define GPIO_143
Definition: gpio.h:90
#define GPIO_67
Definition: gpio.h:53
#define GPIO_115
Definition: gpio.h:77
#define GPIO_146
Definition: gpio.h:93
#define GPIO_114
Definition: gpio.h:76
#define PAD_NC(pin)
Definition: gpio_defs.h:263
#define GPIO_137
Definition: gpio.h:92
#define GPIO_117
Definition: gpio.h:84
#define PAD_CFG_GPI_APIC_IOS(pad, pull, rst, trig, inv, iosstate, iosterm)
Definition: gpio_defs.h:391
#define PAD_CFG_GPO_IOSSTATE_IOSTERM(pad, val, rst, pull, iosstate, ioterm)
Definition: gpio_defs.h:277
unsigned int uint32_t
Definition: stdint.h:14
#define c(value, pmcreg, dst_bits)