162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Wrap-around code for a console using the 462306a36Sopenharmony_ci * ARC io-routines. 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Copyright (c) 1998 Harald Koerfgen 762306a36Sopenharmony_ci * Copyright (c) 2001 Ralf Baechle 862306a36Sopenharmony_ci * Copyright (c) 2002 Thiemo Seufer 962306a36Sopenharmony_ci */ 1062306a36Sopenharmony_ci#include <linux/tty.h> 1162306a36Sopenharmony_ci#include <linux/major.h> 1262306a36Sopenharmony_ci#include <linux/init.h> 1362306a36Sopenharmony_ci#include <linux/console.h> 1462306a36Sopenharmony_ci#include <linux/fs.h> 1562306a36Sopenharmony_ci#include <asm/setup.h> 1662306a36Sopenharmony_ci#include <asm/sgialib.h> 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cistatic void prom_console_write(struct console *co, const char *s, 1962306a36Sopenharmony_ci unsigned count) 2062306a36Sopenharmony_ci{ 2162306a36Sopenharmony_ci /* Do each character */ 2262306a36Sopenharmony_ci while (count--) { 2362306a36Sopenharmony_ci if (*s == '\n') 2462306a36Sopenharmony_ci prom_putchar('\r'); 2562306a36Sopenharmony_ci prom_putchar(*s++); 2662306a36Sopenharmony_ci } 2762306a36Sopenharmony_ci} 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_cistatic int prom_console_setup(struct console *co, char *options) 3062306a36Sopenharmony_ci{ 3162306a36Sopenharmony_ci if (prom_flags & PROM_FLAG_USE_AS_CONSOLE) 3262306a36Sopenharmony_ci return 0; 3362306a36Sopenharmony_ci return -ENODEV; 3462306a36Sopenharmony_ci} 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_cistatic struct console arc_cons = { 3762306a36Sopenharmony_ci .name = "arc", 3862306a36Sopenharmony_ci .write = prom_console_write, 3962306a36Sopenharmony_ci .setup = prom_console_setup, 4062306a36Sopenharmony_ci .flags = CON_PRINTBUFFER, 4162306a36Sopenharmony_ci .index = -1, 4262306a36Sopenharmony_ci}; 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci/* 4562306a36Sopenharmony_ci * Register console. 4662306a36Sopenharmony_ci */ 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_cistatic int __init arc_console_init(void) 4962306a36Sopenharmony_ci{ 5062306a36Sopenharmony_ci register_console(&arc_cons); 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci return 0; 5362306a36Sopenharmony_ci} 5462306a36Sopenharmony_ciconsole_initcall(arc_console_init); 55