early_printk.c (685B)
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 21void 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}