^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) // Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) #include <linux/reboot.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) void (*pm_power_off)(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) EXPORT_SYMBOL(pm_power_off);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) void machine_power_off(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) local_irq_disable();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) if (pm_power_off)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) pm_power_off();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) asm volatile ("bkpt");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) void machine_halt(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) local_irq_disable();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) if (pm_power_off)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) pm_power_off();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) asm volatile ("bkpt");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) void machine_restart(char *cmd)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) local_irq_disable();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) do_kernel_restart(cmd);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) asm volatile ("bkpt");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) }