summaryrefslogtreecommitdiff
path: root/src/mainboard/google
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainboard/google')
-rw-r--r--src/mainboard/google/poppy/smihandler.c11
-rw-r--r--src/mainboard/google/poppy/variants/baseboard/include/baseboard/gpio.h4
2 files changed, 15 insertions, 0 deletions
diff --git a/src/mainboard/google/poppy/smihandler.c b/src/mainboard/google/poppy/smihandler.c
index 88aa90581b..30b009dd6f 100644
--- a/src/mainboard/google/poppy/smihandler.c
+++ b/src/mainboard/google/poppy/smihandler.c
@@ -15,8 +15,11 @@
#include <cpu/x86/smm.h>
#include <ec/google/chromeec/smm.h>
+#include <gpio.h>
+#include <soc/gpio.h>
#include <soc/smm.h>
+#include <variant/gpio.h>
#include <variant/ec.h>
void mainboard_smi_espi_handler(void)
@@ -24,10 +27,18 @@ void mainboard_smi_espi_handler(void)
chromeec_smi_process_events();
}
+static void mainboard_gpio_smi_sleep(void)
+{
+ /* Hold camera device in reset and then power it down. */
+ gpio_set(EN_CAM_PMIC_RST_L, 0);
+ gpio_set(EN_PP3300_DX_CAM, 0);
+}
+
void mainboard_smi_sleep(u8 slp_typ)
{
chromeec_smi_sleep(slp_typ, MAINBOARD_EC_S3_WAKE_EVENTS,
MAINBOARD_EC_S5_WAKE_EVENTS);
+ mainboard_gpio_smi_sleep();
}
int mainboard_smi_apmc(u8 apmc)
diff --git a/src/mainboard/google/poppy/variants/baseboard/include/baseboard/gpio.h b/src/mainboard/google/poppy/variants/baseboard/include/baseboard/gpio.h
index 628483bf52..4c9ade3e66 100644
--- a/src/mainboard/google/poppy/variants/baseboard/include/baseboard/gpio.h
+++ b/src/mainboard/google/poppy/variants/baseboard/include/baseboard/gpio.h
@@ -37,4 +37,8 @@
/* eSPI virtual wire reporting */
#define EC_SCI_GPI GPE0_ESPI
+/* Power rail control signals */
+#define EN_PP3300_DX_CAM GPP_C11
+#define EN_CAM_PMIC_RST_L GPP_C10
+
#endif /* BASEBOARD_GPIO_H */