mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-08 16:41:55 +00:00
kunimitsu: hibernate: enable PseudoG3 support at board level
this is to move the existing code from chipset level to board level since PseudoG3 is a board feature that required specific hardware. BUG=none BRANCH=glados TEST=use hibernate command to enter PseudoG3 Change-Id: I309ef89e0ff7057ce46c634baa9791731a771984 Signed-off-by: Kevin K Wong <kevin.k.wong@intel.com> Reviewed-on: https://chromium-review.googlesource.com/327677 Reviewed-by: Shawn N <shawnn@chromium.org>
This commit is contained in:
@@ -631,3 +631,20 @@ static void board_handle_reboot(void)
|
||||
; /* wait here */
|
||||
}
|
||||
DECLARE_HOOK(HOOK_INIT, board_handle_reboot, HOOK_PRIO_FIRST);
|
||||
|
||||
void board_hibernate(void)
|
||||
{
|
||||
CPRINTS("Enter Pseudo G3");
|
||||
|
||||
/*
|
||||
* Clean up the UART buffer and prevent any unwanted garbage characters
|
||||
* before power off and also ensure above debug message is printed.
|
||||
*/
|
||||
cflush();
|
||||
|
||||
gpio_set_level(GPIO_G3_SLEEP_EN, 1);
|
||||
|
||||
/* Power to EC should shut down now */
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
|
||||
@@ -160,9 +160,6 @@
|
||||
#undef CONFIG_CONSOLE_HISTORY
|
||||
#undef CONFIG_PECI
|
||||
|
||||
/* Enable Pseudo G3 */
|
||||
#define CONFIG_LOW_POWER_PSEUDO_G3
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
#include "gpio_signal.h"
|
||||
|
||||
@@ -545,3 +545,20 @@ static void board_handle_reboot(void)
|
||||
; /* wait here */
|
||||
}
|
||||
DECLARE_HOOK(HOOK_INIT, board_handle_reboot, HOOK_PRIO_FIRST);
|
||||
|
||||
void board_hibernate(void)
|
||||
{
|
||||
CPRINTS("Enter Pseudo G3");
|
||||
|
||||
/*
|
||||
* Clean up the UART buffer and prevent any unwanted garbage characters
|
||||
* before power off and also ensure above debug message is printed.
|
||||
*/
|
||||
cflush();
|
||||
|
||||
gpio_set_level(GPIO_G3_SLEEP_EN, 1);
|
||||
|
||||
/* Power to EC should shut down now */
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
|
||||
@@ -144,9 +144,6 @@
|
||||
#undef CONFIG_CONSOLE_HISTORY
|
||||
#undef CONFIG_PECI
|
||||
|
||||
/* Enable Pseudo G3 */
|
||||
#define CONFIG_LOW_POWER_PSEUDO_G3
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
#include "gpio_signal.h"
|
||||
|
||||
@@ -367,3 +367,21 @@ enum battery_present battery_is_present(void)
|
||||
{
|
||||
return EC_ERROR_UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
void board_hibernate(void)
|
||||
{
|
||||
CPRINTS("Enter Pseudo G3");
|
||||
|
||||
/*
|
||||
* Clean up the UART buffer and prevent any unwanted garbage characters
|
||||
* before power off and also ensure above debug message is printed.
|
||||
*/
|
||||
cflush();
|
||||
|
||||
gpio_set_level(GPIO_EC_HIB_L, 1);
|
||||
gpio_set_level(GPIO_SMC_SHUTDOWN, 1);
|
||||
|
||||
/* Power to EC should shut down now */
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
#define CONFIG_POWER_BUTTON
|
||||
#define CONFIG_POWER_BUTTON_X86
|
||||
#define CONFIG_LID_SWITCH
|
||||
#define CONFIG_LOW_POWER_PSEUDO_G3
|
||||
#define CONFIG_POWER_COMMON
|
||||
#define CONFIG_POWER_SHUTDOWN_PAUSE_IN_S5
|
||||
#define CONFIG_EXTPOWER_GPIO
|
||||
|
||||
@@ -1316,12 +1316,6 @@
|
||||
#undef CONFIG_LOW_POWER_IDLE
|
||||
#undef CONFIG_LOW_POWER_USE_LFIOSC
|
||||
|
||||
/*
|
||||
* Enable Pseudo G3 (power removed from EC)
|
||||
* This requires board specific implementation.
|
||||
*/
|
||||
#undef CONFIG_LOW_POWER_PSEUDO_G3
|
||||
|
||||
/*
|
||||
* Enable deep sleep during S0 (ignores SLEEP_MASK_AP_RUN).
|
||||
*/
|
||||
|
||||
@@ -133,8 +133,4 @@ int power_get_pause_in_s5(void);
|
||||
*/
|
||||
void power_set_pause_in_s5(int pause);
|
||||
|
||||
#ifdef CONFIG_LOW_POWER_PSEUDO_G3
|
||||
void enter_pseudo_g3(void);
|
||||
#endif
|
||||
|
||||
#endif /* __CROS_EC_POWER_H */
|
||||
|
||||
@@ -329,18 +329,3 @@ enum power_state power_handle_state(enum power_state state)
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_LOW_POWER_PSEUDO_G3
|
||||
void enter_pseudo_g3(void)
|
||||
{
|
||||
CPRINTS("Enter Psuedo G3");
|
||||
cflush();
|
||||
|
||||
gpio_set_level(GPIO_EC_HIB_L, 1);
|
||||
gpio_set_level(GPIO_SMC_SHUTDOWN, 1);
|
||||
|
||||
/* Power to EC should shut down now */
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -192,12 +192,8 @@ static enum power_state power_common_state(enum power_state state)
|
||||
* Time's up. Hibernate until wake pin
|
||||
* asserted.
|
||||
*/
|
||||
#ifdef CONFIG_LOW_POWER_PSEUDO_G3
|
||||
enter_pseudo_g3();
|
||||
#else
|
||||
CPRINTS("hibernating");
|
||||
system_hibernate(0, 0);
|
||||
#endif
|
||||
} else {
|
||||
uint64_t wait = target_time - time_now;
|
||||
if (wait > TASK_MAX_WAIT_US)
|
||||
|
||||
@@ -417,25 +417,6 @@ enum power_state power_handle_state(enum power_state state)
|
||||
return new_state;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_LOW_POWER_PSEUDO_G3
|
||||
void enter_pseudo_g3(void)
|
||||
{
|
||||
CPRINTS("Enter Psuedo G3");
|
||||
|
||||
/*
|
||||
* Clean up the UART buffer and prevent any unwanted garbage characters
|
||||
* before power off and also ensure above debug message is printed.
|
||||
*/
|
||||
cflush();
|
||||
|
||||
gpio_set_level(GPIO_G3_SLEEP_EN, 1);
|
||||
|
||||
/* Power to EC should shut down now */
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_POWER_S0IX
|
||||
static struct {
|
||||
int required; /* indicates de-bounce required. */
|
||||
|
||||
Reference in New Issue
Block a user