xref: /OK3568_Linux_fs/kernel/arch/mips/sgi-ip30/ip30-console.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun 
3*4882a593Smuzhiyun #include <linux/io.h>
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #include <asm/sn/ioc3.h>
6*4882a593Smuzhiyun 
console_uart(void)7*4882a593Smuzhiyun static inline struct ioc3_uartregs *console_uart(void)
8*4882a593Smuzhiyun {
9*4882a593Smuzhiyun 	struct ioc3 *ioc3;
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun 	ioc3 = (struct ioc3 *)((void *)(0x900000001f600000));
12*4882a593Smuzhiyun 	return &ioc3->sregs.uarta;
13*4882a593Smuzhiyun }
14*4882a593Smuzhiyun 
prom_putchar(char c)15*4882a593Smuzhiyun void prom_putchar(char c)
16*4882a593Smuzhiyun {
17*4882a593Smuzhiyun 	struct ioc3_uartregs *uart = console_uart();
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun 	while ((readb(&uart->iu_lsr) & 0x20) == 0)
20*4882a593Smuzhiyun 		cpu_relax();
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun 	writeb(c, &uart->iu_thr);
23*4882a593Smuzhiyun }
24