| /* |
| * Copyright (C) 2003, 2004 Stefan Reinauer |
| * |
| * See the file "COPYING" for further information about |
| * the copyright and warranty status of this work. |
| */ |
| |
| #include "config.h" |
| #include "kernel/kernel.h" |
| #include "drivers/drivers.h" |
| #include "openbios.h" |
| #include "libopenbios/console.h" |
| #include "libopenbios/ofmem.h" |
| #include "libopenbios/video.h" |
| |
| #ifdef CONFIG_DEBUG_CONSOLE |
| |
| /* ****************************************************************** |
| * common functions, implementing simple concurrent console |
| * ****************************************************************** */ |
| |
| static int arch_putchar(int c) |
| { |
| #ifdef CONFIG_DEBUG_CONSOLE_SERIAL |
| escc_uart_putchar(c); |
| #endif |
| return c; |
| } |
| |
| static int arch_availchar(void) |
| { |
| #ifdef CONFIG_DEBUG_CONSOLE_SERIAL |
| if (escc_uart_charav(CONFIG_SERIAL_PORT)) |
| return 1; |
| #endif |
| #ifdef CONFIG_DEBUG_CONSOLE_VIDEO |
| if (keyboard_dataready()) |
| return 1; |
| #endif |
| return 0; |
| } |
| |
| static int arch_getchar(void) |
| { |
| #ifdef CONFIG_DEBUG_CONSOLE_SERIAL |
| if (escc_uart_charav(CONFIG_SERIAL_PORT)) |
| return (escc_uart_getchar(CONFIG_SERIAL_PORT)); |
| #endif |
| #ifdef CONFIG_DEBUG_CONSOLE_VIDEO |
| if (keyboard_dataready()) |
| return (keyboard_readdata()); |
| #endif |
| return 0; |
| } |
| |
| struct _console_ops arch_console_ops = { |
| .putchar = arch_putchar, |
| .availchar = arch_availchar, |
| .getchar = arch_getchar |
| }; |
| |
| #endif // CONFIG_DEBUG_CONSOLE |