mediatek: mt8183: support system reset
authorkenny liang <kenny.liang@mediatek.com>
Fri, 3 May 2019 09:02:46 +0000 (17:02 +0800)
committerkenny liang <kenny.liang@mediatek.com>
Tue, 10 Sep 2019 03:25:36 +0000 (11:25 +0800)
Implement system reset handler.

Change-Id: I535ee414616dde8d2b59dec5a723a540a3a1341d
Signed-off-by: kenny liang <kenny.liang@mediatek.com>
plat/mediatek/mt8183/plat_pm.c

index e2aa2b9eceb43ed8bc801a8e5efdfe3950320107..83c8d4cdca3fca1ee2014c062ccb6f7c6c29ab03 100644 (file)
 #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,
 };