xref: /kernel/linux/linux-6.6/arch/mips/lantiq/early_printk.c (revision 62306a36)
  • Home
  • History
  • Annotate Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /kernel/linux/linux-6.6/arch/mips/lantiq/
162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci *  Copyright (C) 2010 John Crispin <john@phrozen.org>
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include <linux/cpu.h>
862306a36Sopenharmony_ci#include <lantiq_soc.h>
962306a36Sopenharmony_ci#include <asm/setup.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#define ASC_BUF		1024
1262306a36Sopenharmony_ci#define LTQ_ASC_FSTAT	((u32 *)(LTQ_EARLY_ASC + 0x0048))
1362306a36Sopenharmony_ci#ifdef __BIG_ENDIAN
1462306a36Sopenharmony_ci#define LTQ_ASC_TBUF	((u32 *)(LTQ_EARLY_ASC + 0x0020 + 3))
1562306a36Sopenharmony_ci#else
1662306a36Sopenharmony_ci#define LTQ_ASC_TBUF	((u32 *)(LTQ_EARLY_ASC + 0x0020))
1762306a36Sopenharmony_ci#endif
1862306a36Sopenharmony_ci#define TXMASK		0x3F00
1962306a36Sopenharmony_ci#define TXOFFSET	8
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_civoid prom_putchar(char c)
2262306a36Sopenharmony_ci{
2362306a36Sopenharmony_ci	unsigned long flags;
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci	local_irq_save(flags);
2662306a36Sopenharmony_ci	do { } while ((ltq_r32(LTQ_ASC_FSTAT) & TXMASK) >> TXOFFSET);
2762306a36Sopenharmony_ci	if (c == '\n')
2862306a36Sopenharmony_ci		ltq_w8('\r', LTQ_ASC_TBUF);
2962306a36Sopenharmony_ci	ltq_w8(c, LTQ_ASC_TBUF);
3062306a36Sopenharmony_ci	local_irq_restore(flags);
3162306a36Sopenharmony_ci}
32

Indexes created Thu Nov 07 10:32:03 CST 2024