blob: acd4cd640ad8e4d09764543e4f6d0967479e7bf4 [file] [log] [blame]
Angel Pons62079a52020-04-05 13:21:34 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Patrick Georgi406313d2015-07-20 22:01:32 +02002
Kyösti Mälkkibe7692a2021-11-03 17:54:14 +02003#include <bootmode.h>
Kyösti Mälkki17887d02019-07-23 19:08:01 +03004#include <boot/coreboot_tables.h>
Duncan Lauriec3281912015-08-13 12:54:27 -07005#include <gpio.h>
Patrick Georgi406313d2015-07-20 22:01:32 +02006#include <soc/gpio.h>
Patrick Georgi406313d2015-07-20 22:01:32 +02007#include <vendorcode/google/chromeos/chromeos.h>
Matt DeVillier0b9cfe62018-06-26 13:07:32 -05008#include <variant/gpio.h>
Duncan Lauriec3281912015-08-13 12:54:27 -07009
Patrick Georgi406313d2015-07-20 22:01:32 +020010void fill_lb_gpios(struct lb_gpios *gpios)
11{
Julius Wernerc445b4f2016-03-31 17:27:05 -070012 struct lb_gpio chromeos_gpios[] = {
Julius Wernerc445b4f2016-03-31 17:27:05 -070013 {-1, ACTIVE_HIGH, get_lid_switch(), "lid"},
14 {-1, ACTIVE_HIGH, 0, "power"},
15 {-1, ACTIVE_HIGH, gfx_get_init_done(), "oprom"},
16 {GPIO_EC_IN_RW, ACTIVE_HIGH,
17 gpio_get(GPIO_EC_IN_RW), "EC in RW"},
18 };
19 lb_add_gpios(gpios, chromeos_gpios, ARRAY_SIZE(chromeos_gpios));
Patrick Georgi406313d2015-07-20 22:01:32 +020020}
Patrick Georgi406313d2015-07-20 22:01:32 +020021
Patrick Georgi406313d2015-07-20 22:01:32 +020022int get_write_protect_state(void)
23{
Duncan Lauriec3281912015-08-13 12:54:27 -070024 /* Read PCH_WP GPIO. */
Duncan Laurie56260852015-08-17 09:53:22 -070025 return gpio_get(GPIO_PCH_WP);
Patrick Georgi406313d2015-07-20 22:01:32 +020026}
Aaron Durbinb0f81512016-07-25 21:31:41 -050027
28static const struct cros_gpio cros_gpios[] = {
29 CROS_GPIO_REC_AL(CROS_GPIO_VIRTUAL, CROS_GPIO_DEVICE_NAME),
30 CROS_GPIO_WP_AH(GPIO_PCH_WP, CROS_GPIO_DEVICE_NAME),
31};
32
33void mainboard_chromeos_acpi_generate(void)
34{
35 chromeos_acpi_gpio_generate(cros_gpios, ARRAY_SIZE(cros_gpios));
36}