summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/power.h10
-rw-r--r--power/common.c14
2 files changed, 19 insertions, 5 deletions
diff --git a/include/power.h b/include/power.h
index b471264f99..410f412502 100644
--- a/include/power.h
+++ b/include/power.h
@@ -264,6 +264,16 @@ void power_reset_host_sleep_state(void);
#endif /* CONFIG_POWER_TRACK_HOST_SLEEP_STATE */
/**
+ * Board specific implementation to enable/disable the PP5000 rail.
+ *
+ * NOTE: The default implementation is to simply set GPIO_EN_PP5000. If a
+ * board's implementation differs, they should implement this function.
+ *
+ * @param enable: 0 to disable PP5000 rail , otherwise enable PP5000 rail.
+ */
+__override_proto void board_power_5v_enable(int enable);
+
+/**
* Enable/Disable the PP5000 rail.
*
* This function will turn on the 5V rail immediately if requested. However,
diff --git a/power/common.c b/power/common.c
index ee2c690b91..7c3ccc1475 100644
--- a/power/common.c
+++ b/power/common.c
@@ -898,6 +898,14 @@ DECLARE_CONSOLE_COMMAND(pause_in_s5, command_pause_in_s5,
#endif /* CONFIG_POWER_SHUTDOWN_PAUSE_IN_S5 */
#ifdef CONFIG_POWER_PP5000_CONTROL
+__overridable void board_power_5v_enable(int enable)
+{
+ if (enable)
+ gpio_set_level(GPIO_EN_PP5000, 1);
+ else
+ gpio_set_level(GPIO_EN_PP5000, 0);
+}
+
/* 5V enable request bitmask from various tasks. */
static uint32_t pwr_5v_en_req;
static struct mutex pwr_5v_ctl_mtx;
@@ -915,11 +923,7 @@ void power_5v_enable(task_id_t tid, int enable)
* If there are any outstanding requests for the rail to be enabled,
* turn on the rail. Otherwise, turn it off.
*/
- if (pwr_5v_en_req)
- gpio_set_level(GPIO_EN_PP5000, 1);
- else
- gpio_set_level(GPIO_EN_PP5000, 0);
-
+ board_power_5v_enable(pwr_5v_en_req);
mutex_unlock(&pwr_5v_ctl_mtx);
}