1 /* 2 * This file is subject to the terms and conditions of the GNU General Public 3 * License. See the file "COPYING" in the main directory of this archive 4 * for more details. 5 * 6 * Miscellaneous ARCS PROM routines. 7 * 8 * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com) 9 * Copyright (C) 1999 Ralf Baechle (ralf@gnu.org) 10 * Copyright (C) 1999 Silicon Graphics, Inc. 11 */ 12 #include <linux/config.h> 13 #include <linux/init.h> 14 #include <linux/kernel.h> 15 16 #include <asm/bcache.h> 17 18 #include <asm/arc/types.h> 19 #include <asm/sgialib.h> 20 #include <asm/bootinfo.h> 21 #include <asm/system.h> 22 23 extern void *sgiwd93_host; 24 extern void reset_wd33c93(void *instance); 25 26 VOID ArcHalt(VOID)27ArcHalt(VOID) 28 { 29 bc_disable(); 30 cli(); 31 #if CONFIG_SCSI_SGIWD93 32 reset_wd33c93(sgiwd93_host); 33 #endif 34 ARC_CALL0(halt); 35 never: goto never; 36 } 37 38 VOID ArcPowerDown(VOID)39ArcPowerDown(VOID) 40 { 41 bc_disable(); 42 cli(); 43 #if CONFIG_SCSI_SGIWD93 44 reset_wd33c93(sgiwd93_host); 45 #endif 46 ARC_CALL0(pdown); 47 never: goto never; 48 } 49 50 /* XXX is this a soft reset basically? XXX */ 51 VOID ArcRestart(VOID)52ArcRestart(VOID) 53 { 54 bc_disable(); 55 cli(); 56 #if CONFIG_SCSI_SGIWD93 57 reset_wd33c93(sgiwd93_host); 58 #endif 59 ARC_CALL0(restart); 60 never: goto never; 61 } 62 63 VOID ArcReboot(VOID)64ArcReboot(VOID) 65 { 66 bc_disable(); 67 cli(); 68 #if CONFIG_SCSI_SGIWD93 69 reset_wd33c93(sgiwd93_host); 70 #endif 71 ARC_CALL0(reboot); 72 never: goto never; 73 } 74 75 VOID ArcEnterInteractiveMode(VOID)76ArcEnterInteractiveMode(VOID) 77 { 78 bc_disable(); 79 cli(); 80 #if CONFIG_SCSI_SGIWD93 81 reset_wd33c93(sgiwd93_host); 82 #endif 83 ARC_CALL0(imode); 84 never: goto never; 85 } 86 87 LONG ArcSaveConfiguration(VOID)88ArcSaveConfiguration(VOID) 89 { 90 return ARC_CALL0(cfg_save); 91 } 92 93 struct linux_sysid * ArcGetSystemId(VOID)94ArcGetSystemId(VOID) 95 { 96 return (struct linux_sysid *) ARC_CALL0(get_sysid); 97 } 98 99 VOID __init ArcFlushAllCaches(VOID)100ArcFlushAllCaches(VOID) 101 { 102 ARC_CALL0(cache_flush); 103 } 104