diff options
-rw-r--r-- | plat/mediatek/mt8183/plat_pm.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/plat/mediatek/mt8183/plat_pm.c b/plat/mediatek/mt8183/plat_pm.c index e2aa2b9e..83c8d4cd 100644 --- a/plat/mediatek/mt8183/plat_pm.c +++ b/plat/mediatek/mt8183/plat_pm.c @@ -17,11 +17,13 @@ #include <scu.h> #include <mt_gic_v3.h> #include <mtk_plat_common.h> +#include <mtgpio.h> #include <mtspmc.h> -#include <power_tracer.h> #include <plat_dcm.h> #include <plat_debug.h> +#include <plat_params.h> #include <plat_private.h> +#include <power_tracer.h> #include <pmic.h> #include <rtc.h> @@ -132,6 +134,19 @@ static void __dead2 plat_mtk_system_off(void) panic(); } +static void __dead2 plat_mtk_system_reset(void) +{ + struct bl_aux_gpio_info *gpio_reset = plat_get_mtk_gpio_reset(); + + INFO("MTK System Reset\n"); + + mt_set_gpio_out(gpio_reset->index, gpio_reset->polarity); + + wfi(); + ERROR("MTK System Reset: operation not handled.\n"); + panic(); +} + /******************************************************************************* * MTK_platform handler called when an affinity instance is about to be turned * on. The level and mpidr determine the affinity instance. @@ -144,7 +159,7 @@ static const plat_psci_ops_t plat_plat_pm_ops = { .pwr_domain_suspend = NULL, .pwr_domain_suspend_finish = NULL, .system_off = plat_mtk_system_off, - .system_reset = NULL, + .system_reset = plat_mtk_system_reset, .validate_power_state = NULL, .get_sys_suspend_power_state = NULL, }; |