root/arch/mips/jazz/reset.c

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

DEFINITIONS

This source file includes following definitions.
  1. jazz_write_output
  2. jazz_write_command
  3. jazz_read_status
  4. kb_wait
  5. jazz_machine_restart

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * Reset a Jazz machine.
   4  *
   5  * We don't trust the firmware so we do it the classic way by poking and
   6  * stabbing at the keyboard controller ...
   7  */
   8 #include <linux/jiffies.h>
   9 #include <asm/jazz.h>
  10 
  11 #define KBD_STAT_IBF            0x02    /* Keyboard input buffer full */
  12 
  13 static void jazz_write_output(unsigned char val)
  14 {
  15         int status;
  16 
  17         do {
  18                 status = jazz_kh->command;
  19         } while (status & KBD_STAT_IBF);
  20         jazz_kh->data = val;
  21 }
  22 
  23 static void jazz_write_command(unsigned char val)
  24 {
  25         int status;
  26 
  27         do {
  28                 status = jazz_kh->command;
  29         } while (status & KBD_STAT_IBF);
  30         jazz_kh->command = val;
  31 }
  32 
  33 static unsigned char jazz_read_status(void)
  34 {
  35         return jazz_kh->command;
  36 }
  37 
  38 static inline void kb_wait(void)
  39 {
  40         unsigned long start = jiffies;
  41         unsigned long timeout = start + HZ/2;
  42 
  43         do {
  44                 if (! (jazz_read_status() & 0x02))
  45                         return;
  46         } while (time_before_eq(jiffies, timeout));
  47 }
  48 
  49 void jazz_machine_restart(char *command)
  50 {
  51         while(1) {
  52                 kb_wait();
  53                 jazz_write_command(0xd1);
  54                 kb_wait();
  55                 jazz_write_output(0x00);
  56         }
  57 }

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