18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci#include <linux/io.h> 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#include <asm/sn/ioc3.h> 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_cistatic inline struct ioc3_uartregs *console_uart(void) 88c2ecf20Sopenharmony_ci{ 98c2ecf20Sopenharmony_ci struct ioc3 *ioc3; 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci ioc3 = (struct ioc3 *)((void *)(0x900000001f600000)); 128c2ecf20Sopenharmony_ci return &ioc3->sregs.uarta; 138c2ecf20Sopenharmony_ci} 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_civoid prom_putchar(char c) 168c2ecf20Sopenharmony_ci{ 178c2ecf20Sopenharmony_ci struct ioc3_uartregs *uart = console_uart(); 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci while ((readb(&uart->iu_lsr) & 0x20) == 0) 208c2ecf20Sopenharmony_ci cpu_relax(); 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci writeb(c, &uart->iu_thr); 238c2ecf20Sopenharmony_ci} 24