David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame^] | 1 | // SPDX-License-Identifier: GPL-2.0-only |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 2 | /* |
3 | * Copyright (C) 2012 Regents of the University of California | ||||
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 4 | */ |
5 | |||||
6 | #include <linux/reboot.h> | ||||
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame^] | 7 | #include <linux/pm.h> |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 8 | #include <asm/sbi.h> |
9 | |||||
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame^] | 10 | static void default_power_off(void) |
11 | { | ||||
12 | sbi_shutdown(); | ||||
13 | while (1); | ||||
14 | } | ||||
15 | |||||
16 | void (*pm_power_off)(void) = default_power_off; | ||||
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 17 | EXPORT_SYMBOL(pm_power_off); |
18 | |||||
19 | void machine_restart(char *cmd) | ||||
20 | { | ||||
21 | do_kernel_restart(cmd); | ||||
22 | while (1); | ||||
23 | } | ||||
24 | |||||
25 | void machine_halt(void) | ||||
26 | { | ||||
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame^] | 27 | pm_power_off(); |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 28 | } |
29 | |||||
30 | void machine_power_off(void) | ||||
31 | { | ||||
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame^] | 32 | pm_power_off(); |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 33 | } |