diff options
-rw-r--r-- | include/power.h | 10 | ||||
-rw-r--r-- | power/common.c | 14 |
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); } |