blob: 2de1b6ccd89905eab46c018a27aff91d1218e763 [file] [log] [blame]
Rex-BC Chendb8442b2022-07-01 17:37:37 +08001/* SPDX-License-Identifier: GPL-2.0-only */
2
3#include <bootmode.h>
4#include <boot/coreboot_tables.h>
Rex-BC Chend9e568a2022-07-25 19:36:56 +08005#include <gpio.h>
6#include <security/tpm/tis.h>
7
8#include "gpio.h"
Bo-Chen Chenf57155b2022-12-07 19:09:57 +08009#include "panel.h"
Rex-BC Chendb8442b2022-07-01 17:37:37 +080010
Rex-BC Chenf9009dd2022-07-28 16:38:53 +080011void setup_chromeos_gpios(void)
12{
13 /* Set up open-drain pins */
14 gpio_input(GPIO_EC_AP_INT_ODL);
15 gpio_input(GPIO_GSC_AP_INT_ODL);
16 gpio_input(GPIO_AP_WP_ODL);
17
18 /* Set up GPOs */
19 gpio_output(GPIO_AP_EC_WARM_RST_REQ, 0);
20 gpio_output(GPIO_EN_SPKR, 0);
21 gpio_output(GPIO_XHCI_INIT_DONE, 0);
22}
23
Rex-BC Chendb8442b2022-07-01 17:37:37 +080024void fill_lb_gpios(struct lb_gpios *gpios)
25{
Rex-BC Chenf9009dd2022-07-28 16:38:53 +080026 struct lb_gpio chromeos_gpios[] = {
27 {GPIO_EC_AP_INT_ODL.id, ACTIVE_LOW, -1, "EC interrupt"},
28 {GPIO_GSC_AP_INT_ODL.id, ACTIVE_HIGH, -1, "TPM interrupt"},
29 {GPIO_EN_SPKR.id, ACTIVE_HIGH, -1, "speaker enable"},
30 };
31 lb_add_gpios(gpios, chromeos_gpios, ARRAY_SIZE(chromeos_gpios));
Bo-Chen Chenf57155b2022-12-07 19:09:57 +080032
33 fill_lp_backlight_gpios(gpios);
Liju-Clr Chenaa9bb442022-12-20 15:52:50 +080034
35 if (CONFIG(SDCARD_INIT)) {
36 struct lb_gpio sd_card_gpios[] = {
37 {GPIO_SD_CD_ODL.id, ACTIVE_LOW, -1, "SD card detect"},
38 };
39 lb_add_gpios(gpios, sd_card_gpios, ARRAY_SIZE(sd_card_gpios));
40 }
Rex-BC Chendb8442b2022-07-01 17:37:37 +080041}
Rex-BC Chend9e568a2022-07-25 19:36:56 +080042
43int tis_plat_irq_status(void)
44{
45 return gpio_eint_poll(GPIO_GSC_AP_INT_ODL);
46}