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:
Kevin K Wong
2016-02-09 15:05:16 -08:00
committed by chrome-bot
parent 2fa3138abe
commit 5efbecb770
11 changed files with 52 additions and 55 deletions

View File

@@ -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)
;
}

View File

@@ -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"

View File

@@ -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)
;
}

View File

@@ -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"

View File

@@ -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)
;
}

View File

@@ -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

View File

@@ -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).
*/

View File

@@ -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 */

View File

@@ -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

View File

@@ -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)

View File

@@ -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. */