mb/google/brox/var/lotso: Fix goodix touchscreen power off sequence

Poweroff does not seem to use the ACPI _OFF function, but rather the
smihandler.  Creating variant_smi_sleep function for nami to handle
the power off sequence during reboot/poweroff.

BUG=b:364193909
TEST=emerge-brox coreboot

Change-Id: I0108be4e5e7c0265aae0f16fd4e2b7cbe5936112
Signed-off-by: Kun Liu <liukun11@huaqin.corp-partner.google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/84412
Reviewed-by: Jian Tong <tongjian@huaqin.corp-partner.google.com>
Reviewed-by: Karthik Ramasubramanian <kramasub@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Kun Liu 2024-09-18 14:25:11 +08:00 committed by Subrata Banik
commit 9a9191cf2f
4 changed files with 30 additions and 0 deletions

View file

@ -4,11 +4,15 @@
#include <ec/google/chromeec/ec.h>
#include <ec/google/chromeec/smm.h>
#include <elog.h>
#include <baseboard/variants.h>
#include <intelblocks/smihandler.h>
#include <variant/ec.h>
void __weak variant_smi_sleep(u8 slp_typ) {}
void mainboard_smi_sleep(u8 slp_typ)
{
variant_smi_sleep(slp_typ);
chromeec_smi_sleep(slp_typ, MAINBOARD_EC_S3_WAKE_EVENTS, MAINBOARD_EC_S5_WAKE_EVENTS);
}

View file

@ -25,6 +25,7 @@ bool variant_is_half_populated(void);
void variant_update_soc_chip_config(struct soc_intel_alderlake_config *config);
void variant_fill_ssdt(const struct device *dev);
void variant_configure_pads(void);
void variant_smi_sleep(u8 slp_typ);
enum s0ix_entry {
S0IX_EXIT,

View file

@ -6,3 +6,4 @@ romstage-y += gpio.c
ramstage-y += gpio.c
ramstage-$(CONFIG_FW_CONFIG) += variant.c
ramstage-y += ramstage.c
smm-y += smihandler.c

View file

@ -0,0 +1,24 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <acpi/acpi.h>
#include <baseboard/variants.h>
#include <delay.h>
#include "gpio.h"
#define TOUCH_RESET GPP_F17
#define TOUCH_ENABLE GPP_F7
#define GOODIX_RESET_OFF_DELAY 5
void variant_smi_sleep(u8 slp_typ)
{
if (slp_typ == ACPI_S5) {
/* TOUCHSCREEN_RST# */
gpio_set(TOUCH_RESET, 0);
mdelay(GOODIX_RESET_OFF_DELAY);
/* EN_PP3300_DX_TOUCHSCREEN */
gpio_set(TOUCH_ENABLE, 0);
}
}