diff options
author | Eric Lai <ericr_lai@compal.corp-partner.google.com> | 2020-09-16 11:21:08 +0800 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2020-09-21 12:41:57 +0000 |
commit | fa0080d187c8086d28bcad7c33bac66f624aa753 (patch) | |
tree | b59cfd878ef30b903fc98350869c7df6640b5ccf /src/mainboard/google/octopus/smihandler.c | |
parent | 3da27ab681f1a754c553d325b20be32284a1b8d9 (diff) |
mb/google/octopus: Clean up LTE power off function
All octopus board share the same power off sequence.
Move to smihandler.c instead variant.c.
BUG=b:168075958
BRANCH=octopus
TEST=build image and verify on the DUT with LTE DB.
Signed-off-by: Eric Lai <ericr_lai@compal.corp-partner.google.com>
Change-Id: I2be5a656fb42fff99c56d21aaa73ed9140caad37
Reviewed-on: https://review.coreboot.org/c/coreboot/+/45436
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-by: Karthik Ramasubramanian <kramasub@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/mainboard/google/octopus/smihandler.c')
-rw-r--r-- | src/mainboard/google/octopus/smihandler.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/mainboard/google/octopus/smihandler.c b/src/mainboard/google/octopus/smihandler.c index 2c68045685..488ba07cc4 100644 --- a/src/mainboard/google/octopus/smihandler.c +++ b/src/mainboard/google/octopus/smihandler.c @@ -3,15 +3,22 @@ #include <acpi/acpi.h> #include <baseboard/variants.h> #include <cpu/x86/smm.h> +#include <delay.h> #include <ec/google/chromeec/ec.h> #include <ec/google/chromeec/smm.h> #include <elog.h> +#include <gpio.h> #include <intelblocks/smihandler.h> #include <soc/pm.h> #include <soc/gpio.h> #include <variant/ec.h> #include <variant/gpio.h> +struct gpio_with_delay { + gpio_t gpio; + unsigned int delay_msecs; +}; + void mainboard_smi_gpi_handler(const struct gpi_status *sts) { if (gpi_status_get(sts, EC_SMI_GPI)) @@ -54,3 +61,27 @@ void __weak variant_smi_sleep(u8 slp_typ) { /* Leave for the variant to implement if necessary. */ } + +void power_off_lte_module(void) +{ + + const struct gpio_with_delay lte_power_off_gpios[] = { + { + GPIO_161, /* AVS_I2S1_MCLK -- PLT_RST_LTE_L */ + 30, + }, + { + GPIO_117, /* PCIE_WAKE1_B -- FULL_CARD_POWER_OFF */ + 100 + }, + { + GPIO_67, /* UART2-CTS_B -- EN_PP3300_DX_LTE_SOC */ + 0 + } + }; + + for (int i = 0; i < ARRAY_SIZE(lte_power_off_gpios); i++) { + gpio_output(lte_power_off_gpios[i].gpio, 0); + mdelay(lte_power_off_gpios[i].delay_msecs); + } +} |