Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/mips/loongson/common/early_printk.c
10818 views
1
/* early printk support
2
*
3
* Copyright (c) 2009 Philippe Vachon <[email protected]>
4
* Copyright (c) 2009 Lemote Inc.
5
* Author: Wu Zhangjin, [email protected]
6
*
7
* This program is free software; you can redistribute it and/or modify it
8
* under the terms of the GNU General Public License as published by the
9
* Free Software Foundation; either version 2 of the License, or (at your
10
* option) any later version.
11
*/
12
#include <linux/serial_reg.h>
13
14
#include <loongson.h>
15
16
#define PORT(base, offset) (u8 *)(base + offset)
17
18
static inline unsigned int serial_in(unsigned char *base, int offset)
19
{
20
return readb(PORT(base, offset));
21
}
22
23
static inline void serial_out(unsigned char *base, int offset, int value)
24
{
25
writeb(value, PORT(base, offset));
26
}
27
28
void prom_putchar(char c)
29
{
30
int timeout;
31
unsigned char *uart_base;
32
33
uart_base = (unsigned char *)_loongson_uart_base;
34
timeout = 1024;
35
36
while (((serial_in(uart_base, UART_LSR) & UART_LSR_THRE) == 0) &&
37
(timeout-- > 0))
38
;
39
40
serial_out(uart_base, UART_TX, c);
41
}
42
43