11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This file is subject to the terms and conditions of the GNU General Public 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * License. See the file "COPYING" in the main directory of this archive 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * for more details. 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 6fcdb27ad1d5c66611d3df6400a9b559186f266feRalf Baechle * Copyright (C) 2001, 06 by Ralf Baechle (ralf@linux-mips.org) 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 2001 MIPS Technologies, Inc. 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/kernel.h> 1073bc256d47a23272ce1dd50b4de64a0ff23d01f1Paul Gortmaker#include <linux/export.h> 11fcdb27ad1d5c66611d3df6400a9b559186f266feRalf Baechle#include <linux/pm.h> 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/types.h> 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/reboot.h> 14fcdb27ad1d5c66611d3df6400a9b559186f266feRalf Baechle 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/reboot.h> 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Urgs ... Too many MIPS machines to handle this in a generic way. 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * So handle all using function pointers to machine specific 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * functions. 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid (*_machine_restart)(char *command); 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid (*_machine_halt)(void); 24fcdb27ad1d5c66611d3df6400a9b559186f266feRalf Baechlevoid (*pm_power_off)(void); 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 26f8bf35a9145b0831d7d110402662d9cff2d90bd9Ralf BaechleEXPORT_SYMBOL(pm_power_off); 27f8bf35a9145b0831d7d110402662d9cff2d90bd9Ralf Baechle 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid machine_restart(char *command) 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 309414d3628abb646834965b6c23b8e9064729b110Ralf Baechle if (_machine_restart) 319414d3628abb646834965b6c23b8e9064729b110Ralf Baechle _machine_restart(command); 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid machine_halt(void) 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 369414d3628abb646834965b6c23b8e9064729b110Ralf Baechle if (_machine_halt) 379414d3628abb646834965b6c23b8e9064729b110Ralf Baechle _machine_halt(); 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid machine_power_off(void) 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 42fcdb27ad1d5c66611d3df6400a9b559186f266feRalf Baechle if (pm_power_off) 43fcdb27ad1d5c66611d3df6400a9b559186f266feRalf Baechle pm_power_off(); 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 45