1/* 2 * console.c: Routines that deal with sending and receiving IO 3 * to/from the current console device using the PROM. 4 * 5 * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) 6 */ 7 8#include <linux/types.h> 9#include <linux/kernel.h> 10#include <linux/sched.h> 11#include <asm/openprom.h> 12#include <asm/oplib.h> 13#include <asm/system.h> 14#include <linux/string.h> 15 16/* Non blocking get character from console input device, returns -1 17 * if no input was taken. This can be used for polling. 18 */ 19int 20prom_nbgetchar(void) 21{ 22 int i = -1; 23 unsigned long flags; 24 25 local_irq_save(flags); 26 i = (*(romvec->pv_nbgetchar))(); 27 local_irq_restore(flags); 28 return i; /* Ugh, we could spin forever on unsupported proms ;( */ 29} 30 31/* Non blocking put character to console device, returns -1 if 32 * unsuccessful. 33 */ 34int 35prom_nbputchar(char c) 36{ 37 unsigned long flags; 38 int i = -1; 39 40 local_irq_save(flags); 41 i = (*(romvec->pv_nbputchar))(c); 42 local_irq_restore(flags); 43 return i; /* Ugh, we could spin forever on unsupported proms ;( */ 44} 45 46/* Blocking version of get character routine above. */ 47char 48prom_getchar(void) 49{ 50 int character; 51 while((character = prom_nbgetchar()) == -1) ; 52 return (char) character; 53} 54 55/* Blocking version of put character routine above. */ 56void 57prom_putchar(char c) 58{ 59 while(prom_nbputchar(c) == -1) ; 60 return; 61} 62 63/* Query for input device type */ 64 65/* Query for output device type */ 66