Merge tag 'rpmsg-v5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/andersson...
[linux-2.6-microblaze.git] / arch / mips / lantiq / early_printk.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  *
4  *  Copyright (C) 2010 John Crispin <john@phrozen.org>
5  */
6
7 #include <linux/cpu.h>
8 #include <lantiq_soc.h>
9 #include <asm/setup.h>
10
11 #define ASC_BUF         1024
12 #define LTQ_ASC_FSTAT   ((u32 *)(LTQ_EARLY_ASC + 0x0048))
13 #ifdef __BIG_ENDIAN
14 #define LTQ_ASC_TBUF    ((u32 *)(LTQ_EARLY_ASC + 0x0020 + 3))
15 #else
16 #define LTQ_ASC_TBUF    ((u32 *)(LTQ_EARLY_ASC + 0x0020))
17 #endif
18 #define TXMASK          0x3F00
19 #define TXOFFSET        8
20
21 void prom_putchar(char c)
22 {
23         unsigned long flags;
24
25         local_irq_save(flags);
26         do { } while ((ltq_r32(LTQ_ASC_FSTAT) & TXMASK) >> TXOFFSET);
27         if (c == '\n')
28                 ltq_w8('\r', LTQ_ASC_TBUF);
29         ltq_w8(c, LTQ_ASC_TBUF);
30         local_irq_restore(flags);
31 }