mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.1 KiB
55 lines
1.1 KiB
// SPDX-License-Identifier: GPL-2.0 |
|
/* reboot.c: reboot/shutdown/halt/poweroff handling |
|
* |
|
* Copyright (C) 2008 David S. Miller <[email protected]> |
|
*/ |
|
#include <linux/kernel.h> |
|
#include <linux/reboot.h> |
|
#include <linux/export.h> |
|
#include <linux/pm.h> |
|
#include <linux/of.h> |
|
|
|
#include <asm/oplib.h> |
|
#include <asm/prom.h> |
|
#include <asm/setup.h> |
|
|
|
/* sysctl - toggle power-off restriction for serial console |
|
* systems in machine_power_off() |
|
*/ |
|
int scons_pwroff = 1; |
|
|
|
/* This isn't actually used, it exists merely to satisfy the |
|
* reference in kernel/sys.c |
|
*/ |
|
void (*pm_power_off)(void) = machine_power_off; |
|
EXPORT_SYMBOL(pm_power_off); |
|
|
|
void machine_power_off(void) |
|
{ |
|
if (!of_node_is_type(of_console_device, "serial") || scons_pwroff) |
|
prom_halt_power_off(); |
|
|
|
prom_halt(); |
|
} |
|
|
|
void machine_halt(void) |
|
{ |
|
prom_halt(); |
|
panic("Halt failed!"); |
|
} |
|
|
|
void machine_restart(char *cmd) |
|
{ |
|
char *p; |
|
|
|
p = strchr(reboot_command, '\n'); |
|
if (p) |
|
*p = 0; |
|
if (cmd) |
|
prom_reboot(cmd); |
|
if (*reboot_command) |
|
prom_reboot(reboot_command); |
|
prom_reboot(""); |
|
panic("Reboot failed!"); |
|
} |
|
|
|
|