diff options
author | Thomas Bogendoerfer <tsbogend@alpha.franken.de> | 1998-10-18 13:32:08 +0000 |
---|---|---|
committer | Thomas Bogendoerfer <tsbogend@alpha.franken.de> | 1998-10-18 13:32:08 +0000 |
commit | 25a83c8ea51aa41db55dc9995479851c9802a9d9 (patch) | |
tree | 771e989f138b1824adedf1d9f146fc26267cbe3c /arch/mips/arc/misc.c | |
parent | c71fb12ee22941aa89fea27670b7d88992b253aa (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.c | 84 |
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(); +} |