summaryrefslogtreecommitdiff
path: root/board/vilboz
diff options
context:
space:
mode:
authorSamsp_Liu <Samsp_Liu@compal.corp-partner.google.com>2020-12-04 11:21:31 +0800
committerCommit Bot <commit-bot@chromium.org>2020-12-15 04:45:16 +0000
commit7d4139ac58fd9bcb13d6170e66709defe892cd30 (patch)
tree50a9f47070d2ce8a928b94d05a99fe8a06cffbec /board/vilboz
parentb1c2f9ba00ff0e08be28fc943a6251b0ffc25519 (diff)
downloadchrome-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.c41
-rw-r--r--board/vilboz/gpio.inc5
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(&lte_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(&lte_function_suspend_data, -1);
+ hook_call_deferred(&lte_power_suspend_data, -1);
+ lte_power_resume();
+ hook_call_deferred(&lte_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(&lte_power_resume_data, -1);
+ hook_call_deferred(&lte_function_resume_data, -1);
+ hook_call_deferred(&lte_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