coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
chromeos.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <bootmode.h>
4 #include <boot/coreboot_tables.h>
5 #include <types.h>
6 #include <vendorcode/google/chromeos/chromeos.h>
7 #include <soc/chromeos.h>
9 
10 #include "onboard.h"
11 
12 /* EC_IN_RW is GPIO 25 in samus and 14 otherwise */
13 #if CONFIG(BOARD_GOOGLE_SAMUS)
14 #define EC_IN_RW_GPIO 25
15 #else
16 #define EC_IN_RW_GPIO 14
17 #endif
18 
19 void fill_lb_gpios(struct lb_gpios *gpios)
20 {
21  struct lb_gpio chromeos_gpios[] = {
22  {-1, ACTIVE_HIGH, get_lid_switch(), "lid"},
23  {-1, ACTIVE_HIGH, 0, "power"},
24  {-1, ACTIVE_HIGH, gfx_get_init_done(), "oprom"},
25  };
26  lb_add_gpios(gpios, chromeos_gpios, ARRAY_SIZE(chromeos_gpios));
27 }
28 
30 {
31  return get_gpio(CROS_WP_GPIO);
32 }
33 
34 static const struct cros_gpio cros_gpios[] = {
35  CROS_GPIO_REC_AL(CROS_GPIO_VIRTUAL, CROS_GPIO_DEVICE_NAME),
36  CROS_GPIO_WP_AH(CROS_WP_GPIO, CROS_GPIO_DEVICE_NAME),
37 };
39 
41 {
42  /* EC is trusted if not in RW. */
43  return !get_gpio(EC_IN_RW_GPIO);
44 }
void fill_lb_gpios(struct lb_gpios *gpios)
Definition: chromeos.c:9
int get_write_protect_state(void)
Only used if CONFIG(CHROMEOS) is set.
Definition: chromeos.c:15
int gfx_get_init_done(void)
Definition: bootmode.c:10
#define ARRAY_SIZE(a)
Definition: helpers.h:12
DECLARE_CROS_GPIOS(cros_gpios)
int get_ec_is_trusted(void)
Definition: chromeos.c:25
#define EC_IN_RW_GPIO
Definition: chromeos.c:16
static const struct cros_gpio cros_gpios[]
Definition: chromeos.c:34
#define CROS_WP_GPIO
Definition: onboard.h:7
int get_lid_switch(void)
Definition: chromeos.c:37
#define ACTIVE_HIGH
Definition: chromeos.c:18
int get_gpio(int community_base, int pad0_offset)
Definition: gpio_support.c:148
void lb_add_gpios(struct lb_gpios *gpios, const struct lb_gpio *gpio_table, size_t count)
#define CROS_GPIO_DEVICE_NAME
Definition: gpio.h:14