diff options
author | Samsp_Liu <Samsp_Liu@compal.corp-partner.google.com> | 2020-12-04 11:21:31 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-12-15 04:45:16 +0000 |
commit | 7d4139ac58fd9bcb13d6170e66709defe892cd30 (patch) | |
tree | 50a9f47070d2ce8a928b94d05a99fe8a06cffbec /board/vilboz | |
parent | b1c2f9ba00ff0e08be28fc943a6251b0ffc25519 (diff) | |
download | chrome-ec-7d4139ac58fd9bcb13d6170e66709defe892cd30.tar.gz |
vilboz: Enable LTE GPIO control
Power-on and Resume form S3:
Delay 10ms to pull high LTE_FCPO after LTE_EN is high.
Suspend and Power-off:
Delay 20ms to pull down LTE_FCPO after SLP_S3_L is low.
Delay 100ms to pull down LTE_EN after LTE_FCPO is low.
BUG=b:173490220
BRANCH=Zork
TEST=Measure waveform for LTE_FCPO GPIO control
Signed-off-by: Samsp_Liu <Samsp_Liu@compal.corp-partner.google.com>
Change-Id: I2dd66ea1030be805b376e6875a4570f2fea55a26
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2573663
Tested-by: SamSP Liu <samsp_liu@compal.corp-partner.google.com>
Reviewed-by: Elthan Huang <elthan_huang@compal.corp-partner.google.com>
Reviewed-by: Peter Marheine <pmarheine@chromium.org>
Commit-Queue: SamSP Liu <samsp_liu@compal.corp-partner.google.com>
Diffstat (limited to 'board/vilboz')
-rw-r--r-- | board/vilboz/board.c | 41 | ||||
-rw-r--r-- | board/vilboz/gpio.inc | 5 |
2 files changed, 38 insertions, 8 deletions
diff --git a/board/vilboz/board.c b/board/vilboz/board.c index ba2eb1f152..09bed7b7d5 100644 --- a/board/vilboz/board.c +++ b/board/vilboz/board.c @@ -413,22 +413,51 @@ static void setup_fw_config(void) } DECLARE_HOOK(HOOK_INIT, setup_fw_config, HOOK_PRIO_INIT_I2C + 2); -static void wwan_lte_startup(void) +static void lte_function_resume(void) +{ + gpio_set_level(GPIO_LTE_FCPO, 1); +} +DECLARE_DEFERRED(lte_function_resume); + +static void lte_power_resume(void) { - /* Turn on WWAN LTE function as we go into S0 from S5. */ gpio_set_level(GPIO_LTE_EN, 1); gpio_set_level(GPIO_LTE_W_DISABLE_L, 1); } -DECLARE_HOOK(HOOK_CHIPSET_STARTUP, wwan_lte_startup, HOOK_PRIO_DEFAULT + 1); +DECLARE_DEFERRED(lte_power_resume); -static void wwan_lte_shutdown(void) +static void lte_power_suspend(void) { - /* Turn off WWAN LTE function as we go back to S5. */ gpio_set_level(GPIO_LTE_EN, 0); gpio_set_level(GPIO_LTE_W_DISABLE_L, 0); } -DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, wwan_lte_shutdown, HOOK_PRIO_DEFAULT + 1); +DECLARE_DEFERRED(lte_power_suspend); + +static void lte_function_suspend(void) +{ + gpio_set_level(GPIO_LTE_FCPO, 0); + hook_call_deferred(<e_power_suspend_data, 100 * MSEC); +} +DECLARE_DEFERRED(lte_function_suspend); +static void wwan_lte_resume_hook(void) +{ + /* Turn on WWAN LTE function as we go into S0 from S3/S5. */ + hook_call_deferred(<e_function_suspend_data, -1); + hook_call_deferred(<e_power_suspend_data, -1); + lte_power_resume(); + hook_call_deferred(<e_function_resume_data, 10 * MSEC); +} +DECLARE_HOOK(HOOK_CHIPSET_RESUME, wwan_lte_resume_hook, HOOK_PRIO_DEFAULT); + +static void wwan_lte_suspend_hook(void) +{ + /* Turn off WWAN LTE function as we go into S3/S5 from S0. */ + hook_call_deferred(<e_power_resume_data, -1); + hook_call_deferred(<e_function_resume_data, -1); + hook_call_deferred(<e_function_suspend_data, 20 * MSEC); +} +DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, wwan_lte_suspend_hook, HOOK_PRIO_DEFAULT); const struct pwm_t pwm_channels[] = { [PWM_CH_KBLIGHT] = { .channel = 3, diff --git a/board/vilboz/gpio.inc b/board/vilboz/gpio.inc index 79ea48848f..78baa0eccc 100644 --- a/board/vilboz/gpio.inc +++ b/board/vilboz/gpio.inc @@ -54,8 +54,9 @@ GPIO(LED_CHRG_L, PIN(C, 0), GPIO_OUT_HIGH) GPIO(LED3_PWM, PIN(C, 3), GPIO_OUT_HIGH) /* LTE control */ -GPIO(LTE_EN, PIN(6, 2), GPIO_OUT_LOW) /* WWAN LET Fuction enable */ -GPIO(LTE_W_DISABLE_L, PIN(4, 0), GPIO_OUT_LOW) /* WWAN LET flight mode */ +GPIO(LTE_EN, PIN(6, 2), GPIO_OUT_LOW) /* WWAN LTE Function enable */ +GPIO(LTE_W_DISABLE_L, PIN(4, 0), GPIO_OUT_LOW) /* WWAN LTE flight mode */ +GPIO(LTE_FCPO, PIN(7, 3), GPIO_OUT_LOW) /* WWAN LTE Full Card Power ON OFF */ /* * Vilboz has only 1 HDMI DB option |