Commit | Line | Data |
---|---|---|
d2912cb1 | 1 | // SPDX-License-Identifier: GPL-2.0-only |
171bb2f1 | 2 | /* |
171bb2f1 | 3 | * |
97b92108 | 4 | * Copyright (C) 2010 John Crispin <john@phrozen.org> |
171bb2f1 JC |
5 | */ |
6 | ||
171bb2f1 | 7 | #include <linux/cpu.h> |
171bb2f1 | 8 | #include <lantiq_soc.h> |
5c93316c | 9 | #include <asm/setup.h> |
171bb2f1 | 10 | |
171bb2f1 | 11 | #define ASC_BUF 1024 |
7705f686 TL |
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 | |
171bb2f1 JC |
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') | |
7705f686 TL |
28 | ltq_w8('\r', LTQ_ASC_TBUF); |
29 | ltq_w8(c, LTQ_ASC_TBUF); | |
171bb2f1 JC |
30 | local_irq_restore(flags); |
31 | } |