mb/google/rex: Enable EC
Perform EC initialization in bootblock and ramstages. Add associated ACPI configuration. BUG=b:224325352 TEST=util/abuild/abuild -p none -t google/rex -a -c max Signed-off-by: Eric Lai <eric_lai@quanta.corp-partner.google.com> Signed-off-by: Subrata Banik <subratabanik@google.com> Change-Id: I2ea934f32b34bc43650e20dd2736f4e652004dc2 Reviewed-on: https://review.coreboot.org/c/coreboot/+/64622 Reviewed-by: Tarun Tuli <taruntuli@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
7a294be356
commit
7c304f8d34
|
@ -7,6 +7,8 @@ config BOARD_GOOGLE_REX_COMMON
|
||||||
config BOARD_GOOGLE_BASEBOARD_REX
|
config BOARD_GOOGLE_BASEBOARD_REX
|
||||||
def_bool n
|
def_bool n
|
||||||
select BOARD_GOOGLE_REX_COMMON
|
select BOARD_GOOGLE_REX_COMMON
|
||||||
|
select EC_GOOGLE_CHROMEEC
|
||||||
|
select EC_GOOGLE_CHROMEEC_ESPI
|
||||||
select SOC_INTEL_METEORLAKE
|
select SOC_INTEL_METEORLAKE
|
||||||
select SYSTEM_TYPE_LAPTOP
|
select SYSTEM_TYPE_LAPTOP
|
||||||
|
|
||||||
|
@ -19,6 +21,10 @@ config BASEBOARD_DIR
|
||||||
string
|
string
|
||||||
default "rex" if BOARD_GOOGLE_BASEBOARD_REX
|
default "rex" if BOARD_GOOGLE_BASEBOARD_REX
|
||||||
|
|
||||||
|
config CHROMEOS
|
||||||
|
select GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC
|
||||||
|
select VBOOT_LID_SWITCH
|
||||||
|
|
||||||
config DEVICETREE
|
config DEVICETREE
|
||||||
default "variants/baseboard/\$(CONFIG_BASEBOARD_DIR)/devicetree.cb"
|
default "variants/baseboard/\$(CONFIG_BASEBOARD_DIR)/devicetree.cb"
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ bootblock-y += bootblock.c
|
||||||
romstage-y += romstage.c
|
romstage-y += romstage.c
|
||||||
|
|
||||||
ramstage-y += mainboard.c
|
ramstage-y += mainboard.c
|
||||||
|
ramstage-y += ec.c
|
||||||
|
|
||||||
VARIANT_DIR:=$(call strip_quotes,$(CONFIG_VARIANT_DIR))
|
VARIANT_DIR:=$(call strip_quotes,$(CONFIG_VARIANT_DIR))
|
||||||
BASEBOARD_DIR:=$(call strip_quotes,$(CONFIG_BASEBOARD_DIR))
|
BASEBOARD_DIR:=$(call strip_quotes,$(CONFIG_BASEBOARD_DIR))
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||||
|
|
||||||
#include <acpi/acpi.h>
|
#include <acpi/acpi.h>
|
||||||
|
#include <variant/ec.h>
|
||||||
|
|
||||||
DefinitionBlock(
|
DefinitionBlock(
|
||||||
"dsdt.aml",
|
"dsdt.aml",
|
||||||
|
@ -31,4 +32,13 @@ DefinitionBlock(
|
||||||
|
|
||||||
/* Chipset specific sleep states */
|
/* Chipset specific sleep states */
|
||||||
#include <southbridge/intel/common/acpi/sleepstates.asl>
|
#include <southbridge/intel/common/acpi/sleepstates.asl>
|
||||||
|
|
||||||
|
/* Chrome OS Embedded Controller */
|
||||||
|
Scope (\_SB.PCI0.LPCB)
|
||||||
|
{
|
||||||
|
/* ACPI code for EC SuperIO functions */
|
||||||
|
#include <ec/google/chromeec/acpi/superio.asl>
|
||||||
|
/* ACPI code for EC functions */
|
||||||
|
#include <ec/google/chromeec/acpi/ec.asl>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||||
|
|
||||||
|
#include <acpi/acpi.h>
|
||||||
|
#include <console/console.h>
|
||||||
|
#include <ec/ec.h>
|
||||||
|
#include <ec/google/chromeec/ec.h>
|
||||||
|
#include <variant/ec.h>
|
||||||
|
|
||||||
|
void mainboard_ec_init(void)
|
||||||
|
{
|
||||||
|
static const struct google_chromeec_event_info info = {
|
||||||
|
.log_events = MAINBOARD_EC_LOG_EVENTS,
|
||||||
|
.sci_events = MAINBOARD_EC_SCI_EVENTS,
|
||||||
|
.s3_wake_events = MAINBOARD_EC_S3_WAKE_EVENTS,
|
||||||
|
.s5_wake_events = MAINBOARD_EC_S5_WAKE_EVENTS,
|
||||||
|
.s0ix_wake_events = MAINBOARD_EC_S0IX_WAKE_EVENTS,
|
||||||
|
};
|
||||||
|
|
||||||
|
printk(BIOS_DEBUG, "mainboard: EC init\n");
|
||||||
|
|
||||||
|
google_chromeec_events_init(&info, acpi_is_wakeup_s3());
|
||||||
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include <baseboard/variants.h>
|
#include <baseboard/variants.h>
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
|
#include <ec/ec.h>
|
||||||
|
|
||||||
static void mainboard_init(void *chip_info)
|
static void mainboard_init(void *chip_info)
|
||||||
{
|
{
|
||||||
|
@ -10,10 +11,14 @@ static void mainboard_init(void *chip_info)
|
||||||
pads = variant_gpio_table(&num);
|
pads = variant_gpio_table(&num);
|
||||||
gpio_configure_pads(pads, num);
|
gpio_configure_pads(pads, num);
|
||||||
}
|
}
|
||||||
|
static void mainboard_dev_init(struct device *dev)
|
||||||
|
{
|
||||||
|
mainboard_ec_init();
|
||||||
|
}
|
||||||
|
|
||||||
static void mainboard_enable(struct device *dev)
|
static void mainboard_enable(struct device *dev)
|
||||||
{
|
{
|
||||||
/* TODO: Enable mainboard */
|
dev->ops->init = mainboard_dev_init;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct chip_operations mainboard_ops = {
|
struct chip_operations mainboard_ops = {
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||||
|
|
||||||
|
#ifndef __BASEBOARD_EC_H__
|
||||||
|
#define __BASEBOARD_EC_H__
|
||||||
|
|
||||||
|
#include <ec/ec.h>
|
||||||
|
#include <ec/google/chromeec/ec_commands.h>
|
||||||
|
#include <baseboard/gpio.h>
|
||||||
|
|
||||||
|
#define MAINBOARD_EC_SCI_EVENTS \
|
||||||
|
(EC_HOST_EVENT_MASK(EC_HOST_EVENT_LID_CLOSED) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_LID_OPEN) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_AC_CONNECTED) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_AC_DISCONNECTED) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_LOW) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_CRITICAL) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_MKBP) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_PD_MCU) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_MODE_CHANGE) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_MUX))
|
||||||
|
#define MAINBOARD_EC_SMI_EVENTS \
|
||||||
|
(EC_HOST_EVENT_MASK(EC_HOST_EVENT_LID_CLOSED))
|
||||||
|
/* EC can wake from S5 with lid or power button */
|
||||||
|
#define MAINBOARD_EC_S5_WAKE_EVENTS \
|
||||||
|
(EC_HOST_EVENT_MASK(EC_HOST_EVENT_LID_OPEN) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_POWER_BUTTON))
|
||||||
|
/*
|
||||||
|
* EC can wake from S3/S0ix with:
|
||||||
|
* 1. Lid open
|
||||||
|
* 2. AC Connect/Disconnect
|
||||||
|
* 3. Power button
|
||||||
|
* 4. Key press
|
||||||
|
* 5. Mode change
|
||||||
|
*/
|
||||||
|
#define MAINBOARD_EC_S3_WAKE_EVENTS \
|
||||||
|
(MAINBOARD_EC_S5_WAKE_EVENTS |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_AC_CONNECTED) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_AC_DISCONNECTED) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_KEY_PRESSED) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_MODE_CHANGE))
|
||||||
|
#define MAINBOARD_EC_S0IX_WAKE_EVENTS \
|
||||||
|
(MAINBOARD_EC_S3_WAKE_EVENTS |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_MUX) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_HANG_DETECT))
|
||||||
|
/* Log EC wake events plus EC shutdown events */
|
||||||
|
#define MAINBOARD_EC_LOG_EVENTS \
|
||||||
|
(EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_SHUTDOWN) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_SHUTDOWN) |\
|
||||||
|
EC_HOST_EVENT_MASK(EC_HOST_EVENT_PANIC))
|
||||||
|
/*
|
||||||
|
* ACPI related definitions for ASL code.
|
||||||
|
*/
|
||||||
|
/* Enable EC backed ALS device in ACPI */
|
||||||
|
#define EC_ENABLE_ALS_DEVICE
|
||||||
|
/* Enable Keyboard Backlight */
|
||||||
|
#define EC_ENABLE_KEYBOARD_BACKLIGHT
|
||||||
|
/* Enable MKBP for buttons and switches */
|
||||||
|
#define EC_ENABLE_MKBP_DEVICE
|
||||||
|
/* Enable LID switch and provide wake pin for EC */
|
||||||
|
#define EC_ENABLE_LID_SWITCH
|
||||||
|
#define EC_ENABLE_WAKE_PIN GPE_EC_WAKE
|
||||||
|
/* Enable EC backed PD MCU device in ACPI */
|
||||||
|
#define EC_ENABLE_PD_MCU_DEVICE
|
||||||
|
#define SIO_EC_MEMMAP_ENABLE /* EC Memory Map Resources */
|
||||||
|
#define SIO_EC_HOST_ENABLE /* EC Host Interface Resources */
|
||||||
|
#define SIO_EC_ENABLE_PS2K /* Enable PS/2 Keyboard */
|
||||||
|
|
||||||
|
#define EC_ENABLE_SYNC_IRQ /* Enable tight timestamp / wake support */
|
||||||
|
|
||||||
|
#endif /* __BASEBOARD_EC_H__ */
|
|
@ -6,4 +6,11 @@
|
||||||
#include <soc/gpe.h>
|
#include <soc/gpe.h>
|
||||||
#include <soc/gpio.h>
|
#include <soc/gpio.h>
|
||||||
|
|
||||||
|
/* GPIO IRQ for tight timestamps / wake support */
|
||||||
|
#define EC_SYNC_IRQ 0
|
||||||
|
/* eSPI virtual wire reporting */
|
||||||
|
#define EC_SCI_GPI GPE0_ESPI
|
||||||
|
/* EC wake is LAN_WAKE# which is a special DeepSX wake pin */
|
||||||
|
#define GPE_EC_WAKE GPE0_LAN_WAK
|
||||||
|
|
||||||
#endif /* __BASEBOARD_GPIO_H__ */
|
#endif /* __BASEBOARD_GPIO_H__ */
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||||
|
|
||||||
|
#ifndef MAINBOARD_EC_H
|
||||||
|
#define MAINBOARD_EC_H
|
||||||
|
|
||||||
|
#include <baseboard/ec.h>
|
||||||
|
|
||||||
|
#endif /* MAINBOARD_GPIO_H */
|
|
@ -5,4 +5,6 @@
|
||||||
|
|
||||||
#include <baseboard/gpio.h>
|
#include <baseboard/gpio.h>
|
||||||
|
|
||||||
|
/* TODO: Add GPIO as per rex board */
|
||||||
|
|
||||||
#endif /* __MAINBOARD_GPIO_H__ */
|
#endif /* __MAINBOARD_GPIO_H__ */
|
||||||
|
|
Loading…
Reference in New Issue