root/arch/m68k/sun3/prom/misc.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. prom_reboot
  2. prom_cmdline
  3. prom_halt
  4. prom_get_idprom
  5. prom_version
  6. prom_getrev
  7. prom_getprev

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * misc.c:  Miscellaneous prom functions that don't belong
   4  *          anywhere else.
   5  *
   6  * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
   7  */
   8 
   9 #include <linux/types.h>
  10 #include <linux/kernel.h>
  11 #include <linux/sched.h>
  12 #include <asm/sun3-head.h>
  13 #include <asm/idprom.h>
  14 #include <asm/openprom.h>
  15 #include <asm/oplib.h>
  16 #include <asm/movs.h>
  17 
  18 /* Reset and reboot the machine with the command 'bcommand'. */
  19 void
  20 prom_reboot(char *bcommand)
  21 {
  22         unsigned long flags;
  23         local_irq_save(flags);
  24         (*(romvec->pv_reboot))(bcommand);
  25         local_irq_restore(flags);
  26 }
  27 
  28 /* Drop into the prom, with the chance to continue with the 'go'
  29  * prom command.
  30  */
  31 void
  32 prom_cmdline(void)
  33 {
  34 }
  35 
  36 /* Drop into the prom, but completely terminate the program.
  37  * No chance of continuing.
  38  */
  39 void
  40 prom_halt(void)
  41 {
  42         unsigned long flags;
  43 again:
  44         local_irq_save(flags);
  45         (*(romvec->pv_halt))();
  46         local_irq_restore(flags);
  47         goto again; /* PROM is out to get me -DaveM */
  48 }
  49 
  50 typedef void (*sfunc_t)(void);
  51 
  52 /* Get the idprom and stuff it into buffer 'idbuf'.  Returns the
  53  * format type.  'num_bytes' is the number of bytes that your idbuf
  54  * has space for.  Returns 0xff on error.
  55  */
  56 unsigned char
  57 prom_get_idprom(char *idbuf, int num_bytes)
  58 {
  59         int i, oldsfc;
  60         GET_SFC(oldsfc);
  61         SET_SFC(FC_CONTROL);
  62         for(i=0;i<num_bytes; i++)
  63         {
  64                 /* There is a problem with the GET_CONTROL_BYTE
  65                 macro; defining the extra variable
  66                 gets around it.
  67                 */
  68                 int c;
  69                 GET_CONTROL_BYTE(SUN3_IDPROM_BASE + i, c);
  70                 idbuf[i] = c;
  71         }
  72         SET_SFC(oldsfc);
  73         return idbuf[0];
  74 }
  75 
  76 /* Get the major prom version number. */
  77 int
  78 prom_version(void)
  79 {
  80         return romvec->pv_romvers;
  81 }
  82 
  83 /* Get the prom plugin-revision. */
  84 int
  85 prom_getrev(void)
  86 {
  87         return prom_rev;
  88 }
  89 
  90 /* Get the prom firmware print revision. */
  91 int
  92 prom_getprev(void)
  93 {
  94         return prom_prev;
  95 }

/* [<][>][^][v][top][bottom][index][help] */