diff options
| author | Meizu OpenSource <patchwork@meizu.com> | 2016-08-15 10:19:42 +0800 |
|---|---|---|
| committer | Meizu OpenSource <patchwork@meizu.com> | 2016-08-15 10:19:42 +0800 |
| commit | d2e1446d81725c351dc73a03b397ce043fb18452 (patch) | |
| tree | 4dbc616b7f92aea39cd697a9084205ddb805e344 /drivers/misc/mediatek/kernel/system.c | |
first commit
Diffstat (limited to 'drivers/misc/mediatek/kernel/system.c')
| -rw-r--r-- | drivers/misc/mediatek/kernel/system.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/drivers/misc/mediatek/kernel/system.c b/drivers/misc/mediatek/kernel/system.c new file mode 100644 index 000000000..45296a2fb --- /dev/null +++ b/drivers/misc/mediatek/kernel/system.c @@ -0,0 +1,48 @@ +#include <linux/kernel.h> +#include <linux/string.h> + +#include <mach/mtk_rtc.h> +#include <mach/wd_api.h> +extern void wdt_arch_reset(char); + + + +void arch_reset(char mode, const char *cmd) +{ + char reboot = 0; + int res = 0; + struct wd_api *wd_api = NULL; +#ifdef CONFIG_FPGA_EARLY_PORTING + return ; +#else + + res = get_wd_api(&wd_api); + pr_notice("arch_reset: cmd = %s\n", cmd ? : "NULL"); + + if (cmd && !strcmp(cmd, "charger")) { + /* do nothing */ + } else if (cmd && !strcmp(cmd, "recovery")) { + #ifndef CONFIG_MTK_FPGA + rtc_mark_recovery(); + #endif + } else if (cmd && !strcmp(cmd, "bootloader")) { + #ifndef CONFIG_MTK_FPGA + rtc_mark_fast(); + #endif + } +#ifdef CONFIG_MTK_KERNEL_POWER_OFF_CHARGING + else if (cmd && !strcmp(cmd, "kpoc")) { + rtc_mark_kpoc(); + } +#endif + else { + reboot = 1; + } + + if (res) { + pr_notice("arch_reset, get wd api error %d\n", res); + } else { + wd_api->wd_sw_reset(reboot); + } + #endif +} |
