summaryrefslogtreecommitdiffstats
path: root/arch/mips/arc/misc.c
diff options
context:
space:
mode:
authorThomas Bogendoerfer <tsbogend@alpha.franken.de>1998-10-18 13:32:08 +0000
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>1998-10-18 13:32:08 +0000
commit25a83c8ea51aa41db55dc9995479851c9802a9d9 (patch)
tree771e989f138b1824adedf1d9f146fc26267cbe3c /arch/mips/arc/misc.c
parentc71fb12ee22941aa89fea27670b7d88992b253aa (diff)
moved sgi/prom and made it a little bit more generic for ARC like firmwares
Diffstat (limited to 'arch/mips/arc/misc.c')
-rw-r--r--arch/mips/arc/misc.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/arch/mips/arc/misc.c b/arch/mips/arc/misc.c
new file mode 100644
index 000000000..ab50caf1e
--- /dev/null
+++ b/arch/mips/arc/misc.c
@@ -0,0 +1,84 @@
+/* $Id: misc.c,v 1.5 1998/08/25 09:14:50 ralf Exp $
+ *
+ * misc.c: Miscellaneous ARCS PROM routines.
+ *
+ * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
+ */
+#include <linux/config.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+
+#include <asm/bcache.h>
+#include <asm/sgialib.h>
+#include <asm/bootinfo.h>
+#include <asm/system.h>
+
+extern unsigned long mips_cputype;
+extern void *sgiwd93_host;
+extern void reset_wd33c93(void *instance);
+
+void prom_halt(void)
+{
+ bcops->bc_disable();
+ cli();
+#if CONFIG_SCSI_SGIWD93
+ reset_wd33c93(sgiwd93_host);
+#endif
+ romvec->halt();
+}
+
+void prom_powerdown(void)
+{
+ bcops->bc_disable();
+ cli();
+#if CONFIG_SCSI_SGIWD93
+ reset_wd33c93(sgiwd93_host);
+#endif
+ romvec->pdown();
+}
+
+/* XXX is this a soft reset basically? XXX */
+void prom_restart(void)
+{
+ bcops->bc_disable();
+ cli();
+#if CONFIG_SCSI_SGIWD93
+ reset_wd33c93(sgiwd93_host);
+#endif
+ romvec->restart();
+}
+
+void prom_reboot(void)
+{
+ bcops->bc_disable();
+ cli();
+#if CONFIG_SCSI_SGIWD93
+ reset_wd33c93(sgiwd93_host);
+#endif
+ romvec->reboot();
+}
+
+void prom_imode(void)
+{
+ bcops->bc_disable();
+ cli();
+#if CONFIG_SCSI_SGIWD93
+ reset_wd33c93(sgiwd93_host);
+#endif
+ romvec->imode();
+}
+
+long prom_cfgsave(void)
+{
+ return romvec->cfg_save();
+}
+
+struct linux_sysid *prom_getsysid(void)
+{
+ return romvec->get_sysid();
+}
+
+__initfunc(void prom_cacheflush(void))
+{
+ romvec->cache_flush();
+}