aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/loongson64/reset.c
diff options
context:
space:
mode:
authorWe-unite <3205135446@qq.com>2025-03-08 22:04:20 +0800
committerWe-unite <3205135446@qq.com>2025-03-08 22:04:20 +0800
commita07bb8fd1299070229f0e8f3dcb57ffd5ef9870a (patch)
tree84f21bd0bf7071bc5fc7dd989e77d7ceb5476682 /arch/mips/loongson64/reset.c
downloadohosKernel-a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a.tar.gz
ohosKernel-a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a.zip
Initial commit: OpenHarmony-v4.0-ReleaseOpenHarmony-v4.0-Release
Diffstat (limited to 'arch/mips/loongson64/reset.c')
-rw-r--r--arch/mips/loongson64/reset.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/arch/mips/loongson64/reset.c b/arch/mips/loongson64/reset.c
new file mode 100644
index 000000000..3bb8a1ed9
--- /dev/null
+++ b/arch/mips/loongson64/reset.c
@@ -0,0 +1,59 @@
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 *
4 * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
5 * Author: Fuxin Zhang, zhangfx@lemote.com
6 * Copyright (C) 2009 Lemote, Inc.
7 * Author: Zhangjin Wu, wuzhangjin@gmail.com
8 */
9#include <linux/init.h>
10#include <linux/pm.h>
11
12#include <asm/idle.h>
13#include <asm/reboot.h>
14
15#include <loongson.h>
16#include <boot_param.h>
17
18static void loongson_restart(char *command)
19{
20
21 void (*fw_restart)(void) = (void *)loongson_sysconf.restart_addr;
22
23 fw_restart();
24 while (1) {
25 if (cpu_wait)
26 cpu_wait();
27 }
28}
29
30static void loongson_poweroff(void)
31{
32 void (*fw_poweroff)(void) = (void *)loongson_sysconf.poweroff_addr;
33
34 fw_poweroff();
35 while (1) {
36 if (cpu_wait)
37 cpu_wait();
38 }
39}
40
41static void loongson_halt(void)
42{
43 pr_notice("\n\n** You can safely turn off the power now **\n\n");
44 while (1) {
45 if (cpu_wait)
46 cpu_wait();
47 }
48}
49
50static int __init mips_reboot_setup(void)
51{
52 _machine_restart = loongson_restart;
53 _machine_halt = loongson_halt;
54 pm_power_off = loongson_poweroff;
55
56 return 0;
57}
58
59arch_initcall(mips_reboot_setup);