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 } 32