summaryrefslogtreecommitdiff
path: root/zephyr/projects/nissa/src/nivviks/board_config.c
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/projects/nissa/src/nivviks/board_config.c')
-rw-r--r--zephyr/projects/nissa/src/nivviks/board_config.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/zephyr/projects/nissa/src/nivviks/board_config.c b/zephyr/projects/nissa/src/nivviks/board_config.c
index 88ec4de9c5..622bd7a7ac 100644
--- a/zephyr/projects/nissa/src/nivviks/board_config.c
+++ b/zephyr/projects/nissa/src/nivviks/board_config.c
@@ -9,6 +9,7 @@
#include <kernel.h>
#include <sys/printk.h>
+#include "driver/charger/isl923x_public.h"
#include "gpio.h"
#include "gpio/gpio_int.h"
#include "hooks.h"
@@ -17,6 +18,8 @@
#include "sub_board.h"
+LOG_MODULE_DECLARE(nissa, CONFIG_NISSA_LOG_LEVEL);
+
static void nivviks_subboard_init(void)
{
enum nissa_sub_board_type sb = nissa_get_sb_type();
@@ -75,3 +78,23 @@ static void board_init(void)
gpio_enable_dt_interrupt(GPIO_INT_FROM_NODELABEL(int_usb_c1));
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
+
+__override void board_hibernate(void)
+{
+ /* Shut down the chargers */
+ if (board_get_usb_pd_port_count() == 2)
+ raa489000_hibernate(CHARGER_SECONDARY, true);
+ raa489000_hibernate(CHARGER_PRIMARY, true);
+ LOG_INF("Charger(s) hibernated");
+ cflush();
+}
+
+/* Trigger shutdown by enabling the Z-sleep circuit */
+__override void board_hibernate_late(void)
+{
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_en_slp_z), 1);
+ /*
+ * The system should hibernate, but there may be
+ * a small delay, so return.
+ */
+}