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>
8
#include <
ec/google/chromeec/ec.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
58
bool
no_touchscreen_sku
(
uint32_t
sku_id
)
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
;
69
uint32_t
sku_id
=
SKU_UNKNOWN
;
70
71
google_chromeec_cbi_get_sku_id
(&
sku_id
);
72
if
(
no_touchscreen_sku
(
sku_id
)) {
73
c
=
sku1_default_override_table
;
74
*num =
ARRAY_SIZE
(
sku1_default_override_table
);
75
}
else
{
76
c
=
default_override_table
;
77
*num =
ARRAY_SIZE
(
default_override_table
);
78
}
79
80
return
c
;
81
}
boardid.h
sku_id
uint32_t sku_id(void)
Definition:
coreboot_table.c:193
ARRAY_SIZE
#define ARRAY_SIZE(a)
Definition:
helpers.h:12
google_chromeec_cbi_get_sku_id
int google_chromeec_cbi_get_sku_id(uint32_t *id)
Definition:
ec.c:839
ec.h
GPIO_214
#define GPIO_214
Definition:
gpio_apl.h:172
GPIO_178
#define GPIO_178
Definition:
gpio_apl.h:300
GPIO_161
#define GPIO_161
Definition:
gpio_apl.h:282
GPIO_213
#define GPIO_213
Definition:
gpio_apl.h:171
GPIO_53
#define GPIO_53
Definition:
gpio_glk.h:67
GPIO_52
#define GPIO_52
Definition:
gpio_glk.h:66
variant_override_gpio_table
const struct pad_config *__weak variant_override_gpio_table(size_t *num)
Definition:
gpio.c:450
no_touchscreen_sku
bool no_touchscreen_sku(uint32_t sku_id)
Definition:
gpio.c:46
sku1_default_override_table
static const struct pad_config sku1_default_override_table[]
Definition:
gpio.c:31
SKU_UNKNOWN
#define SKU_UNKNOWN
Definition:
gpio.c:10
default_override_table
static const struct pad_config default_override_table[]
Definition:
gpio.c:12
NONE
@ NONE
Definition:
qup_se_handlers_common.h:196
GPIO_143
#define GPIO_143
Definition:
gpio.h:90
GPIO_67
#define GPIO_67
Definition:
gpio.h:53
GPIO_115
#define GPIO_115
Definition:
gpio.h:77
GPIO_146
#define GPIO_146
Definition:
gpio.h:93
GPIO_114
#define GPIO_114
Definition:
gpio.h:76
PAD_NC
#define PAD_NC(pin)
Definition:
gpio_defs.h:263
GPIO_137
#define GPIO_137
Definition:
gpio.h:92
GPIO_117
#define GPIO_117
Definition:
gpio.h:84
PAD_CFG_GPI_APIC_IOS
#define PAD_CFG_GPI_APIC_IOS(pad, pull, rst, trig, inv, iosstate, iosterm)
Definition:
gpio_defs.h:391
PAD_CFG_GPO_IOSSTATE_IOSTERM
#define PAD_CFG_GPO_IOSSTATE_IOSTERM(pad, val, rst, pull, iosstate, ioterm)
Definition:
gpio_defs.h:277
uint32_t
unsigned int uint32_t
Definition:
stdint.h:14
pad_config
Definition:
gpio.h:75
c
#define c(value, pmcreg, dst_bits)
src
mainboard
google
octopus
variants
phaser
gpio.c
Generated by
1.9.1