162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci#include <linux/io.h> 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <asm/sn/ioc3.h> 662306a36Sopenharmony_ci 762306a36Sopenharmony_cistatic inline struct ioc3_uartregs *console_uart(void) 862306a36Sopenharmony_ci{ 962306a36Sopenharmony_ci struct ioc3 *ioc3; 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci ioc3 = (struct ioc3 *)((void *)(0x900000001f600000)); 1262306a36Sopenharmony_ci return &ioc3->sregs.uarta; 1362306a36Sopenharmony_ci} 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_civoid prom_putchar(char c) 1662306a36Sopenharmony_ci{ 1762306a36Sopenharmony_ci struct ioc3_uartregs *uart = console_uart(); 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci while ((readb(&uart->iu_lsr) & 0x20) == 0) 2062306a36Sopenharmony_ci cpu_relax(); 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci writeb(c, &uart->iu_thr); 2362306a36Sopenharmony_ci} 24